1

NetBeans 7.1 で 2 つの Web サービスクライアントを作成し、Web サイトにあるチュートリアルを模倣しました。

しばらく前に、http の場所にある wsdl ファイルに対して最初のものを実行しましたが、Web サービスの使用に問題はありませんでした。

現在使用している Web サービスには、https の場所にある wsdl ファイルがあります。サービスのセットアップは問題なく開始されました。最初のものとの唯一の違いは、私が受け入れたセキュリティ証明書を警告するポップアップでした。サービス、生成されたソース、META-INF などはすべて正常に作成されています。wsdl ファイルのローカル コピーは、私の PC の src/.. フォルダーの下に保存されています。

ただし、コードを実行するとすぐに、次のエラーが表示されます。

「 https://-domain-.net/-XYZServices-/-ABCXML?wsdl-」 wsdlが見つかりません。リソースをクラスパスに正しく配置してください。

Stackoverflow やオンラインの他の場所で同様の問題をいくつか見つけましたが、実際に問題を解決するものはありませんでした。とにかくいくつかの提案を試しました:

jax-ws-catalog.xml ファイルを確認したところ、上記の URL が、wsdl のローカル コピーが格納されているローカル フォルダーにマップされていることがわかりました。そのローカル フォルダーに実際に wsdl ファイルが含まれているかどうかを確認しました。ポート 8080 と 8081 を指すように jax-ws-catalog.xml ファイルの URL を編集しようとしましたが、うまくいきませんでした。

これはセキュリティの問題だと思いますが、これを修正する方法についての手がかりがありません。

ここで誰かが私を正しい方向に向けることができますか?

参考までに: 私は Java と NetBeans にかなり慣れていません。

ありがとう。

4

4 に答える 4

7

「wsdl が見つかりません。リソースをクラスパスに正しく配置してください」というエラーを回避する最善の方法。wsdllocation を使用して wsdl の場所を指定し、wsdl を jar の一部としてパッケージ化します。

wsdllocation を指定するときは、場所の先頭に必ず「/」を追加してください。

wsimport  -keep -Xnocompile  -wsdllocation /schema/10.0/MyService.wsdl  schema/10.0/MyService.wsdl
于 2015-05-09T01:41:17.857 に答える
0

WSDL ファイルをクラスパスなど、src/main/resources/MyWsdl.xml に配置し、これを使用して取得します。

URL url = new URL(baseUrl, "classpath:MyWsdl.xml");

また、javax.xml.ws.Service を拡張するサービス クラスにこれを追加することを忘れないでください。

@WebServiceClient(name = "MyService", targetNamespace = "http://example.org/", wsdlLocation = "classpath:MyWsdl.xml")
于 2016-02-10T09:31:13.223 に答える
0

これが役立つかどうかはわかりませんが...

ここから

クライアント側で SSL 対応 Web サービスを使用する場合: - 新しい Web サービス クライアント ウィザードで、WSDL およびクライアントの場所の下で、WSDL URL を https://:8181// の形式で設定して、Web サービスの WSDL ファイルを指定します。作成した Web サービスをクリックし、[Web サービス属性の編集] を選択し、Wsimport オプションで wsdlLocation オプションを次の形式に修正します: /META-INF/wsdl/_8181//.wsdl

Web サービスを更新するたびに、デプロイされたアプリケーションから新しい wsdl ファイルがロードされ、wsdl ファイルは正しいパス (前述の wsdlLocation オプション値) によって定義されたリソースとしてロードされます。

于 2012-08-17T20:09:06.067 に答える
-1

Web サービスが構成されていることを確認してください。そのための 1 つの方法は、 を拡張するクラスを実装することjavax.ws.rs.core.Applicationです。つまり、次のようなクラスを追加します。

import java.util.Set;
import javax.ws.rs.core.Application;


@javax.ws.rs.ApplicationPath("rest")
public class ApplicationConfig extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> resources = new java.util.HashSet<Class<?>>();
        addRestResourceClasses(resources);
        return resources;
    }


    private void addRestResourceClasses(Set<Class<?>> resources) {
        resources.add(rest.HelloWorld.class);
        resources.add(rest.Search.class);

        // Here continue adding all the JAX-RS classes that you have
    }

}
于 2015-08-19T11:04:35.397 に答える