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