public class MySoapHandler implements SOAPHandler<SOAPMessageContext> {
@Override
public boolean handleMessage(SOAPMessageContext context) {
Map<String, String> prop = Client.getProperties();
System.out.println("Client : handleMessage()......");
Boolean isRequest = (Boolean) context
.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
SOAPMessage message = context.getMessage();
// if this is a request, true for outbound messages, false for inbound
if (isRequest) {
try {
}
}
}
...
...
}
在我的主类中,我发送soap请求包含注册处理程序的代码:
QName portName = new QName("MySoapHandler");
HandlerRegistry registry =
service.getHandlerRegistry(); List handlerList = new ArrayList();
handlerList.add(new HandlerInfo(MySoapHandler.class, null,
null)); registry.setHandlerChain(portName, handlerList);
它不起作用。我该怎么办?我有一个遗留代码可供使用。我无法理解如何做到这一点。
答案 0 :(得分:0)
我建议使用WebServiceInterface。
请参阅此链接以获取更多详细信息:http://examples.javacodegeeks.com/enterprise-java/jws/jax-ws-soap-handler-example/
答案 1 :(得分:0)
我能够使用以下代码以编程方式注册我的客户端处理程序:
MyWebServicePortType myWebServicePortType
= service.getPort(MyWebServicePortType.class);
Binding binding = ((BindingProvider)myWebServicePortType).getBinding();
List<Handler> handlerList = binding.getHandlerChain();
handlerList.add(new MySoapHandler());
binding.setHandlerChain(handlerList);
我在
找到了这个方法https://docs.oracle.com/cd/E13222_01/wls/docs103/webserv_adv/handlers.html#wp267318