2

私はプレイするのが初めてです!フレームワークと wsdl2java ツールの使用。劇を展開中!SOAP Web サービスと対話する必要があるアプリケーション。私は WSDL を持っており、jaxws を使用してそこからオブジェクトを作成しました。一連のJavaクラスと1つのインターフェースを作成しています。Web サービスを呼び出そうとするとすぐに、クラスローダがインターフェイスを見つけられないというエラーが表示されます。これは私のコードです:

MyWebserviceBeanService service = new MyWebserviceBeanService();
MyWebserviceRemote mwr = service.getMyWebserviceBeanPort();
LoginResponse response = mwr.loginUser("xxx", "xxx");

「MyWebserviceRemote」がインターフェースであることに注意してください。のコードはgetMyWebserviceBeanPort自動的に生成されるため非常に一般的ですが、次のようになります。

@WebEndpoint(name = "MyWebserviceBeanPort")
public MyWebserviceRemote getMyWebserviceBeanPort() {
    return super.getPort(new QName("http://xxxxxxxxxx/", "MyWebserviceBeanPort"), MyWebserviceRemote.class);
}

上記のメソッドなど、メソッドを呼び出そうとするとloginUser、次のスタックトレースが表示されます。

play.exceptions.JavaExecutionException: interface xxxx.xxxx.xxxx.MyWebserviceRemote is not visible from class loader
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:237)
    at Invocation.HTTP Request(Play!)
Caused by: java.lang.IllegalArgumentException: interface xxxx.xxxxx.xxxx.MyWebserviceRemote is not visible from class loader
    at com.sun.xml.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:736)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:408)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:384)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:366)
    at javax.xml.ws.Service.getPort(Service.java:119)
    at xxxx.xxxx.xxxx.MyWebserviceBeanService.getMyWebserviceBeanPort(MyWebserviceBeanService.java:72)
    at controllers.MyController.index(MyController.java:26)
    at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:557)
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:508)
    at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:484)
    at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:479)
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161)
    ... 1 more

これを修正する方法も、デバッグする方法もまったくわかりません。私はどこを見ますか?どこから始めればよいですか?SoapUI を使用して Web サービスをテストしたところ、正常に動作しました。

ありがとう!

4

3 に答える 3

9

これは、play フレームワークでの jar ファイルの競合が原因でした (名前に 'jax' が含まれる合計 3 つの jar ファイル)。私はそれらを取り除きましたが、今はすべて順調です。説明的なエラー メッセージをどうぞ :-)

于 2012-09-02T12:58:35.320 に答える
0

私は同じ問題を抱えていたので、この依存関係を依存関係の1つから除外する必要がありました:

<exclusions>
    <exclusion>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>rt</artifactId>
    </exclusion>
</exclusions>
于 2020-07-22T09:34:01.510 に答える