1

次のように、axis2 java2wsdl ユーティリティを使用して Java クラスから WSDL を生成しました。

java2wsdl -o C:\temp -cn com.temenos.webservices.customer.CustomerServiceWS

次に、axis2 のアプリケーション サーバー (jBoss など) 内に同じ Web サービスを展開し、http:// 127.0.0.1:8080/axis2/services/CustomerServiceWS?wsdl で wsdl を参照し、このサービスのメソッドを呼び出すことができます。 SoapUI などの標準クライアント

問題は、標準の Java ツール ' wsimport ' を使用して WSDL の場所をC:\temp (java2wsdl ユーティリティから生成された WSDL) として指定してクライアントを生成したときに、クライアントがデプロイされた Web サービスと通信できないことです。次のコードを使用して Web サービスにアクセスしています。

// Initialise WS
CustomerServiceWS service = null;
CustomerServiceWSPortType servicePort = null;
try {
URL wsdlLocation  = new URL("http://127.0.0.1:8080/axis2/services/CustomerServiceWS?wsdl");  
QName serviceName = new QName("http://customer.webservices.temenos.com", "CustomerServiceWS");
service = new CustomerServiceWS(wsdlLocation, serviceName);
servicePort = service.getCustomerServiceWSHttpSoap12Endpoint();
} catch (MalformedURLException murle) {
murle.printStackTrace();
    return;
}

しかし、(サービス ポート) エンドポイントの作成中に次のエラーが発生します。

Exception in thread "main" javax.xml.ws.WebServiceException: An attempt was made to construct the ServiceDelegate object with an service name that is not valid: {http://customer.webservices.temenos.com}CustomerServiceWS.
    at org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:173)
    at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:70)
    at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:118)
    at org.apache.axis2.jaxws.spi.ServiceDelegate.<init>(ServiceDelegate.java:218)
    at org.apache.axis2.jaxws.spi.Provider.createServiceDelegate(Provider.java:59)
    at javax.xml.ws.Service.<init>(Service.java:56)
    at com.temenos.webservices.customer.CustomerServiceWS.<init>(CustomerServiceWS.java:42)
    at com.temenos.services.customer.client.Client.testGetLanguage(Client.java:32)
    at com.temenos.services.customer.client.Client.main(Client.java:21)

私は多くのことを試しましたが、何も好きではないようです。何か不足していますか?

ありがとう、

--

シュネホ

4

2 に答える 2

0

問題は、Java WS プロバイダーの代わりに org.apache.axis2.jaxws.spi.Provider.createServiceDelegate (Axi2 プロバイダー) への呼び出しが発生したため、lib パスに axis2 があったことです。クラスパスからaxis2ライブラリを削除しましたが、今は問題なく動作しているようです。(ただし、クライアント経由で Web サービスを呼び出すことはまだできません)

于 2012-06-21T12:10:24.300 に答える
0

QName() で指定する URL については、WSDL ファイルの説明を参照し、targetNamespace を確認してください。必要なパッケージもインポートします。

于 2015-04-25T19:42:35.973 に答える