JAX-WS在没有实际发送到Web服务的情况下获取SOAP

时间:2010-01-30 20:10:13

标签: java web-services soap wsdl jax-ws

使用JAX-WS和自定义WSDL,有没有办法在不实际调用服务的情况下获取将发送到Web服务的消息?我需要生成符合WSDL的soap消息,但SOAP消息实际上嵌入到另一个消息中。我当时认为我可以创建一个本地的Web服务,只是回复消息,但似乎应该有一种方法,如果没有这样做或使用处理程序链,那么消息发送真的不重要。

也许最简单的方法就是手动生成肥皂?

2 个答案:

答案 0 :(得分:2)

我希望这会有所帮助:

http://www.java-tips.org/java-ee-tips/java-api-for-xml-web-services/writing-a-handler-in-jax-ws.html

您可以在发送之前截取消息,获取正文,获取标题,使用SAML或任何您想要的内容进行签名,然后将其发送到服务器。

答案 1 :(得分:0)

也许这个例子有帮助(来自Understanding Web Services,第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());