JAX-WS получают мыло без фактической отправки в веб-сервис - PullRequest
2 голосов
/ 30 января 2010

Используя JAX-WS и пользовательский WSDL, есть ли способ получить сообщение, которое будет отправлено веб-службе, без фактического вызова службы? Мне нужно сгенерировать мыльное сообщение, соответствующее WSDL, но это мыльное сообщение фактически встроено в другое сообщение. Я думал, что смогу создать локальный веб-сервис, который просто выводит сообщение обратно, но кажется, что должен быть способ без этого или использования цепочки обработчиков, когда на самом деле не имеет значения, что сообщение отправлено.

Может быть, самое простое, что нужно сделать, это просто сгенерировать мыло вручную?

Ответы [ 2 ]

2 голосов
/ 15 марта 2013

Надеюсь, это поможет:

http://www.java -tips.org / Java-EE-советы / Java-апи-для-XML-веб-сервисы / записи-а-обработчик-в-JAX-ws.html

Вы можете перехватить сообщение перед отправкой, получить тело, получить заголовок, подписать его SAML или чем угодно, а затем отправить на сервер.

0 голосов
/ 02 февраля 2010

может быть, этот пример поможет (из Понимания веб-сервисов, часть 1: SOAP, IBM Developer Works, стр. 21):

MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();

SOAPPart SOAPPart = message.getSOAPPart();
SOAPEnvelope envelope = SOAPPart.getEnvelope();
SOAPBody body = envelope.getBody();

SOAPElement bodyElement = body.addChildElement(envelope.createName("echo", "req", "http://localhost:8080/axis2/services/MyService/"));

bodyElement.addChildElement("category").addTextNode("classifieds");
message.saveChanges();

SOAPPart SOAPpartbefore = message.getSOAPPart();
SOAPEnvelope reqenv = SOAPpartbefore.getEnvelope();

System.out.println(reqenv.toString());
...