JAX-WS のアノテーション
Java™ API for XML-Based Web Services (JAX-WS) は、Web サービスの実装に関連したメタデータを指定するため、および Web サービスの開発を簡素化するために、アノテーションの使用に依存しています。アノテーションでは、サーバー・サイドのサービス実装が Web サービスとしてアクセスされる方法、またはクライアント・サイドの Java クラスが Web サービスにアクセスする方法を記述します。
JAX-WS プログラミング標準は、Java クラスに、メタデータでのアノテーションを付けるためのサポートを導入しています。 メタデータは、Web サービスとしてサービス・エンドポイント・アプリケーションを定義するため、およびクライアントが Web サービスにアクセスする方法を定義するために使用されるものです。JAX-WS でサポートされるのは、Metadata Facility for the Java Programming Language (Java Specification Request (JSR) 175) 仕様を基にしたアノテーション、Web Services Metadata for the Java Platform (JSR 181) 仕様を基にしたアノテーション、および JAXB アノテーションが含まれる JAX-WS 2.0 以降 (JSR 224) の仕様で定義されたアノテーションの使用です。JSR 181 標準のアノテーションを使用すると、サービス実装クラスまたはサービス・インターフェース に簡単にアノテーションを付けることができ、アプリケーションが Web サービスとして使用可能になります。 Java ソース内でアノテーションを使用すると、Web サービスの開発およびデプロイメントが 簡素化されます。 通常はデプロイメント記述子ファイル、WSDL ファイルから取得される追加情報の一部を定義したり、または XML および WSDL からソース成果物へメタデータをマッピングすることにより、単純化が実現されます。
バインディング、ハンドラー・チェーン、portType のセット名、サービスおよびその他の WSDL パラメーターの構成にアノテーションを使用します。アノテーションは、Java の WSDL およびスキーマへのマッピング、ならびにランタイム時の JAX-WS ランタイムの処理方法および Web サービス呼び出しへの応答方法を制御するのに使用されます。
JAX-WS Web サービスの場合、webservices.xml デプロイメント記述子はオプションで使用できます。これは、アノテーションを使用して、デプロイメント記述子ファイル内に含まれるすべての情報を指定することができるためです。デプロイメント記述子ファイルを使用して、 既存の JAX-WS アノテーションの拡張またはオーバーライドを行うことができます。webservices.xml デプロイメント記述子で定義した すべての情報により、アノテーションによって指定された対応するすべての情報がオーバーライドされます。
WebSphere® Application Server バージョン 7.0 以降からは、Java EE 5 アプリケーション・モジュール (Web アプリケーション・モジュールのバージョン 2.5 以降、または EJB モジュールのバージョン 3.0 以降) は、JAX-WS のサービスとクライアントの識別のためにアノテーションのスキャンが実行されます。ただし、Java EE 5 より前のアプリケーション・モジュール (Web アプリケーション・モジュールのバージョン 2.4 以前、または EJB モジュールのバージョン 2.1 以前) では、パフォーマンス上の理由から、デフォルトでは、JAX-WS アノテーションがスキャンされません。
- WAR ファイルまたは EJB モジュールの META-INF/MANIFEST.MF 内の UseWSFEP61ScanPolicy プロパティー
を true に設定できます。
以下に例を示します。
モジュールの META-INF/MANIFEST.MF ファイル内でこのプロパティーが true に 設定されている場合、モジュールの Java EE バージョン に関わらず、モジュール内の JAX-WS アノテーションがスキャンされます。デフォルト値は false で、 このデフォルト値が有効な場合、JAX-WS アノテーションは、 バージョンが Java EE 5 以降の モジュール内でのみサポートされます。Manifest-Version: 1.0 UseWSFEP61ScanPolicy: true
- 管理コンソールを使用して、com.ibm.websphere.webservices.UseWSFEP61ScanPolicy カスタム Java 仮想マシン (JVM) プロパティー を設定できます。使用する正しいナビゲーション・パスについては、 JVM カスタム・プロパティーについての文書を参照してください。モジュール の Java EE バージョンに関わらず、すべてのモジュールで アノテーションのスキャンが行われるよう要求するには、カスタム・プロパティー com.ibm.websphere.webservices.UseWSFEP61ScanPolicy を true に設定します。 設定値の変更は、デフォルト動作の変更を必要とする各サーバー上で行う 必要があります。
![[z/OS]](../images/ngzos.gif)


