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