更改使用JAXWS生成的默认XML名称空间前缀

更改使用JAXWS生成的默认XML名称空间前缀,第1张

更改使用JAXWS生成的默认XML名称空间前缀

也许对您来说太晚了,我不确定是否可行,但是您可以尝试

首先,您需要实现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());


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5091190.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-16
下一篇2022-11-16

发表评论

登录后才能评论

评论列表(0条)

    保存