- Java クラス、enum またはインターフェースなどの型
- メソッド
- Java クラス内のローカル・インスタンス変数を表すフィールド
- Java メソッド内のパラメーター
アノテーション・クラス | アノテーション | プロパティー |
---|---|---|
javax.jws. WebService | @WebService アノテーションは、Web サービスの実装として Java クラスをマーク付けするか、または Web サービス・インターフェースの実装としてサービス・エンドポイント・インターフェース (SEI) をマーク付けします。 重要:
|
|
javax.jws. WebMethod | @WebMethod アノテーションは、Web サービス・オペレーションであるメソッドを示します。
このアノテーションを、クライアントまたはサーバーのサービス・エンドポイント・インターフェース (SEI) またはサーバー・エンドポイント実装クラスのメソッドに適用します。 |
|
javax.jws. Oneway | @Oneway アノテーションは、入力メッセージのみがあり、出力メッセージがない
Web サービスの片方向のオペレーションとしてメソッドを示します。
このアノテーションを、クライアントまたはサーバーのサービス・エンドポイント・インターフェース (SEI) またはサーバー・エンドポイント実装クラスのメソッドに適用します。 |
|
javax.jws. WebParam | @WebParam アノテーションは、Web サービス・メッセージ・パーツおよび
XML エレメントの個々のパラメーターのマッピングをカスタマイズします。
このアノテーションを、クライアントまたはサーバーのサービス・エンドポイント・インターフェース (SEI) またはサーバー・エンドポイント実装クラスのメソッドに適用します。 |
|
javax.jws. WebResult | @WebResult アノテーションは、WSDL パーツまたは XML エレメントへの戻り値のマッピングをカスタマイズします。 このアノテーションを、クライアントまたはサーバーのサービス・エンドポイント・インターフェース (SEI) またはサーバー・エンドポイント実装クラスのメソッドに適用します。 |
|
javax.jws. HandlerChain | @HandlerChain アノテーションは、Web サービスと外部定義されたハンドラー・チェーンを関連付けます。 サービス・エンドポイント・インターフェース (SEI) またはサーバー・エンドポイント実装クラスの @HandlerChain アノテーションを使用することで、サーバー・サイドのハンドラーのみ構成することができます。 クライアント・サイドのハンドラーを構成するいくつかの方法の 1 つを使用します。 生成済みサービス・クラスまたは SEI の @HandlerChain アノテーションを使用することで、クライアント・サイドのハンドラーを構成できます。 さらに、サービスの HandlerResolver インターフェースの実装をプログラム的に登録するか、またはバインディング・オブジェクトのハンドラー・チェーンをプログラム的に設定することができます。 |
|
javax.jws. SOAPBinding | @SOAPBinding アノテーションは、SOAP メッセージ・プロトコルへの
Web サービスのマッピングを指定します。 このアノテーションを、クライアントまたはサーバーであるサービス・エンドポイント・インターフェース (SEI) またはサーバー・エンドポイント実装クラスのタイプまたはメソッドに適用します。 メソッド・レベルのアノテーションは、指定できる対象に制限があり、style プロパティーが DOCUMENT の場合のみ使用されます。メソッド・レベルのアノテーションが指定されていない場合、タイプから @SOAPBinding 動作が使用されます。 |
|
アノテーション・クラス | アノテーション | プロパティー |
---|---|---|
javax.xml.ws. Action | @Action アノテーションで、Web サービス操作に関連付けられた WS-Addressing アクションを指定します。 特定のメソッドと 一緒にこのアノテーションを使用し、対応する WSDL 文書を生成する場合、 WS-Addressing Action 拡張属性が、そのメソッドに対応 する WSDL オペレーションの input エレメントおよび output エレメントに 追加されます。 この属性を WSDL オペレーションに 追加するためには、サーバー・エンドポイント 実装クラスに @Addressing アノテーションを指定することも必要です。@Addressing アノテーションを使用したくない場合は、 Action 属性が既に定義された独自の WSDL 文書を用意することができます。 |
|
javax.xml.ws. BindingType | @BindingType アノテーションは、このタイプのエンドポイントを公開する際に使用するバインディングを指定します。
このアノテーションを、サーバー・エンドポイント実装クラスに適用します。 重要: javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_MTOM_BINDING または javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING のいずれかをアノテーションの値として指定することで、JavaBeans エンドポイント実装クラスの @BindingType アノテーションを使用して、MTOM を使用可能にできます。
|
|
javax.xml.ws. FaultAction | @FaultAction アノテーションは、
障害応答に追加される WS-Addressing アクションを指定します。 この アノテーションは、@Action アノテーション内になければなりません。 特定の メソッドと一緒にこのアノテーションを使用する場合、WS-Addressing FaultAction 拡張属性が、そのメソッドに対応する WSDL オペレーション の fault エレメントに追加されます。 この属性を WSDL オペレーションに 追加するためには、サーバー・エンドポイント 実装クラスに @Addressing アノテーションを指定することも必要です。@Addressing アノテーションを使用したくない場合は、 Action 属性が既に定義された独自の WSDL 文書を用意することができます。 |
|
javax.xml.ws. RequestWrapper | @RequestWrapper アノテーションは、JAXB
で生成された要求ラッパー Bean、エレメント名、およびシリアライゼーションとデシリアライゼーションの名前空間に、ランタイム時に使用される要求ラッパー Bean を提供します。
Java オブジェクトで開始する際、このエレメントは文書リテラル・モードの多重定義の競合を解決するために使用されます。この場合、className 属性のみが必要です。 このアノテーションを、クライアントまたはサーバーのサービス・エンドポイント・インターフェース (SEI) またはサーバー・エンドポイント実装クラスのメソッドに適用します。 |
|
javax.xml.ws. ResponseWrapper | @ResponseWrapper アノテーションは、JAXB
で生成された応答ラッパー Bean、エレメント名、およびシリアライゼーションとデシリアライゼーションの名前空間に、ランタイム時に使用される要求ラッパー Bean を提供します。
Java オブジェクトで開始する際、このエレメントは文書リテラル・モードの多重定義の競合を解決するために使用されます。この場合、className 属性のみが必要です。 このアノテーションを、クライアントまたはサーバーのサービス・エンドポイント・インターフェース (SEI) またはサーバー・エンドポイント実装クラスのメソッドに適用します。 |
|
javax.xml.ws. RespectBinding | @RespectBinding アノテーションは、
JAX-WS 実装がエンドポイントに wsdl:binding の内容を使用
する必要があるかどうかを指定します。 このアノテーションが指定されている場合、 enabled 属性が true に設定されたすべての必要な WSDL 拡張性エレメントが サポートされていることを確認する検査が 実行されます。 このアノテーションを、サーバーのエンドポイント実装クラスのメソッドに適用します。 |
|
javax.xml.ws. ServiceMode | @ServiceMode アノテーションは、サービス・プロバイダーにプロトコル・メッセージ全体へのアクセスが必要か、またはメッセージ・ペイロードのみが必要かを指定します。
重要: @ServiceMode アノテーションは、@WebServiceProvider アノテーションでアノテーションを付けられるクラスでのみサポートされます。
|
|
javax.xml.ws. soap.Addressing | @Addressing アノテーション
は、このサービスが WS-Addressing サポートを使用可能にすることを指定します。 このアノテーションを、サーバーのエンドポイント実装クラスのメソッドに適用します。 |
|
javax.xml.ws. soap.MTOM | @MTOM アノテーションは、
SOAP メッセージ本体内のバイナリー・コンテンツが MTOM を使用して送信されるかどうかを指定します。 このアノテーションを、サービス・エンドポイント実装クラスに適用します。 |
|
javax.xml.ws. WebFault | @WebFault アノテーションは、WSDL 障害を
Java 例外にマップします。
これは、WSDL
障害メッセージが参照したグローバル・エレメントから生成された
JAXB タイプのシリアライゼーション中に、障害の名前を取り込むために使用されます。
これは、WSDL 障害に対するサービス固有の例外のマッピングをカスタマイズするのにも使用できます。
このアノテーションは、クライアントまたはサーバーの障害実装クラスにも適用されます。 |
|
javax.xml.ws. WebServiceProvider | @WebServiceProvider アノテーションは、JAX-WS プロバイダー実装クラスの要求を満たすクラスを示します。
重要:
|
|
javax.xml.ws. WebServiceRef | @WebServiceRef アノテーションは、クライアントによって呼び出される Web サービスへの参照を定義します。 注:
|
|
javax.xml.ws. WebServiceRefs | @WebServiceRefs アノテーションは、複数の @WebServiceRef アノテーションを特定のクラスに関連付けます。 注: @WebServiceRef アノテーションは、特定のクラス・タイプでのみサポートされます。
例えば、JAX-WS エンドポイント実装
クラス、JAX-WS ハンドラー・クラス、Enterprise JavaBeans クラス、およびサーブレット・クラスです。
このアノテーションは、@Resource アノテーションと同じクラス・タイプで
サポートされます。サポートされるクラス・タイプの完全なリストについては、Java Platform,
Enterprise Edition (Java EE)
5 仕様を参照してください。
|
|
アノテーション・クラス | アノテーション | プロパティー |
---|---|---|
javax.annotation. Resource | @Resource アノテーションは、アプリケーションに必要な WebServiceContext リソースにマークを付けます。
注:
このアノテーションを、JavaBeans エンドポイント またはプロバイダー・エンドポイントのサーバー・エンドポイント実装クラスの WebServiceContext タイプのフィールドに適用すると、 その結果として、指定されたフィールドに、WebServiceContext のインスタンスがコンテナーにより注入 されます。 このアノテーション が @WebServiceRef アノテーションの代わりに使用された場合、 @WebServiceRef アノテーションに関して記述されたルールが当てはまります。 |
|
javax.annotation. Resources | @Resources アノテーションは、複数の @Resource アノテーションを特定のクラスに関連付け、複数のリソース宣言のコンテナーの働きをします。 |
|
javax.annotation. PostConstruct | @PostConstruct アノテーションは、クラスで依存性注入された後に実行する必要のあるメソッドにマークを付けます。
このアノテーションを、JAX-WS アプリケーション・ハンドラー、サーバー・エンドポイント実装クラスに適用します。 |
|
javax.annotation. PreDestroy | @PreDestroy アノテーションは、コンテナーによりインスタンスが除去されるプロセスにあるときに実行する必要のあるメソッドにマークを付けます。
このアノテーションを、JAX-WS アプリケーション・ハンドラーまたはサーバー・エンドポイント実装クラスに適用します。 |
|
アノテーション・クラス | アノテーション | プロパティー |
---|---|---|
com.ibm.websphere. wsaddressing. jaxws21. SubmissionAddressing | @SubmissionAddressing アノテーション
は、このサービスが 2004/08 WS-Addressing 仕様の WS-Addressing サポートを使用可能にすることを
指定します。 このアノテーションは、 JAX-WS 2.1 仕様の IBM 実装の 一部です。 このアノテーションを、サーバーのエンドポイント実装クラスのメソッドに適用します。 |
|