0

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

代码如下:

    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 运行工具运行代码时,该代码与 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:118) 在 org.apache.axis2.jaxws.ClientConfigurationFactory.getClientConfigurationContext(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.invoke(V3ClientNoWsdl.java:89) 在 wgs.tx 的 wgs.v3.client.impl.V3ClientNoWsdl.callMethod(V3ClientNoWsdl.java:128)。 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)

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

4

1 回答 1

0

问题解决了。

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

要使用axis2在Tomcat上正确运行相同的类,我必须在创建服务实例之前添加以下行

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

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

于 2012-11-19T09:11:39.537 回答