1

そこで、JaxWsDynamicClientFactory を使用して SEI クラスを動的に作成しようとしています。以下のコードを実行する

JaxWsDynamicClientFactory def = JaxWsDynamicClientFactory.newInstance();
def.createClient("http://localhost:8080/TheTestService/TestService?wsdl");

クラスを生成します:

com.mycompany.project.service.GetProducts

com.mycompany.project.service.GetStatus

ランニング:

wsdl2Java -d "C/:outputdir" "http://localhost:8080/TheTestService/TestService?wsdl" 

クラスを生成する

com.mycompany.project.service.ServiceInterface

com.mycompany.project.service.GetProducts

com.mycompany.project.service.GetStatus

com.mycompany.project.service.impl.ServiceInterface

さらに、電話をかけようとすると

client.invoke("getProducts", 0); 

私は得る:

org.apache.cxf.common.i18n.UncheckedException: No operation was found with the name {http://impl.service.project.mycompany.com/}getProducts.

impl.service.project.mycompany.com で getProducts という名前のものが生成されないため、これは理にかなっていると思います。しかし、私は Web サービスを書いたので、Web サービス インターフェイスにメソッド getProducts(int id) があることを知っています。

ここで何が間違っていますか?CXF のドキュメントによると、動的クライアント ファクトリは wsdl2Java ツールと同じコード ジェネレータを使用します。その場合、同じクラスが生成されないのはなぜですか?

ありがとう、

チャック

4

2 に答える 2

0

私はいくつかのバグだと思います.wsdlがあり、wsdl2javaで生成されたクラスの1つにプロパティがありましたが、プロパティgetItemgetItems JaxWsDynamicClientFactory.newInstance().createClient()でこのクラスを生成しました。したがって、私の進歩は、使用したいクラスのメソッドを調べることです(つまり、で生成されたクラスのメソッドJaxWsDynamicClientFactory.newInstance().createClient())。これを達成するには、refを使用します

于 2012-04-09T12:31:27.870 に答える