This topic applies only to the IBM Business Process Manager Advanced configuration.

Sprawdzanie poprawności dokumentu XML

Do sprawdzania poprawności dokumentów XML i obiektów biznesowych służy usługa sprawdzania poprawności.

Dodatkowo inne usługi wymagają spełnienia pewnych minimalnych standardów, w przeciwnym razie zgłaszają wyjątek w czasie wykonywania. Jedną z nich jest usługa BOXMLSerializer.

Usługa BOXMLSerializer służy do sprawdzania poprawności dokumentów XML, zanim zostaną przetworzone przez żądanie usługi. Usługa BOXMLSerializer sprawdza poprawność struktury dokumentów XML i określa, czy występuje jeden z następujących typów błędów:
  • Niepoprawne dokumenty XML, na przykład takie, w których brakuje pewnych znaczników elementów.
  • Niepoprawnie uformowane dokumenty XML, na przykład takie, w których brakuje znaczników zamykających.
  • Dokumenty zawierające błędy analizowania, takie jak błędy w deklaracjach obiektów.
Po wykryciu błędu przez usługę BOXMLSerializer jest zgłaszany wyjątek ze szczegółowymi informacjami o problemie.
Sprawdzanie poprawności można wykonać dla eksportu i/lub importu dokumentów XML przez następujące usługi:
  • HTTP
  • Usługi WWW JAXRPC
  • Usługi WWW JAX-WS
  • Usługi JMS
  • Usługi MQ
W przypadku usług HTTP, JAXRPC i JAX-WS usługa BOXMLSerializer generuje wyjątki w następujący sposób:
  • Importy -
    1. Komponent SCA wywołuje usługę.
    2. Usługa wywołuje docelowy adres URL.
    3. Docelowy adres URL odpowiada zgłoszeniem wyjątku o niepoprawnym pliku XML.
    4. Usługa nie powiodła się, zwraca wyjątek w czasie wykonywania i komunikat.
  • Eksporty -
    1. Klient usługi wywołuje eksport usługi.
    2. Klient usługi wysyła niepoprawny plik XML.
    3. Eksport dla usługi kończy się niepowodzeniem oraz generuje wyjątek i komunikat.
W przypadku usług przesyłania komunikatów JMS i MQ wyjątki są generowane w następujący sposób:
  • Importy -
    1. Import wywołuje usługę JMS lub MQ.
    2. Usługa zwraca odpowiedź.
    3. Usługa zwraca wyjątek o niepoprawnym pliku XML.
    4. Import kończy się niepowodzeniem i generuje komunikat.
  • Eksporty -
    1. Klient MQ lub JMS wywołuje eksport.
    2. Klient wysyła niepoprawny plik XML.
    3. Eksport kończy się niepowodzeniem oraz generuje wyjątek i komunikat.

Można przejrzeć dzienniki i wyszukać w nich wszystkie komunikaty wygenerowane przez wyjątek sprawdzania poprawności XML. Poniżej pokazano przykłady komunikatów generowanych po wykryciu niepoprawnego kodu XML podczas sprawdzania poprawności przez funkcję BOXMLSerializer

  • Import JAXWS
    javax.xml.ws.WebServiceException: org.apache.axiom.om.OMException: 
     javax.xml.stream.XMLStreamException: Element typu „TestResponse” musi 
     poprzedzać specyfikacje atrybutów, „>” lub „/>”.
    
    javax.xml.ws.WebServiceException: org.apache.axiom.soap.SOAPProcessingException: 
    	Pierwszy element musi zawierać nazwę lokalną, Koperta
  • Import JAXRPC
    [9/11/08 15:16:27:417 CDT] 0000003e ExceptionUtil E   
    	CNTR0020E: Komponent EJB zgłosił nieoczekiwany (niezadeklarowany) 
    	 wyjątek podczas wywołania metody 
      „transactionNotSupportedActivitySessionNotSupported” w komponencie 
    	 „BeanId(WSXMLValidationApp#WSXMLValidationEJB.jar#Module, null)”. 
      Dane wyjątku: WebServicesFault
     faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
     faultString: org.xml.sax.SAXParseException: Element typu „TestResponse” 
       musi poprzedzać 
    		specyfikacje atrybutów, „>” lub „/>”. Analizowany komunikat: 
        <?xml version="1.0"?><OdpowiedzTestowa 
    		xmlns="http://WSXMLValidation"<imie>Bohdan</imie>
        <nazwisko>Nowak</nazwisko></OdpowiedzTestowa>
     faultActor: null
     faultDetail: 
    [9/11/08 15:16:35:135 CDT] 0000003f ExceptionUtil E   CNTR0020E: Komponent EJB zgłosił 
      nieoczekiwany (niezadeklarowany) wyjątek podczas wywoływania metody 
      „transactionNotSupportedActivitySessionNotSupported” w komponencie 
    		„BeanId(WSXMLValidationApp#WSXMLValidationEJB.jar#Module, null)”. 
     Dane wyjątku: WebServicesFault
     faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
     faultString: org.xml.sax.SAXException: WSWS3066E: Błąd: oczekiwano znacznika „koperta” 
       a wykryto znacznik OdpowiedzTestowa 
    		Analizowany komunikat: <?xml version="1.0"?><OdpowiedzTestowa 
       xmlns="http://WSXMLValidation">
    		<imie>Bohdan</imie><drugieImie>Jan</drugieImie>
       <nazwisko>Nowak</nazwisko>
       </OdpowiedzTestowa>
     faultActor: null
     faultDetail: 
  • Eksport JAXRPC/JAXWS
    [9/11/08 15:35:13:401 CDT] 00000064 WebServicesSe E 
      com.ibm.ws.webservices.engine.transport.http.WebServicesServlet 
      getSoapAction WSWS3112E: 
    	  Błąd: Generowanie błędu WebServicesFault z powodu brakującego działania SOAPAction.
                        WebServicesFault
     faultCode: Client.NoSOAPAction
     faultString: WSWS3147E: Błąd: brak nagłówka SOAPAction!
     faultActor: null
     faultDetail: 

Więcej informacji o usługach sprawdzania poprawności zawiera opis interfejsu BOInstanceValidator w dokumentacji wygenerowanego interfejsu i interfejsu SPI, w sekcji Skorowidz.