Главная » Java, Web, XML » Асинхронный обмен сообщениями

0

Пакет SAAJ обеспечивает создание SOAP-посланий и обмен ими в синхронном режиме Р2Р (point-to-point). Часто такой способ обмена сообщениями оказывается невозможным из-за того, что участники обмена не всегда одновременно находятся на связи. В таких случаях приходится обмениваться сообщениями асинхронно, не дожидаясь ответа на посланное сообщение. Так работает электронная почта. В технологии Java асинхронный обмен SOAP-посланиями обеспечивается интерфейсами и классами пакета JAXM, находящимися в Java-пакете javax.xml.messaging.

Реализация асинхронного обмена посланиями основана на том, что послание принимает не адресат, которому оно направлено, а так называемый поставщик сообщений. Поставщик сообщений (messaging provider) — это программа, которая должна постоянно находиться на связи, принимать послания, временно хранить их и передавать адресату, как только тот выйдет на связь. Поставщик сообщений реализуется как распределенное приложение, отдельные компоненты которого находятся и у отправителя сообщений и у их получателя. В технологии Java система обмена сообщениями реализована механизмом JMS (Java Message Service). С механизмом JMS можно ознакомиться, например, по книге [10], но это необязательно. Присутствие поставщика сообщений совершенно не ощущается SOAP- клиентом и SOAP-сервером, пакет JAXM берет на себя всю работу с поставщиком.

Поставщик сообщений может посылать отправителю подтверждение (acknowledgement) в получении послания или не посылать его. В любом случае отправитель не дожидается ответа, а переключается на решение других задач. Ответ может прийти позднее, даже через несколько дней, или вообще не прийти.

Некоторые системы обмена сообщениями задают специфичные элементы SOAP-посланий. Например, спецификация "ebXML Message Service Specification" определяет обязательные для ebXML-послания блоки заголовка <MessageHeader>, <Service>, <SyncReply> и другие. Совокупность таких элементов образует профиль (profile) SOAP-послания. Профили посланий различаются своими именами. Имя профиля может быть простой строкой, например, "ebxml", "soaprp", или строкой URI. У каждого поставщика сообщений есть некоторый набор известных ему профилей. Стандартная реализация JAXM "понимает" профиль ebXML и профиль протокола Microsoft WS-Routing, называемый в документации "SOAP-RP", Послания с этими профилями создаются методами специально разработанных классов EbXMLMessagelmpl И SOAPRPMessagelmpl соответственно, ИЗ пакетов com.sun.xml.messaging.jaxm.ebxmlИ com. sun.xml.messaging.jaxm.soaprp.

Создавая SOAP-послание средствами JAXM, нужно указывать его профиль. Поэтому мы сначала рассмотрим подробнее протокол WS-Routing, описывающий профиль

Литература:

Хабибуллин И. Ш. Разработка Web-служб средствами Java. — СПб.: БХВ-Петербург, 2003. — 400 с: ил.

По теме:

  • Комментарии