12

アノテーション@WebServiceを使用してJavaインターフェイスを定義しました正常に動作 したコードをコンパイルしました

例:

@WebService
public interface HelloWorldIfc{

今、私はエンドポイントインターフェイスを次のように定義しようとしました

 @WebService (endpointInterface = "com.ws.HelloWorldIfc")
    public interface HelloWorldIfc{

これもうまくコンパイルされました

だから-私はインターフェイスまたはクラスの実装でエンドポイントインターフェイスを定義する必要がありますか?
この属性はあらゆる用途に使用されますか?その目的は何ですか?
定義しないとどうなりますか?何を失いますか?
ありがとう、
satish

4

2 に答える 2

22

JAX-WS 仕様では、セクション 3.3 の 30 ページでこれを明確にしています。

属性を使用してendpointInterface、実装クラスとインターフェースを分離できます。基本的に、これはwsdl:portType、サービスをデプロイしてwsdl:definitionが生成されるときに、何をマップするかを決定します。

アノテーションが付けられたクラスのすべてのパブリック メソッドを定義しない場合は、 (アノテーションでこの動作に影響を与えない限り)にマップされます。endpointInterfacewsdl:operation@WebMethod

を定義する場合endpointInterface、注釈付きのクラスが実装する型 (または、質問で示されているようにそれ自体) を指す必要があります。wsdl:portType次に、注釈付きクラスのメソッドの代わりに、このタイプのパブリック メソッドが のマッピングに使用されます。

要約すると、 の定義は、実装クラスで を使用し、実装するインターフェースに基づいて WSDL を生成するendpointInterface場合にのみ意味があります。@WebServiceinterfacecom.ws.HelloWorldIfcで注釈を使用する現在の設定では、実際には違いはありません。したがって、スキップするだけで何も失うことはありません。アノテーションは、生成された WSDL に入れないパブリック メソッドを実装クラスで提供する場合に役立ちます。

于 2013-01-14T15:15:58.577 に答える
0

インターフェイスメソッドの @WebParam アノテーションは、実装クラスで再度定義しなくても機能するため、 endpointInterface を定義すると便利です。

于 2016-11-05T23:04:44.913 に答える