Может кто-нибудь объяснить, зачем нам нужен LogicalHandler
, если мы сможем сделать гораздо больше с SOAPHandler
в JaxWs
?SOAPHandler vs LogicalHandler
ответ
Из JAX-WS 2.2 spec:
JAX-WS 2.0 определяет два типа обработчика:
Логических обработчиков, что только работают на сообщения свойств контекста и полезных нагрузки сообщений. Логические обработчики являются агностиками протокола и не могут повлиять на протокол определенных частей сообщения. Логические обработчики - это обработчики, которые реализуют javax.xml.ws.handler.LogicalHandler. Обработчики протоколов, которые работают с свойствами контекста сообщений и конкретными сообщениями протокола.
Обработчики протокола относятся к конкретному протоколу и могут обращаться к и изменять специфические аспекты протокола. Обработчики протоколов являются обработчиками, которые реализуют любой интерфейс, полученный из javax.xml.ws- .handler.Handler, за исключением javax.xml.ws.handler.LogicalHandler.
...
Обработчики, отличных от SOAP протоколов, как ожидается, реализовать интерфейс в специфичные для протокола, который расширяет javax.xml.ws.handler.Handler.
Итак, если вам нечего делать ничего SOAP, вам не нужно использовать SOAPHandler
. Одним из вариантов использования может быть обработчик, который обрабатывает только HTTP-заголовки, вложения или проверяет HttpServletRequest
. Да, вы можете сделать гораздо больше с SOAPHandler
, но иногда вам не нужен доступ к заголовкам SOAP, SOAPMessage
или доступ к DOM для полезной нагрузки.