0

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");

コードは、axis2.xmlファイルを提供せずに、Eclipse run Toolから実行すると、ws-addressing機能で正しく機能します。

Tomcatインスタンス内で実行すると、次の例外が発生します

javax.xml.ws.WebServiceException:クライアント構成コンテキストの取得中にエラーが発生しました:システムが使用できないモジュールを使用しようとしています:orgのorg.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:173)でアドレス指定しています。 apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:70)at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:118)at org.apache.axis2.jaxws.ClientConfigurationFactory.getClientConfigurationContext(ClientConfigurationFactory。 java:119)org.apache.axis2.jaxws.description.impl.DescriptionFactoryImpl.createServiceDescription(DescriptionFactoryImpl.java:92)at org.apache.axis2.jaxws.description.impl.DescriptionFactoryImpl.createServiceDescription(DescriptionFactoryImpl.java:79) org.apache.axis2.jaxwsで。description.DescriptionFactory.createServiceDescription(DescriptionFactory.java:78)at org.apache.axis2.jaxws.spi.ServiceDelegate。(ServiceDelegate.java:218)at org.apache.axis2.jaxws.spi.Provider.createServiceDelegate(Provider.java :83)org.apache.axis2.jaxws.spi.Provider.createServiceDelegate(Provider.java:79)at javax.xml.ws.Service。(Service.java:92)at javax.xml.ws.Service.create (Service.java:756)at wgs.v3.client.impl.V3ClientNoWsdl.callMethod(V3ClientNoWsdl.java:128)at wgs.v3.client.impl.V3ClientNoWsdl.invoke(V3ClientNoWsdl.java:89)atwgs.tx。 wgs​​.tx.system.MessageDispatcherSender.processRequest(MessageDispatcherSender.java:159)のwgs.tx.dispatcher.Sender.elab(Sender.java:158)のdispatcher.Sender.elab(Sender.java:204) .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 に答える