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

Проверка документа XML

Документы и бизнес-объекты XML можно проверить, используя службу проверки.

Ряд других служб требуют соблюдения определенных стандартов, а в случае несоблюдения они генерируют исключительную ситуацию. Одной из таких служб является BOXMLSerializer.

С помощью BOXMLSerializer можно проверять документы XML перед их обработкой в запросе службы. BOXMLSerializer проверяет структуру документов XML на наличие ошибок следующих типов:
  • Недопустимые документы XML, например те, в которых отсутствуют определенные теги элементов.
  • Неправильно отформатированные документы XML, например те, в которых отсутствует закрывающий тег.
  • Документы с ошибками анализа, например ошибками в объявлениях объектов.
При обнаружении ошибки BOXMLSerializer генерирует исключительную ситуацию, содержащую сведения о неполадке.
Проверку можно выполнять при импорте и/или экспорте документов XML, связанных со следующими службами:
  • HTTP
  • Веб-службы JAXRPC
  • Веб-службы JAX-WS
  • Службы JMS
  • Службы MQ
Для служб HTTP, JAXRPC и JAX-WS служба BOXMLSerializer генерирует исключительные ситуации следующим образом:
  • Импорты -
    1. Компонент SCA вызывает службу.
    2. Служба вызывает целевой URL.
    3. Целевой URL отправляет в ответ исключительную ситуацию из-за недопустимого XML.
    4. В службе возникает сбой с исключительной ситуацией времени выполнения и сообщением.
  • Экспорты -
    1. Клиент службы вызывает экспорт службы.
    2. Клиент службы отправляет недопустимый XML
    3. В операции экспорта службы возникает сбой и генерируется исключительная ситуация и сообщение.
Для служб обмена сообщениями JMS и MQ исключительные ситуации генерируются следующим образом:
  • Импорты -
    1. Объект импорта вызывает службу JMS или MQ.
    2. Служба возвращает ответ.
    3. Служба возвращает исключительную ситуацию из-за недопустимого XML.
    4. В объекте импорта возникает сбой и создается сообщение.
  • Экспорты -
    1. Клиент MQ или JMS вызывает экспорт.
    2. Клиент отправляет недопустимый XML.
    3. В операции экспорта возникает сбой и генерируется исключительная ситуация и сообщение.

Сообщения, созданные вместе с исключительной ситуацией, возникшей из-за недопустимого XML, можно просмотреть в протоколах. Ниже приведены примеры сообщений, отправляемых в случае неверной кодировки XML, обнаруженной службой BOXMLSerializer

  • Импорт JAXWS
    javax.xml.ws.WebServiceException: org.apache.axiom.om.OMException: 
     javax.xml.stream.XMLStreamException: После типа элемента "TestResponse" 
     должна быть указана спецификация атрибута ">" или "/>".
    
    javax.xml.ws.WebServiceException: org.apache.axiom.soap.SOAPProcessingException: 
    	В первом элементе должно быть задано локальное имя, Envelope
  • Импорт JAXRPC
    [9/11/08 15:16:27:417 CDT] 0000003e ExceptionUtil E   
    	CNTR0020E: EJB сгенерировал непредвиденную (необъявленную) 
    	 исключительную ситуацию при вызове метода 
      "transactionNotSupportedActivitySessionNotSupported" для объекта 
    	 "BeanId(WSXMLValidationApp#WSXMLValidationEJB.jar#Module, null)". 
      Данные исключительной ситуации: WebServicesFault
     faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
     faultString: org.xml.sax.SAXParseException: После типа элемента "TestResponse" 
       должна быть указана 
    		спецификация атрибута ">" или "/>". Выполнялся анализ следующего сообщения: 
        <?xml version="1.0"?><TestResponse 
    		xmlns="http://WSXMLValidation"<firstName>Bob</firstName>
        <lastName>Smith</lastName></TestResponse>
     faultActor: null
     faultDetail: 
    [9/11/08 15:16:35:135 CDT] 0000003f ExceptionUtil E   CNTR0020E: EJB сгенерировал 
      непредвиденную (необъявленную) исключительную ситуацию при вызове метода 
      "transactionNotSupportedActivitySessionNotSupported" для объекта 
    		"BeanId(WSXMLValidationApp#WSXMLValidationEJB.jar#Module, null)". 
     Данные исключительной ситуации: WebServicesFault
     faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
     faultString: org.xml.sax.SAXException: WSWS3066E: Ошибка: Ожидалось 'envelope', 
       а найдено TestResponse 
    		Выполнялся анализ следующего сообщения: <?xml version="1.0"?><TestResponse 
       xmlns="http://WSXMLValidation">
    		<firstName>Bob</firstName><middleName>John</middleName>
       <lastName>Smith</lastName>
       </TestResponse>
     faultActor: null
     faultDetail: 
  • Экспорт JAXRPC/JAXWS
    [9/11/08 15:35:13:401 CDT] 00000064 WebServicesSe E 
      com.ibm.ws.webservices.engine.transport.http.WebServicesServlet 
      getSoapAction WSWS3112E: 
    	  Ошибка: создано WebServicesFault из-за отсутствия SOAPAction.
                        WebServicesFault
     faultCode: Client.NoSOAPAction
     faultString: WSWS3147E: Ошибка: отсутствует заголовок SOAPAction!
     faultActor: null
     faultDetail: 

За дополнительной информацией о службах проверки обратитесь к описанию интерфейса BOInstanceValidator в документации по API и SPI в разделе Справочные материалы.