gpt4 book ai didi

tomcat - 具有 ws-addressing 功能的 jaxws 客户端上的 javax.xml.ws.WebServiceException

转载 作者:行者123 更新时间:2023-11-28 23:49:38 24 4
gpt4 key购买 nike

我在使用在 Tomcat 中运行的 jaxws 客户端调用 Web 服务时遇到了问题

代码如下:

    javax.xml.namespace.QName portQname = new javax.xml.namespace.QName("urn:hl7-org:v3","PRPA_AR201302UV02_Service");
javax.xml.ws.Service service = javax.xml.ws.Service.create(new javax.xml.namespace.QName("urn:hl7-org:v3","PRPA_AR201302UV02_Service"));
service.addPort(portQname,javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING,wsaddress);


Dispatch<Object> dispatch =service.createDispatch(portQname,jaxbContext,javax.xml.ws.Service.Mode.PAYLOAD,new javax.xml.ws.soap.AddressingFeature());


dispatch.getRequestContext().put(javax.xml.ws.BindingProvider.SOAPACTION_USE_PROPERTY,true);
dispatch.getRequestContext().put(javax.xml.ws.BindingProvider.SOAPACTION_URI_PROPERTY,"urn:hl7-org:v3:PRPA_IN201301UV02");

当我从 Eclipse run Tool 运行它时,代码可以正常使用 ws-addressing 功能,而无需提供 axis2.xml 文件

当我在 Tomcat 实例中运行它时,出现以下异常

javax.xml.ws.WebServiceException:获取客户端配置上下文时出错:系统正在尝试使用不可用的模块:寻址 在 org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException (ExceptionFactory.java:173) 在 org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException (ExceptionFactory.java:70) 在 org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException (ExceptionFactory.java:118) 在 org.apache.axis2.jaxws.ClientConfigurationFactory.getClientConfigurationContext(ClientConfigurationFactory.java:119) 在 org.apache.axis2.jaxws.description.impl.DescriptionFactoryImpl.createServiceDescription(DescriptionFactoryImpl.java:92) 在 org.apache.axis2.jaxws.description.impl.DescriptionFactoryImpl.createServiceDescription(DescriptionFactoryImpl.java:79) 在 org.apache.axis2.jaxws.description.DescriptionFactory.createServiceDescription(DescriptionFactory.java:78) 在 org.apache.axis2.jaxws.spi.ServiceDelegate.(ServiceDelegate.java:218) 在 org.apache.axis2.jaxws.spi.Provider.createServiceDelegate(Provider.java:83) 在 org.apache.axis2.jaxws.spi.Provider.createServiceDelegate(Provider.java:79) 在 javax.xml.ws.Service.(Service.java:92) 在 javax.xml.ws.Service.create(Service.java:756) 在 wgs.v3.client.impl.V3ClientNoWsdl.callMethod(V3ClientNoWsdl.java:128) 在 wgs.v3.client.impl.V3ClientNoWsdl.invoke(V3ClientNoWsdl.java:89) 在 wgs.tx.dispatcher.Sender.elab(Sender.java:204) 在 wgs.tx.dispatcher.Sender.elab(Sender.java:158) 在 wgs.tx.system.MessageDispatcherSender.processRequest(MessageDispatcherSender.java:159) 在 wgs.tx.system.MessageDispatcherSender.run(MessageDispatcherSender.java:99) 在 java.lang.Thread.run(Thread.java:595)

有人遇到同样的问题吗?我无法摆脱这个

最佳答案

问题已解决。

Eclipse 运行工具不是基于 axis2 实现的 jax-ws 标准,而是基于独立发行版。

为了让相同的类在带有 axis2 的 Tomcat 上正常运行,我必须添加以下行在创建服务实例之前

System.setProperty(org.apache.axis2.Constants.AXIS2_REPO, getServletContext().getRealPath(FILE_SEPARATOR) + FILE_SEPARATOR + "WEB-INF");

以便 axis2 实现可以正确访问模块和配置目录。

关于tomcat - 具有 ws-addressing 功能的 jaxws 客户端上的 javax.xml.ws.WebServiceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10555751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com