
也许对您来说太晚了,我不确定是否可行,但是您可以尝试。
首先,您需要实现SoapHandler,然后在
handleMessage方法中可以修改
SOAPMessage。我不确定是否可以直接修改该前缀,但是可以尝试:
public class MySoapHandler implements SOAPHandler<SOAPMessageContext>{ @Override public boolean handleMessage(SOAPMessageContext soapMessageContext) { try { SOAPMessage message = soapMessageContext.getMessage(); // I haven't tested this message.getSOAPHeader().setPrefix("soapenv"); soapMessageContext.setMessage(message); } catch (SOAPException e) { // Handle exception } return true; } ...}然后,您需要创建一个
HandlerResolver:
public class MyHandlerResolver implements HandlerResolver{ @Override public List<Handler> getHandlerChain(PortInfo portInfo) { List<Handler> handlerChain = Lists.newArrayList(); Handler soapHandler = new MySoapHandler(); String bindingID = portInfo.getBindingID(); if (bindingID.equals("http://schemas.xmlsoap.org/wsdl/soap/http")) { handlerChain.add(soapHandler); } else if (bindingID.equals("http://java.sun.com/xml/ns/jaxws/2003/05/soap/bindings/HTTP/")) { handlerChain.add(soapHandler); } return handlerChain; }}最后,您必须将您
HandlerResolver的服务添加到您的客户服务中:
Service service = Service.create(wsdlLoc, serviceName);service.setHandlerResolver(new MyHandlerResolver());
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)