1

私は次のJavaクラスを持っていて、そのためにwsdlを公開しました.私の質問は、とにかく異なるWebサービスクラスを持ち、単一のwsdlを公開することはありますか? これは、いくつかのメソッドを持つ別のクラスを意味しますか、それともすべての webmethod メソッドを保持し、そこから wsdl を生成するために、アプリケーションのメイン クラスとして webservice クラスが必要ですか?

package com.Services;


import javax.jws.WebService;
import javax.jws.WebMethod;

@WebService(name = "Hellos", targetNamespace = "http://localhost:8081/Mywebservice2/services/Hellos")
public class Hellos {


    @WebMethod
    public Customer[] mycustomers() {
    .....

    }

    @WebMethod
    public String Receiver(String name){
        ....
    }
}
4

3 に答える 3

1

まさに、それがアプリケーションの設計方法であるべきです。統合された Java ファイルが 1 つあり、それを公開する必要があります。クライアントには複数のエンドポイントを与える必要があります。

于 2013-01-22T04:18:50.967 に答える
1

WSDLはサービスに対応し、文字通り各パブリック メソッドはサービスに対応します。多くのクラスとメソッドを記述できますが、メソッドがプライベートの場合、それらは wsdl の一部にはなりません。

IDE プラグインを使用している場合、サービスの作成中に、どのパブリック メソッドを外部に公開するかを尋ねられます。したがって、1 つの Java プロジェクトに、必要な数のクラスまたはメソッドを含めることができます。最後に、プロジェクトを Web サービスに変換するときに、エンドポイント/サービスとして機能するすべてのメソッドを決定できます。これらはWSDLの一部になります。

于 2013-01-22T04:42:54.760 に答える
1

wsgenWSDL ファイルを生成するための JDK 1.6 以降のツールは、サービス エンドポイント インターフェイスまたはSEIを1 つ だけ使用します。

wsgen [options] <SEI>

あなたはそれを読むことができます:

wsgen ツールは、JAX-WS Web サービスで使用される JAX-WS ポータブル アーティファクトを生成します。このツールは、Web サービス エンドポイント実装クラス (SEI) を読み取り、Web サービスのデプロイと呼び出しに必要なすべてのアーティファクトを生成します。

と:

サービスをデプロイするときに JAXWS ランタイムが自動的に WSDL を生成するため、開発時に WSDL を生成する必要はありません。

一方、WSDL 1.1は 1 つの WSDL ファイルに複数のサービスを含めることをサポートしていますが、これらのサービスは型を共有しています。その場合は、すべてを 1 つのサービスにまとめることをお勧めします。

于 2013-01-22T04:50:42.673 に答える