Oracle® Fusion Middleware Oracle WebLogic Server WebLogic Webサービス・リファレンス 11gリリース1 (10.3.6) B61641-04 |
|
![]() 前 |
![]() 次 |
この章では、WebLogic固有のJWSアノテーションに関するリファレンスを提供します。
この章では、以下のトピックについて説明します。
WebLogic Webサービスのプログラミング・モデルでは、JDK 5.0メタデータ・アノテーション機能(http://www.jcp.org/en/jsr/detail?id=175
JSR-175による仕様)を採用しています。このプログラミング・モデルでは、アノテーション付きのJavaファイルを作成し、Antタスクを使用してそのファイルをJavaクラスにコンパイルし、関連するアーティファクトをすべて生成します。
アノテーション付きのJava Webサービス(JWS)ファイルは、Webサービスの中核部分です。このファイルにはWebサービスの動作を決定するJavaコードが含まれています。JWSファイルは、アノテーションを使用してWebサービスの形式や特性を指定した、通常のJavaクラス・ファイルです。
サポートされるJWSアノテーションは、JAX-WSを作成しているか、JAX-RPC Webサービスを作成しているかによって異なります。次の表は、JAX-WSとJAX-RPCにおけるWebサービスのアノテーション・サポートの比較を示しています。
JWSアノテーションは、JWSファイルのクラス、メソッド、またはパラメータのいずれかのレベルでターゲット指定できます。アノテーションの中には、複数のレベルでターゲット指定できるものもあります。たとえば、@SecurityRoles
は、クラスとメソッドの両方のレベルでターゲット指定できます。
次に、標準JSR-181(太字で表示)を使用した簡単なJWSファイルの例を挙げます。
package examples.webservices.complex; // Import the standard JWS annotation interfaces import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; // Import the BasicStruct JavaBean import examples.webservices.complex.BasicStruct; // Standard JWS annotation that specifies that the portType name of the Web // Service is "ComplexPortType", its public service name is "ComplexService", // and the targetNamespace used in the generated WSDL is "http://example.org" @WebService(serviceName="ComplexService", name="ComplexPortType", targetNamespace="http://example.org") // Standard JWS annotation that specifies this is a document-literal-wrapped // Web Service @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.WRAPPED) /** * This JWS file forms the basis of a WebLogic Web Service. The Web Services * has two public operations: * * - echoInt(int) * - echoComplexType(BasicStruct) * * The Web Service is defined as a "document-literal" service, which means * that the SOAP messages have a single part referencing an XML Schema element * that defines the entire body. * */ public class ComplexImpl { // Standard JWS annotation that specifies that the method should be exposed // as a public operation. Because the annotation does not include the // member-value "operationName", the public name of the operation is the // same as the method name: echoInt. // // The WebResult annotation specifies that the name of the result of the // operation in the generated WSDL is "IntegerOutput", rather than the // default name "return". The WebParam annotation specifies that the input // parameter name in the WSDL file is "IntegerInput" rather than the Java // name of the parameter, "input". @WebMethod() @WebResult(name="IntegerOutput", targetNamespace="http://example.org/complex") public int echoInt( @WebParam(name="IntegerInput", targetNamespace="http://example.org/complex") int input) { System.out.println("echoInt '" + input + "' to you too!"); return input; } // Standard JWS annotation to expose method "echoStruct" as a public operation // called "echoComplexType" // The WebResult annotation specifies that the name of the result of the // operation in the generated WSDL is "EchoStructReturnMessage", // rather than the default name "return". @WebMethod(operationName="echoComplexType") @WebResult(name="EchoStructReturnMessage", targetNamespace="http://example.org/complex") public BasicStruct echoStruct(BasicStruct struct) { System.out.println("echoComplexType called"); return struct; } }
次の項では、サポートされるJWSアノテーションについて説明します。
次の表は、Webサービスの形態と動作を指定するためにJWSファイルで使用できる標準JSR-181アノテーションをまとめたものです。これらの各アノテーションは、javax.jws
(http://download.oracle.com/javaee/6/api/javax/jws/package-summary.html
)またはjavax.jws.soap
パッケージ(http://download.oracle.com/javaee/6/api/javax/jws/soap/package-summary.html
)を使用することで利用できます。詳細は、Web Services Metadata for the Java Platform (JSR-181)仕様(http://www.jcp.org/en/jsr/detail?id=181
)を参照してください。
表3-2 標準JSR-181 JWSアノテーション
アノテーション | 説明 |
---|---|
javax.jws.WebService |
クラス・レベルでJWSファイルがWebサービスを実装することを指定します。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』または『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のJWSファイルがWebサービスを実装することの指定( |
javax.jws.WebMethod |
JWSファイルのメソッドをWebサービスのパブリック操作として公開することを指定します。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』または『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のJWSメソッドをパブリック操作として公開することの指定( |
javax.jws.OneWay |
操作が呼出し側アプリケーションに値を戻さないことを指定します。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』または『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のJWSメソッドをパブリック操作として公開することの指定( |
javax.jws.WebParam |
Webサービス操作の入力パラメータと生成されたWSDLファイルの要素のマッピング、およびパラメータの動作を指定します。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』または『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』の操作のパラメータとWSDL要素のマッピングのカスタマイズ(@WebParamアノテーション)に関する項を参照してください。 |
javax.jws.WebResult |
Webサービス操作の戻り値と生成されたWSDLファイルの対応する要素のマッピングを指定します。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』または『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』の操作の戻り値とWSDL要素のマッピングのカスタマイズ( |
javax.jws.HandlerChain |
外部ハンドラ・チェーンを指定します。詳細は、『Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング』または『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のSOAPメッセージ・ハンドラの作成と使用に関する項を参照してください。 |
javax.jws.soap.SOAPBinding |
クラス・レベルでWebサービスのSOAPバインディング( |
注意: JAX-WS JWSアノテーションは、JAX-WS Webサービスにのみ関連します。この項の内容は、JAX-RPC Webサービスには適用されません。 |
次の表は、Webサービスの形態と動作を指定するためにJWSファイルで使用できるJAX-WS (JSR-224)アノテーションをまとめたものです。これらの各アノテーションは、javax.xml.wsパッケージ(http://download.oracle.com/javaee/6/api/javax/xml/ws/package-summary.html
)を使用することで利用できます。詳細は、「JAX-WS 2.1 Annotations」(http://jax-ws.java.net/nonav/2.1.4/docs/annotations.html
)を参照してください。
表3-3 JAX-WS (JSR-244)アノテーション
アノテーション | 説明 |
---|---|
javax.xml.ws.Action |
WS-Addressing |
javax.xml.ws.BindingType |
Webサービスの実装クラスに使用するバインディングを指定します。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のエンドポイントに使用するバインディング・タイプの指定(@BindingTypeアノテーション)に関する項を参照してください。 |
javax.xml.ws.FaultAction |
WS-Addressing |
javax.xml.ws.RequestWrapper |
実行時にエンドポイント・インタフェースのメソッドに使用されるリクエスト・ラッパーBeanを指定します。 |
javax.xml.ws.ResponseWrapper |
実行時にエンドポイント・インタフェースのメソッドに使用されるレスポンス・ラッパーBeanを指定します。 |
javax.xml.ws.ServiceMode |
プロバイダ実装がプロトコル・メッセージ全体を対象とするのか、ペイロードのみを対象にするのかを指定します。 |
javax.xml.ws.WebEndpoint |
生成されたサービス・インタフェースの |
javax.xml.ws.WebFault |
フォールト要素のローカルおよびネームスペース名、フォールトBeanの名前をそれぞれカスタマイズするためのサーバー固有の例外クラスを指定します。 |
javax.xml.ws.WebServiceClient |
生成されたサービス・インタフェースを指定します。 |
javax.xml.ws.WebServiceProvider |
プロバイダ実装クラスを指定します。 |
javax.xml.ws.WebServiceRef |
Webサービスへの参照を指定します。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』の@WebServiceRefアノテーションを使用したWebサービス参照の定義に関する項を参照してください。 |
注意: JAXB JWSアノテーションは、JAX-WS Webサービスにのみ関連します。この項の内容は、JAX-RPC Webサービスには適用されません。 |
JAXB (JSR-222)(http://jcp.org/en/jsr/detail?id=222
)仕様は、Webサービスの形態と動作を指定するためにJWSファイルで使用可能なJAXBアノテーションを定義しています。次の表は、JAXBアノテーションをまとめたものです。これらの各アノテーションは、javax.xml.bind.annotation
パッケージ(http://download.oracle.com/javaee/6/api/javax/xml/bind/annotation/package-summary.html
)を使用することで利用できます。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のJAXBアノテーションを使用したJava-to-XMLスキーマ・マッピングのカスタマイズに関する項またはJAXB (JSR-222)仕様(http://jcp.org/en/jsr/detail?id=222
)を参照してください。
表3-4 JAXBマッピング・アノテーション(JSR-222)
アノテーション | 説明 |
---|---|
java.xml.bind.annotation.XmlAccessorType |
デフォルトでフィールドまたはプロパティをシリアライズするかどうかを指定します。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のフィールドおよびプロパティのデフォルト・シリアライゼーションの指定(@XmlAccessorType)に関する項を参照してください。 |
java.xml.bind.annotation.XmlElement |
クラスに格納されているプロパティを、格納しているクラスがマップされているXMLスキーマの複合型のローカル要素へマップすることを指定します。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のプロパティとローカル要素のマッピング(@XmlElement)に関する項を参照してください。 |
java.xml.bind.annotation.XmlRootElement |
WebサービスのWSDLによって使用されるXMLスキーマのグローバル要素に最上位クラスをマップすることを指定します。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』の最上位クラスとグローバル要素のマッピング(@XmlRootElement)に関する項を参照してください。 |
java.xml.bind.annotation.XmlSeeAlso |
現在のクラスをバインドするときにバインドする他のクラスを指定します。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』の複数のクラスのバインディング(@XmlSeeAlso)に関する項を参照してください。 |
java.xml.bind.annotation.XmlType |
クラス型または列挙型をXMLスキーマ型にマップすることを指定します。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』の値クラスとスキーマ型のマッピング(@XmlType)に関する項を参照してください。 |
次の表は、Webサービスの形態と動作を指定するためにJWSファイルで使用可能なJAX-WS (JSR-250)アノテーションをまとめたものです。
これらの各アノテーションは、javax.annotation
パッケージ(http://download.oracle.com/javaee/6/api/javax/annotation/package-summary.html
)を使用することで利用できます。詳細は、Common Annotations for the Java Platform(JSR-250)(http://jcp.org/en/jsr/detail?id=250
)仕様を参照してください。
表3-5 共通アノテーション(JSR-250)
アノテーション | 説明 |
---|---|
javax.annotation.Resource |
アプリケーションが必要とするリソースを指定します。アノテーションは、アプリケーション・コンポーネント・クラス、コンポーネント・クラスのフィールドまたはメソッドに適用できます。 |
javax.annotation.PostConstruct |
依存関係インジェクションが完了した後に、初期化を実行するために呼び出す必要のあるメソッドを指定します。 |
javax.annotation.PreDestroy |
コンテナがインスタンスを削除しようとしていることを知らせるコールバック通知を受信するメソッドを指定します。 |
WebLogic Webサービスでは、JSR-181の標準JWSアノテーションに加え、さらに動作と機能を指定するのに使用できるJWSアノテーションのセットが定義されます。次の表は、WebLogic固有のアノテーションをまとめたものです。JAX-WSまたはJAX-RPCでサポートされるかどうかを示しています(ほとんどのアノテーションはJAX-RPCでのみサポートされます)。各アノテーションの詳細については、後の節で説明します。
表3-6 WebLogic固有のアノテーション
アノテーション | 説明 | JAX-WS/JAX-RPC/両方 |
---|---|---|
|
メインJWSファイルが別のWebサービス操作を非同期的に呼び出したときに発生する可能性のある障害を処理するメソッドを指定します。 |
JAX-RPC |
|
メインJWSファイルが別のWebサービス操作を非同期的に呼び出したときのレスポンスを処理するメソッドを指定します。 |
JAX-RPC |
|
SOAP (Simple Object Access Protocol)メッセージの送受信時に、WebサービスでSOAP実装のバージョン1.1を使うのか、バージョン1.2を使うのかを指定します。 |
JAX-RPC |
|
JMSキューのJNDI名を指定します。WebLogic Serverは、それに対して以下の操作を行います。
|
JAX-RPC |
|
アノテーション付き変数がコールバックであることを指定します。つまり、アノテーション付き変数を使って、ターゲットのWebサービス操作を呼び出したクライアントWebサービスにコールバック・イベントを返送できます。 |
JAX-RPC |
|
コールバックWebサービスから受け取るメッセージを処理する、クライアントWebサービスのメソッドを指定します。 |
JAX-RPC |
|
JWSファイルが実際に、コールバックWebサービスを記述するJavaインタフェースであることを指定します。 |
JAX-RPC |
|
アノテートされたフィールドがWebサービスの実行時コンテキストへのアクセスを提供するように指定します。 |
JAX-RPC |
|
|
JAX-RPC |
|
JWSファイルが会話形式のWebサービスを実装するように指定します。 |
JAX-RPC |
|
会話状態などの内部状態情報の格納に、WebLogic Serverのデフォルト・ファイル・ストアではなく、プログラマ指定のファイル・ストアを使用することを指定します。 |
JAX-RPC |
|
JWSのどのパブリック・メソッドがバッファされるかを指定します。クラス・レベルで指定した場合、すべてのパブリック・メソッドがバッファされます。一部のメソッドのみバッファする場合、適切なメソッド・レベルでアノテーションを指定します。 |
JAX-RPC |
|
|
両方 |
|
デジタル署名、暗号化、またはWebサービスの信頼性のあるメッセージングに関する情報を格納しているWS-PolicyファイルをリクエストまたはレスポンスSOAPメッセージに適用するように指定します。 |
両方 |
weblogic.jws.ReliabilityBuffer |
WebLogic ServerによるJMSキューからWebサービス実装へのメッセージ配信試行回数、およびサーバーが待機すべき再試行間隔など、信頼性のあるWebサービス操作に対する信頼性のあるメッセージングのプロパティを指定します。 |
JAX-RPC |
weblogic.jws.ReliabilityErrorHandler |
クライアントWebサービスが信頼性のあるWebサービスを呼び出したが、信頼性のあるWebサービスが実際にそのメッセージを受け取ったという確認応答をそのクライアントが受信しなかった場合に発生するエラーを処理するメソッドを指定します。 |
JAX-RPC |
|
JWSファイルのアノテーション付き変数が、以下の機能を使用するときに、別のWebLogic Webサービスを呼び出すスタブであることを指定します。
|
JAX-RPC |
weblogic.jws.StreamAttachments |
WebLogic Webサービス・ランタイムで、Webサービスのすべてのメソッド・パラメータを読み込む際にStreaming APIを使用するように指定します。 |
JAX-RPC |
|
アノテーション付きの操作、またはアノテーションがクラス・レベルで指定されている場合はJWSファイルのすべての操作がトランザクション内で実行されるかどうかを指定します。 |
JAX-RPC |
|
戻り値またはパラメータの代替データ型の完全修飾Javaクラス名のカンマ区切りリストを指定します。 |
JAX-RPC |
|
|
JAX-RPC |
|
|
JAX-RPC |
|
生成されたWSDLのポート名に加え、HTTPトランスポート形式でWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションを指定します。 |
JAX-RPC |
|
生成されたWSDLのポート名に加え、HTTPSトランスポート形式でWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションを指定します。 |
JAX-RPC |
|
生成されたWSDLのポート名に加え、JMSトランスポート形式でWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションを指定します。 |
JAX-RPC |
|
デプロイされたWebLogic WebサービスのWSDLを公開するかどうかを指定します。 |
JAX-RPC |
weblogic.jws.security.CallbackRolesAllowed |
Webサービスのコールバック・メソッドを呼び出す許可を与えられたロールをリストする |
JAX-RPC |
weblogic.jws.security.RolesAllowed |
Webサービスの基本認証を有効にするかどうかを指定します。 |
JAX-RPC |
weblogic.jws.security.RolesReferenced |
Webサービスの呼出しが許可されている実際のロールを参照する、ロール名のリストを指定します。 |
JAX-RPC |
|
WebLogic Server内のWebサービスを実際に実行するロールおよびユーザーIDを指定します。 |
JAX-RPC |
weblogic.jws.security.SecurityRole |
Webサービスの呼出しを許可されているロールの名前を指定します。 |
JAX-RPC |
weblogic.jws.security.SecurityRoleRef |
Webサービスの呼出しを許可されている、指定済みのロールにリンクするロール名参照を指定します。 |
JAX-RPC |
weblogic.jws.security.UserDataConstraint |
クライアントがWebサービスを呼び出す際に、HTTPSトランスポートの使用が必要であるかどうかを指定します。 |
JAX-RPC |
weblogic.jws.security.WssConfiguration |
Webサービスで使用するWebサービス・セキュリティ構成の名前を指定します。 |
両方 |
|
SOAPメッセージ・プロトコルに対するWebサービス操作のマッピングを指定します。 |
JAX-RPC |
weblogic.jws.security.SecurityRoles (非推奨) |
Webサービス操作にアクセスできるロールを指定します。 |
JAX-RPC |
weblogic.jws.security.SecurityIdentity (非推奨) |
呼び出されたWebサービスが前提とするIDを指定します。 |
JAX-RPC |
weblogic.wsee.jws.jaxws.owsm.SecurityPolicies |
|
JAX-WS |
weblogic.wsee.jws.jaxws.owsm.SecurityPolicy |
デジタル署名または暗号化に関する情報を格納しているOracle Web Services Manager (Oracle WSM) WS-PolicyファイルをリクエストまたはレスポンスSOAPメッセージに適用するように指定します。 |
JAX-WS |
weblogic.wsee.wstx.wsat.Transactional |
アノテーション付きのクラスまたはメソッドをWebサービス原子性トランザクション内で実行するかどうかを指定します。 |
JAX-WS |
以降の項では、アノテーションを詳細に説明します。
ターゲット:メソッド
メインJWSファイルが別のWebサービス操作を非同期的に呼び出したときに発生する可能性のある障害を処理するメソッドを指定します。
JWSファイルの内部からWebサービス操作を非同期的に呼び出すと、レスポンス(または障害の場合は例外)は、操作呼出しの直後ではなく、多少遅れて返されます。操作呼出しはレスポンスを待たないので、JWSファイル内の別のメソッドは、レスポンスが返された時点でそのレスポンスを処理する必要があります。同様に、さらに別のメソッドは障害を処理する必要があります。@AsyncFailure
アノテーションは、非同期操作呼出しによって発生する可能性がある障害を処理する、JWSファイル内のメソッドを指定するために使用します。
@AsyncFailure
アノテーションは、呼出し対象となるWebサービスのスタブの名前と、非同期的に呼び出す操作の名前の2つのパラメータを取ります。スタブは、@ServiceClient
アノテーションが付けられているスタブです。
非同期障害を処理するメソッドは、以下のガイドラインに従う必要があります。
void
を返します。
on
MethodName
AsyncFailure
という名前が付けられています。このうち、MethodName
は、非同期的に呼び出すメソッドの名前(先頭の文字は常に大文字)です。
メインJWSファイルで、非同期メソッドの呼出しは次のような形式になります。
port.getQuoteAsync (apc, symbol);
getQuote
はメソッドの非同期名ではない名前、apc
は非同期呼出し前のコンテキスト、symbol
はgetQuote
操作に対する標準的なパラメータです。
非同期呼出し後のコンテキスト(weblogic.wsee.async.AsyncPostCallContext
オブジェクトに格納)、および非同期操作呼出しでスローされる可能性があるThrowable
例外の2つのパラメータを持っています。
メソッド自体の内部では、コンテキストからメソッド障害に関する詳細を入手し、特定の型の障害を問い合わせ、それに従って処理を実行できます。
通常、非同期操作障害を処理するメソッドを明示的に指定する場合は、必ず@AsyncFailure
アノテーションを使用します。このアノテーションを使用しない唯一のケースは、単一のメソッドで、別のWebサービスを呼び出す複数のスタブの障害を処理する場合です。この場合、スタブは別のWebサービスに接続しますが、Webサービス・ランタイムは、アノテーションではなくメソッドの名前を基に(on
MethodNameAsyncFailure
)非同期障害の処理方法を判別するので、各Webサービスは、名前が似ているメソッドを持っている必要があります。ただし、操作のいずれか1つから非同期障害を処理するメソッドとスタブとの間に必ず1対1の対応が必要な場合は、
@AsyncFailure
を明示的に使用することをお薦めします。
このアノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の非同期のリクエストとレスポンスを使用したWebサービスの呼出しに関する項を参照してください。
表3-7 weblogic.jws.AsyncFailure JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
target |
操作を非同期的に呼び出すWebサービスのスタブの名前。 スタブは、 |
String |
はい |
operation |
非同期的に呼び出す操作の名前。 この名前は、WSDLファイルで示されている操作の実際の名前です。JWSファイルのメイン・コードでこの操作を呼び出すときに、その操作名に たとえば、 port.getQuoteAsync (apc, symbol); |
String |
はい |
以下のサンプル・スニペットでは、別のWebサービス操作を非同期的に呼び出す、JWSファイル内の@AsyncFailure
アノテーションの使い方を示します。ここでは、関連するJavaコードのみを示します。
package examples.webservices.async_req_res; ... public class StockQuoteClientImpl { @ServiceClient(wsdlLocation="http://localhost:7001/async/StockQuote?WSDL", serviceName="StockQuoteService", portName="StockQuote") private StockQuotePortType port; @WebMethodpublic void getQuote (String symbol) { AsyncPreCallContext apc = AsyncCallContextFactory.getAsyncPreCallContext(); apc.setProperty("symbol", symbol); try { port.getQuoteAsync(apc, symbol ); System.out.println("in getQuote method of StockQuoteClient WS"); } catch (RemoteException e) { e.printStackTrace(); } } ... @AsyncFailure(target="port", operation="getQuote") public void onGetQuoteAsyncFailure(AsyncPostCallContext apc, Throwable e) { System.out.println("-------------------"); e.printStackTrace(); System.out.println("-------------------"); } }
この例では、port
というスタブが、http://localhost:7001/async/StockQuote
にあるWebサービスを呼び出すために使用されています。getQuote
操作が非同期的に呼び出され、この呼出しで例外が発生すると、@AsyncFailure
アノテーションで指定されているonGetQuoteAsyncFailure
メソッドによって処理されます。
以降の項では、アノテーションを詳細に説明します。
ターゲット:メソッド
メインJWSファイルが別のWebサービス操作を非同期的に呼び出したときのレスポンスを処理するメソッドを指定します。
JWSファイルの内部からWebサービス操作を非同期的に呼び出すと、レスポンスは、操作呼出しの直後ではなく、多少遅れて返されます。操作呼出しはレスポンスを待たないので、JWSファイル内の別のメソッドは、レスポンスが最終的に返された時点でそのレスポンスを処理する必要があります。@AsyncResponse
アノテーションは、非同期操作呼出しのレスポンスを処理する、JWSファイル内のメソッドを指定するために使用します。
@AsyncResponse
アノテーションは、呼出し対象となるWebサービスのスタブの名前と、非同期的に呼び出す操作の名前の2つのパラメータを取ります。スタブは、@ServiceClient
アノテーションが付けられているスタブです。
非同期レスポンスを処理するメソッドは、以下のガイドラインに従う必要があります。
void
を返します。
On
MethodName
AsyncResponse
という名前が付けられています。このうち、MethodName
は、非同期的に呼び出すメソッドの名前(先頭の文字は常に大文字)です。
メインJWSファイルで、非同期メソッドの呼出しは次のような形式になります。
port.getQuoteAsync (apc, symbol);
getQuote
はメソッドの非同期名ではない名前、apc
は非同期呼出し前のコンテキスト、symbol
はgetQuote
操作に対する標準的なパラメータです。
非同期呼出し後のコンテキスト(weblogic.wsee.async.AsyncPostCallContext
オブジェクトに格納)、および操作の通常の戻り値の2つのパラメータを持っています。
非同期レスポンス・メソッド自体の内部では、レスポンスを処理するコードを追加します。また、コンテキストからメソッド呼出しに関する詳細を入手できます。
通常、非同期操作レスポンスを処理するメソッドを明示的に指定する場合は、必ず@AsyncResponse
アノテーションを使用します。このアノテーションを使用しない唯一のケースは、単一のメソッドで、別のWebサービスを呼び出す複数のスタブのレスポンスを処理する場合です。この場合、スタブは別のWebサービスに接続しますが、Webサービス・ランタイムは、アノテーションではなくメソッドの名前を基に(on
MethodNameAsyncResponse
)非同期レスポンスの処理方法を判別するので、各Webサービスは、名前が似ているメソッドを持っている必要があります。ただし、操作のいずれか1つから非同期レスポンスを処理するメソッドとスタブとの間に必ず1対1の対応が必要な場合は、
@AsyncResponse
を明示的に使用することをお薦めします。
このアノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の非同期のリクエストとレスポンスを使用したWebサービスの呼出しに関する項を参照してください。
表3-8 weblogic.jws.AsyncResponse JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
target |
操作を非同期的に呼び出すWebサービスのスタブの名前。 スタブは、 |
String |
はい |
operation |
非同期的に呼び出す操作の名前。 この名前は、WSDLファイルで示されている操作の実際の名前です。JWSファイルのメイン・コードでこの操作を呼び出すときに、その操作名に たとえば、 port.getQuoteAsync (apc, symbol); |
String |
はい |
以下のサンプル・スニペットでは、別のWebサービス操作を非同期的に呼び出す、JWSファイル内の@AsyncResponse
アノテーションの使い方を示します。ここでは、関連するJavaコードのみを示します。
package examples.webservices.async_req_res; ... public class StockQuoteClientImpl { @ServiceClient(wsdlLocation="http://localhost:7001/async/StockQuote?WSDL", serviceName="StockQuoteService", portName="StockQuote") private StockQuotePortType port; @WebMethodpublic void getQuote (String symbol) { AsyncPreCallContext apc = AsyncCallContextFactory.getAsyncPreCallContext(); apc.setProperty("symbol", symbol); try { port.getQuoteAsync(apc, symbol ); System.out.println("in getQuote method of StockQuoteClient WS"); } catch (RemoteException e) { e.printStackTrace(); } } ... @AsyncResponse(target="port", operation="getQuote") public void onGetQuoteAsyncResponse(AsyncPostCallContext apc, int quote) { System.out.println("-------------------"); System.out.println("Got quote " + quote ); System.out.println("-------------------"); } }
この例では、port
というスタブが、http://localhost:7001/async/StockQuote
にあるWebサービスを呼び出すために使用されています。getQuote
操作が非同期的に呼び出され、この呼出しに対するレスポンスは、@AsyncResponse
アノテーションで指定されているonGetQuoteAsyncResponse
メソッドによって処理されます。
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
SOAP (Simple Object Access Protocol)メッセージの送受信時に、WebサービスでSOAP実装のバージョン1.1を使うのか、バージョン1.2を使うのかを指定します。デフォルトでは、WebLogic WebサービスはSOAP 1.1を使用します。
次に、SOAP 1.2を指定する例を示します(関連するコードのみ示されています)。
package examples.webservices.soap12; ... import javax.jws.WebMethod; import javax.jws.WebService; import weblogic.jws.Binding; @WebService(name="SOAP12PortType", serviceName="SOAP12Service", targetNamespace="http://example.org") @Binding(Binding.Type.SOAP12) public class SOAP12Impl { @WebMethod() public String sayHello(String message) { ... } }
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
JMSキューのJNDI名を指定します。WebLogic Serverは、それに対して以下の操作を行います。
バッファ付きWebサービス操作の呼出しを格納します。
信頼性のあるWebサービス操作の呼出しを格納します。
バッファ付きWebサービスで使用する場合、このアノテーションは、バッファリングされたJWSのメソッドを指定する@MessageBuffer
と組み合せて使用します。信頼性のあるWebサービスで使用する場合、このアノテーションは、Webサービスに関連付けられた、信頼性のあるメッセージングWS-Policyファイルを指定する@Policy
と組み合せて使用します。
Webサービスに対してバッファ付きまたは信頼性のあるメッセージングを有効にしているが、@BuffereQueue
アノテーションを指定していない場合、WebLogic Serverは、デフォルトのWebサービスJMSキュー(weblogic.wsee.DefaultQueue
)を使用して、バッファ付きまたは信頼性のある操作の呼出しを格納します。このJMSキューは、JMSトランスポート機能のデフォルト・キューでもあります。これらの機能のいずれかに対してこのJMSキューを使用する場合は、JMSキューをあらかじめ作成していることが前提となります。
バッファ付きまたは信頼性のあるWebサービスの作成の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のバッファ付きWebサービスの作成に関する項とWebサービスの信頼性のあるメッセージングの使用に関する項を参照してください。
以下の例では、JWSファイルのコード・スニペットを示します。ここでは、パブリック操作がバッファ付きで、WebLogic Serverが操作の呼出しを入れているJMSキューがmy.buffere.queue
と呼ばれています。関連するJavaコードのみを示します。
package examples.webservices.buffered; ... @WebService(name="BufferedPortType", serviceName="BufferedService", targetNamespace="http://example.org") @BufferQueue(name="my.buffer.queue") public class BufferedImpl { ... @WebMethod() @MessageBuffer(retryCount=10, retryDelay="10 seconds") @Oneway() public void sayHelloNoReturn(String message) { System.out.println("sayHelloNoReturn: " + message); } }
以降の項では、アノテーションを詳細に説明します。
ターゲット: フィールド
アノテーション付き変数がコールバックであることを指定します。つまり、アノテーション付き変数を使って、ターゲットWebサービス操作を呼び出したクライアントWebサービスにコールバック・イベントを返送できます。
ターゲットWebサービスにおいて@Callback
アノテーションを指定すると、クライアントWebサービスにコールバックできます。アノテーション付き変数のデータ型は、コールバック・インタフェースです。
コールバック機能は、2つのWebLogic Webサービス間で機能します。ただし、この機能をプログラミングする際、次の3つのJavaファイルを作成します。
コールバック・インタフェース :コールバック・メソッドを定義するJavaインタフェース・ファイル。このファイルは、明示的に実装するのではなく、jwsc
Antタスクによってこのインタフェースの実装が自動的に生成されます。この実装によって、ターゲットWebサービスからクライアントWebサービスにメッセージが返送されます。生成されたWebサービスは、クライアントWebサービスをホストする同じWebLogic Serverにデプロイされます。
ターゲットWebサービスを実装するJWSファイル :ターゲットWebサービスには、コールバック・インタフェースで定義されたメソッドを呼び出す1つまたは複数の標準操作が含まれます。このメソッドによって、ターゲットWebサービス操作の呼出し元のクライアントWebサービスにメッセージが返送されます。
クライアントWebサービスを実装するJWSファイル :クライアントWebサービスは、ターゲットWebサービス操作を呼び出します。このWebサービスには、コールバック・メソッドを介してターゲットWebサービスからコールバック・メッセージを受け取ったときに、クライアントが実行すべき動作を指定する1つまたは複数のメソッドが含まれます。
コールバックのプログラミングの詳細および手順は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のコールバックによるクライアントへのイベントの通知に関する項を参照してください。
@Callback
アノテーションには、属性はありません。
次に、callback
という変数に@Callback
アノテーションを付けた非常に簡単なターゲットWebサービスの例を示します。この変数のデータ型はCallbackInterface
で、これは、コールバックWebサービスがこの名前で存在する必要があることを意味します。変数にコールバック情報が注入された後で、CallbackInterface
で定義されているコールバック・メソッドを呼び出すことができます。この例では、callbackOperation()
がコールバック・メソッドです。
関連コードは、太字で示しています。
package examples.webservices.callback; import weblogic.jws.WLHttpTransport; import weblogic.jws.Callback; import javax.jws.WebService; import javax.jws.WebMethod; @WebService(name="CallbackPortType", serviceName="TargetService", targetNamespace="http://examples.org/") @WLHttpTransport(contextPath="callback", serviceUri="TargetService", portName="TargetServicePort") public class TargetServiceImpl { @Callback CallbackInterface callback; @WebMethod public void targetOperation (String message) { callback.callbackOperation (message); } }
以降の項では、アノテーションを詳細に説明します。
ターゲット:メソッド
コールバックWebサービスから受け取るメッセージを処理する、クライアントWebサービスのメソッドを指定します。この属性を使うと、クライアントWebサービス内のコールバック・メッセージ・ハンドラ・メソッドと、コールバック・インタフェース内のコールバック・メソッドをリンクできます。
コールバック機能は、2つのWebLogic Webサービス間で機能します。ただし、この機能をプログラミングする際、次の3つのJavaファイルを作成します。
コールバック・インタフェース :コールバック・メソッドを定義するJavaインタフェース・ファイル。このファイルは、明示的に実装するのではなく、jwsc
Antタスクによってこのインタフェースの実装が自動的に生成されます。この実装によって、ターゲットWebサービスからクライアントWebサービスにメッセージが返送されます。生成されたWebサービスは、クライアントWebサービスをホストする同じWebLogic Serverにデプロイされます。
ターゲットWebサービスを実装するJWSファイル :ターゲットWebサービスには、コールバック・インタフェースで定義されたメソッドを呼び出す1つまたは複数の標準操作が含まれます。このメソッドによって、ターゲットWebサービス操作の呼出し元のクライアントWebサービスにメッセージが返送されます。
クライアントWebサービスを実装するJWSファイル :クライアントWebサービスは、ターゲットWebサービス操作を呼び出します。このWebサービスには、コールバック・メソッドを介してターゲットWebサービスからコールバック・メッセージを受け取ったときに、クライアントが実行すべき動作を指定する1つまたは複数のメソッドが含まれます。
コールバックのプログラミングの詳細および手順は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のコールバックによるクライアントへのイベントの通知に関する項を参照してください。
次に、@CallbackMethod
アノテーションが付けられているクライアントWebサービスのメソッドを示します。この属性では、port
という変数に前もってスタブ情報が注入されていること、およびアノテーション付きメソッドがcallbackOperation()
というコールバック操作から受信したメッセージを処理することが示されています。
@CallbackMethod(target="port", operation="callbackOperation")
@CallbackRolesAllowed(@SecurityRole(role="engineer", mapToPrincipals="shackell"))
public void callbackHandler(String msg) {
System.out.println (msg);
}
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
JWSファイルが実際に、コールバックWebサービスを記述するJavaインタフェースであることを指定します。このアノテーションは、@javax.jws.WebService
に似ていますが、コールバックに限定され、属性の数も制限されています。
コールバック機能は、2つのWebLogic Webサービス間で機能します。ただし、この機能をプログラミングする際、次の3つのJavaファイルを作成します。
コールバック・インタフェース :コールバック・メソッドを定義するJavaインタフェース・ファイル。このファイルは、明示的に実装するのではなく、jwsc
Antタスクによってこのインタフェースの実装が自動的に生成されます。この実装によって、ターゲットWebサービスからクライアントWebサービスにメッセージが返送されます。生成されたWebサービスは、クライアントWebサービスをホストする同じWebLogic Serverにデプロイされます。
ターゲットWebサービスを実装するJWSファイル :ターゲットWebサービスには、コールバック・インタフェースで定義されたメソッドを呼び出す1つまたは複数の標準操作が含まれます。このメソッドによって、ターゲットWebサービス操作の呼出し元のクライアントWebサービスにメッセージが返送されます。
クライアントWebサービスを実装するJWSファイル :クライアントWebサービスは、ターゲットWebサービス操作を呼び出します。このWebサービスには、コールバック・メソッドを介してターゲットWebサービスからコールバック・メッセージを受け取ったときに、クライアントが実行すべき動作を指定する1つまたは複数のメソッドが含まれます。
@CallbackInterface
アノテーションを使うと、Javaファイルがコールバック・インタフェース・ファイルであることが指定されます。
コールバック・インタフェースをプログラミングする際、標準の非コールバックWebサービスと同様に、1つまたは複数のコールバック・メソッドを指定し、これらのメソッドに@javax.jws.WebMethod
アノテーションを付け、それらがWebサービス操作であることを指定します。ただし、非コールバック・メソッドとは異なり、これらのコールバック・メソッドの実際の実装コードを記述する必要はありません。代わりに、jwsc
Antタスクを使ったクライアントWebサービスのコンパイル時に、そのタスクで自動的にコールバック・インタフェースの実装が作成され、それがWebサービスにパッケージ化されます。こうして生成された実装によって、コールバック・メソッドがすべて同じ処理を行う(コールバック・メソッドを呼び出すターゲットWebサービスからクライアントWebサービスにメッセージを返送する)ことが指定されます。
コールバックのプログラミングの詳細および手順は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のコールバックによるクライアントへのイベントの通知に関する項を参照してください。
次に、非常に簡単なコールバック・インタフェースの例を示します。結果のコールバックWebサービスは、callbackOperation()
というコールバック・メソッドを1つ持ちます。
package examples.webservices.callback; import weblogic.jws.CallbackService; import javax.jws.Oneway; import javax.jws.WebMethod; @CallbackService public interface CallbackInterface { @WebMethod @Oneway public void callbackOperation (String msg); }
以降の項では、アノテーションを詳細に説明します。
ターゲット: フィールド
アノテートされたフィールドがWebサービスの実行時コンテキストへのアクセスを提供するように指定します。
クライアント・アプリケーションが、JWSファイルで実装されたWebLogic Webサービスを呼び出すと、WebLogic Serverは、Webサービスが、サービスに関する実行時情報のアクセス、および場合によっては変更に使用できるコンテキストを自動的に作成します。この情報の多くは、現在の会話が終了したか、会話のプロパティの現在の値、実行時の会話のプロパティの変更など、会話に関連しています。コンテキストを介してアクセス可能な情報には、Webサービスの呼出しに使用されたプロトコル(HTTP/SまたはJMS)、SOAPメッセージ・リクエスト内にあったSOAPヘッダーなど、より一般的なものもあります。。アノテーション・フィールドのデータ型はweblogic.wsee.jws.JwsContext
です。これは、コンテキストを問い合わせるメソッドを含むWebLogic WebサービスAPIです。
このアノテーションの使用の詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のWebサービスの実行時情報へのアクセスに関する項を参照してください。
このアノテーションには、属性はありません。
ターゲット:メソッド
@Conversation
アノテーション付きのメソッドが、2つのWebLogic Webサービスの間の会話、またはスタンドアロンJavaクライアントと会話形式のWebサービスとの間の会話の一部として呼び出すことができるように指定します。
会話形式のWebサービスは通常、3つのメソッドを指定します。各メソッドには、会話の開始、継続、終了の各フェーズに対応する@Conversation
アノテーションが付けられています。@Conversational
アノテーションは、Webサービスが会話形式になるようにクラス・レベルで指定する場合、および最大アイドル時間などの会話のプロパティを構成する場合に使用します。
2つのWebサービスの間の会話の場合、クライアント・サービスでは、@ServiceClient
アノテーションを使用して、wsdl、サービス名、呼び出された会話サービスのポートを指定します。サービスとスタンドアロン・クライアントとの間の会話の場合、クライアントは、開始メソッド、継続メソッド、および終了メソッドを適切な順序で呼び出し、会話を行います。Webサービスを会話形式にするために、唯一の追加要件として、java.io.Serializable
を実装する必要があります。
このアノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の会話形式のWebサービスの作成に関する項を参照してください。
表3-13 weblogic.jws.Conversation JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
value |
アノテーション付きのメソッドが実装する会話のフェーズを指定します。 指定できる値は次のとおりです。
デフォルト値は |
enum |
いいえ |
以下のサンプル・スニペットでは、会話の開始、継続、および終了の各フェーズを指定するために@Conversation
アノテーションが付けられた3つのメソッド(start
、middle
、およびfinish
)を含むJWSファイルを示します。
... public class ConversationalServiceImpl implements Serializable { @WebMethod @Conversation (Conversation.Phase.START) public String start() { // Java code for starting a conversation goes here } @WebMethod @Conversation (Conversation.Phase.CONTINUE) public String middle(String message) { // Java code for continuing a conversation goes here } @WebMethod @Conversation (Conversation.Phase.FINISH) public String finish(String message ) { // Java code for finishing a conversation goes here } }
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
JWSファイルが会話形式のWebサービスを実装するように指定します。
Webサービスを会話形式にするために、このアノテーションを使用する必要はありません。@Conversation
アノテーションを1つのメソッドに付けるだけで、JWSファイルのすべてのメソッドは自動的に会話形式になります。クラス・レベルの@Conversational
アノテーションは、会話形式の動作の一部を変更する場合や、クラス・レベルでJWSが会話形式であることを明示する場合にのみ使用します。
JWSファイルで@Conversational
アノテーションを使用しない場合でも、デフォルト値がニーズに合っていれば、属性なしでアノテーションを指定できます。ただし、会話で可能な最大アイドル時間、会話の最大継続時間などの値を変更する場合は、それぞれに対応した属性を指定します。
このアノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の会話形式のWebサービスの作成に関する項を参照してください。
表3-14 weblogic.jws.Conversational JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
maxIdleTime |
WebLogic Serverによって終了されるまで、会話がアイドル状態を維持できる時間を指定します。アクティビティは、会話のいずれかのフェーズを実行しているクライアントWebサービスによって定義されます。 有効な値は数値で、以下のいずれかです。
たとえば、最大アイドル時間を10分に設定するには、次のようにアノテーションを指定します。 @Conversational(maxIdleTime="10 minutes") 0の値( デフォルト値は |
String |
いいえ |
maxAge |
WebLogic Serverによって終了されるまで、会話がアクティブ状態を維持できる時間。 有効な値は数値で、以下のいずれかです。
たとえば、最大アイドル時間を3日に設定するには、次のようにアノテーションを指定します。 @Conversational(maxAge="3 days") デフォルト値は「 |
String |
いいえ |
runAsStartUser |
既存の会話の継続フェーズと終了フェーズが、会話を開始したユーザーによって実行されるかどうかを指定します。 通常、同じユーザーが会話の開始、継続、および終了メソッドを実行するので、この属性の値を変更しても、何の影響もありません。ただし、 有効な値は、 |
ブール |
いいえ |
singlePrincipal |
会話を開始したユーザーとは別のユーザーが会話の継続フェーズと終了フェーズを実行できるかどうかを指定します。 通常、同じユーザーが会話のすべてのフェーズを実行します。ただし、この属性を 有効な値は、 |
ブール |
いいえ |
以下のサンプル・スニペットでは、JWSファイルが会話形式のWebサービスを実装するように指定する方法を示します。会話で許可されている最大アイドル時間は10分、会話の最大継続時間はアクティビティに関係なく1日です。会話の継続および終了フェーズは、会話を開始したユーザーとは別のユーザーによって実行されます。各フェーズが発生すると、対応するメソッドが、元のユーザーではなく新しいユーザーとして実行されます。
package examples.webservices.conversation; ... @Conversational(maxIdleTime="10 minutes", maxAge="1 day", runAsStartUser=false, singlePrincipal=false ) public class ConversationalServiceImpl implements Serializable { ...
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
会話状態などの内部状態情報の格納に、WebLogic Serverのデフォルト・ファイル・ストアではなく、プログラマ指定のファイル・ストアを使用することを指定します。JWSファイルでこのJWSアノテーションを指定しなかった場合、WebサービスではWebLogic Serverに構成されているデフォルト・ファイル・ストアが使用されます。
信頼性のあるWebサービスの内部状態の格納に対しても、このJWSアノテーションを使用できます。
Webサービスをクラスタにデプロイする場合は、クラスタ内のすべてのサーバーでファイル・ストアが同じ名前で使用できるように、ファイル・ストアの論理名を指定してください。
注意: このアノテーションはファイル・ストアにのみ適用され、JDBCストアには適用されません。 |
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス、メソッド
JWSのどのパブリック・メソッドがバッファされるかを指定します。クラス・レベルで指定した場合、すべてのパブリック・メソッドがバッファされます。一部のメソッドのみバッファする場合、適切なメソッド・レベルでアノテーションを指定します。
クライアントWebサービスが、別のWebLogic Webサービスのバッファ付き操作を呼び出すと、呼び出されたWebサービスをホストしているWebLogic Serverは、呼出しメッセージをJMSキューに入れ、実際の呼出しは、後でWebLogic ServerがJMSキューの先頭からWebサービスの実装にメッセージを配信したときに処理されます。クライアントは、レスポンスを待つ必要がなく、処理の実行を継続できます。このため、バッファリングされた操作(追加の非同期機能なしの場合)は、void
のみを戻すことができ、@Oneway
アノテーションが付けられている必要があります。値を戻す操作をバッファリングする場合は、呼出し側のクライアントWebサービスからの非同期のリクエストとレスポンスも使用する必要があります。詳細は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の非同期のリクエストとレスポンスを使用したWebサービスの呼出しに関する項を参照してください。
バッファリングは、バッファされた一方の操作をもう一方が呼び出す2つのWebサービスの間でのみ機能します。
@MessageBuffer
の省略可能な属性を使用すると、JMSキューによる、バッファされたWebサービス操作の呼出しが成功するまでの回数、およびその呼出しの間隔を指定できます。
省略可能なクラス・レベルの@BufferQueue
アノテーションを使用すると、呼出しメッセージを入れるJMSキューを指定できます。このアノテーションを指定しなかった場合、メッセージは、デフォルトWebサービス・キューweblogic.wsee.DefaultQueue
に入れられます。
このアノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のバッファ付きWebサービスの作成に関する項を参照してください。
表3-16 weblogic.jws.MessageBuffer JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
retryCount |
呼び出されたWebLogic ServerインスタンスのJMSキューが、呼出しメッセージをWebサービスの実装に問題なく配信できるまでの再試行回数を指定します。 デフォルト値は3です。 |
int |
いいえ |
retryDelay |
メッセージ配信の再試行間隔を指定します。再試行間隔は、JMSキューの呼出しメッセージとWebサービスの実装へのメッセージ配信までの間隔。 有効な値は数値で、以下のいずれかです。
たとえば、2日後に再試行する場合は、次のように指定します。 @MessageBuffer(retryDelay="2 days") デフォルト値は |
String |
いいえ |
以下の例では、JWSファイルのコード・スニペットを示します。ここでは、パブリック操作sayHelloNoReturn
がバッファ付きで、WebLogic Serverが操作の呼出しを入れているJMSキューがmy.buffere.queue
と呼ばれています。呼び出されたWebサービスをホストしているWebLogic Serverインスタンスは、最大再試行回数10回、再試行間隔10秒で、JMSキュー内の呼出しメッセージをWebサービスの実装に配信しようとしています。以下のスニペットでは、関連するJavaコードのみを示します。
package examples.webservices.buffered; ... @WebService(name="BufferedPortType", serviceName="BufferedService", targetNamespace="http://example.org") @BufferQueue(name="my.buffer.queue") public class BufferedImpl { ... @WebMethod() @MessageBuffer(retryCount=10, retryDelay="10 seconds") @Oneway() public void sayHelloNoReturn(String message) { System.out.println("sayHelloNoReturn: " + message); } }
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス、メソッド
@weblogic.jws.Policy
アノテーションの配列を指定します。
このアノテーションは、複数のWS-PolicyファイルをJWSファイルのクラスまたはメソッドにアタッチする場合に使用します。アタッチするWS-Policyファイルが1つだけの場合は、@weblogic.jws.Policy
を単独で使用できます。
このアノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のWebサービスの信頼性のあるメッセージングの使用に関する項および『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。
このJWSアノテーションには、属性はありません。
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス、メソッド
デジタル署名、暗号化、またはWebサービスの信頼性のあるメッセージングに関する情報を格納しているWS-PolicyファイルをリクエストまたはレスポンスSOAPメッセージに適用するように指定します。
このアノテーションを単独で使用すると、単一のWS-Policyファイルをクラスまたはメソッドに適用できます。複数のWS-Policyファイルをクラスまたはメソッドに適用する場合は、@weblogic.jws.Policies
アノテーションを使用し、WS-Policyファイルをまとめて適用します。
このアノテーションをクラス・レベルで指定した場合、WS-Policyファイル(1つまたは複数)はWebサービスのあらゆるパブリック操作に適用されます。アノテーションをメソッド・レベルで指定した場合、WS-Policyファイルは、対応する操作にのみ適用されます。
デフォルトでは、WS-Policyファイルはリクエスト(着信)とレスポンス(発信)の両方のSOAPメッセージに適用されます。このデフォルトの動作は、direction
属性を使用して変更できます。
デフォルトではまた、指定したWS-Policyファイルは、Webサービス用に生成されてパブリッシュされたWSDLファイルにアタッチされるので、コンシューマは、WebサービスのWS-Policyに関するすべての要件を確認できます。このデフォルトの動作を変更するには、attachToWsdl
属性を使用します。
このアノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のWebサービスの信頼性のあるメッセージングの使用に関する項および『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。
表3-17 weblogic.jws.Policy JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
uri |
WS-Policyファイルを検索する場所を指定します。 Web上のWS-PolicyファイルのURLを指定するには、 WS-PolicyファイルがWebLogic ServerのWebサービス・アーカイブ・ファイルまたは共有可能なJava EEライブラリにパッケージ化されていることを指定する場合は、以下の例のように @Policy(uri="policy:MyPolicyFile.xml") Webサービス・アーカイブ形式でWS-Policyファイルをパブリッシュする場合は、EJB JARファイル(EJB実装のWebサービスの場合)の ライブラリ内のWS-Policyファイルのパブリッシュについては、『Oracle WebLogic Serverアプリケーションの開発』の共有J2EEライブラリおよびオプション・パッケージの作成に関する項を参照してください。 |
String |
はい |
direction |
policy:を着信リクエストSOAPメッセージに対して適用するか、発信レスポンスSOAPメッセージに対して適用するか、またはその両方(デフォルト)に対して適用するかを指定します。 この属性の有効な値は以下のとおりです。
デフォルト値は |
enum |
いいえ |
attachToWsdl |
Webサービスを記述するWSDLにWS-Policyファイルをアタッチするかどうかを指定します。 有効な値は、 |
ブール |
いいえ |
以降の項では、アノテーションを詳細に説明します。
ターゲット:メソッド
WebLogic ServerによるJMSキューからWebサービス実装へのメッセージ配信試行回数、およびサーバーが待機すべき再試行間隔など、信頼性のあるWebサービス操作に対する信頼性のあるメッセージングのプロパティを指定します。
注意: JWSファイルでこのアノテーションを指定する場合は、Webサービス用に信頼性のあるメッセージングを有効にするために、@Policy アノテーションで、Webサービスの信頼性のあるメッセージング・ポリシー・アサーションがあるWS-Policyファイルも指定していることを前提にしています。
|
Webサービスに対して信頼性のあるWebサービス・メッセージングを有効にする方法の詳細は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のWebサービスの信頼性のあるメッセージングの使用に関する項を参照してください。
表3-18 weblogic.jws.ReliabilityBuffer JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
retryCount |
宛先のWebLogic ServerインスタンスのJMSキューが、信頼性のある操作を呼び出すクライアントからWebサービスの実装にメッセージを配信する際の再試行回数を指定します。 デフォルト値は3です。 |
int |
いいえ |
retryDelay |
メッセージ配信の再試行間隔を指定します。再試行間隔は、JMSキューにあるクライアントのリクエスト・メッセージとWebサービスの実装へのメッセージ配信までの間隔。 有効な値は数値で、以下のいずれかです。
たとえば、2日後に再試行する場合は、次のように指定します。 @ReliabilityBuffer(retryDelay="2 days") デフォルト値は |
String |
いいえ |
以下のサンプル・スニペットでは、メソッド・レベルで信頼性のある操作のデフォルトの再試行回数と再試行間隔を変更する@ReliabilityBuffer
アノテーションの使い方を示します。ここでは、関連するJavaコードのみを示します。
package examples.webservices.reliable; import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.Oneway; ... import weblogic.jws.ReliabilityBuffer; import weblogic.jws.Policy; @WebService(name="ReliableHelloWorldPortType", serviceName="ReliableHelloWorldService") ... @Policy(uri="ReliableHelloWorldPolicy.xml", direction=Policy.Direction.inbound, attachToWsdl=true) public class ReliableHelloWorldImpl { @WebMethod() @Oneway() @ReliabilityBuffer(retryCount=10, retryDelay="10 seconds") public void helloWorld(String input) { System.out.println(" Hello World " + input); } }
以降の項では、アノテーションを詳細に説明します。
ターゲット:メソッド
クライアントWebサービスが信頼性のあるWebサービスを呼び出したが、信頼性のあるWebサービスが実際にそのメッセージを受け取ったという確認応答をそのクライアントが受信しなかった場合に発生するエラーを処理するメソッドを指定します。
このアノテーションは、Webサービスの信頼性のあるメッセージング機能を実装する場合にのみ関係します。アノテーションは、信頼性のあるWebサービスを呼び出すクライアント側のWebサービスで指定します。
@ReliabilityErrorHandler
アノテーションを付けるメソッドでは、データ型weblogic.wsee.reliability.ReliabilityErrorContext
のパラメータを1つ取ります。このコンテキストを使うと、エラーの原因(エラーの原因となった操作、ターゲットWebサービス、フォルトなど)に関する詳細な情報を取得できます。メソッドは、void
を返す必要があります。
@ReliabilityErrorHandler
アノテーションの単一の属性では、クライアントWebサービスが呼び出している信頼性のあるWebサービスのスタブ情報を注入した変数を指定します。この情報は、@weblogic.jws.ServiceClient
アノテーションを使って変数に注入します。
信頼性のあるWebサービスを呼び出すクライアントWebサービスの次のコードでは、@ReliabilityErrorHandler
アノテーションの使用方法を示します。ここでは、コードの一部のみが示され、このアノテーションに関連するコードについては太字で示されています。
package examples.webservices.reliable; ... import weblogic.jws.ServiceClient; import weblogic.jws.ReliabilityErrorHandler; import examples.webservices.reliable.ReliableHelloWorldPortType; import weblogic.wsee.reliability.ReliabilityErrorContext; import weblogic.wsee.reliability.ReliableDeliveryException; @WebService(name="ReliableClientPortType", ... public class ReliableClientImpl { @ServiceClient( wsdlLocation="http://localhost:7001/ReliableHelloWorld/ReliableHelloWorld?WSDL", serviceName="ReliableHelloWorldService", portName="ReliableHelloWorldServicePort") private ReliableHelloWorldPortType port; @WebMethod public void callHelloWorld(String input, String serviceUrl) throws RemoteException { ... } @ReliabilityErrorHandler(target="port") public void onReliableMessageDeliveryError(ReliabilityErrorContext ctx) { ReliableDeliveryException fault = ctx.getFault(); String message = null; if (fault != null) { message = ctx.getFault().getMessage(); } String operation = ctx.getOperationName(); System.out.println("Reliable operation " + operation + " may have not invoked. The error message is " + message); } }
上の例では、port
変数はReliableHelloWorldService
Webサービスに対応するスタブで注入されており、クライアントWebサービスの特定の場所で、このスタブの操作が呼び出されると見なされます。onReliableMessageDeliveryError
メソッドは、@ReliabilityErrorHandler
アノテーションが付けられ、port
スタブとリンクされているため、信頼性のあるWebサービスの呼出しにおいて障害が発生した場合、このメソッドが呼び出されます。信頼性のあるエラー処理メソッドでは、ReliabilityErrorContext
オブジェクトを使用して、このエラーの原因の詳細を取得します。
以降の項では、アノテーションを詳細に説明します。
ターゲット: フィールド
JWSファイルのアノテーション付き変数が、以下の機能を使用するときに、別のWebLogic Webサービスを呼び出すスタブであることを指定します。
Webサービスの信頼性のあるメッセージング
非同期のリクエスト/レスポンス
会話
信頼性のあるメッセージング機能および非同期のリクエストとレスポンス機能は、2つのWebサービスの間でのみ使用します。つまり、たとえば、スタンドアロン・クライアントからではなく、別のWebサービスからのみ信頼性のあるWebサービス操作を呼び出すことができます。信頼性のあるメッセージングの場合は、http://docs.oasis-open.org/ws-rx/wsrm/200702/wsrm-1.1-spec-os-01.pdfにあるWS-ReliableMessaging仕様を実装された任意の2つのアプリケーション・サーバー間で機能します。
非同期のリクエストとレスポンス機能は、2つのWebLogic Serverインスタンス間でのみ機能します。
クライアントWebサービスの場合、どの変数が、@ServiceClient
属性で記述したWebサービスのポートのタイプかを指定するには、@ServiceClient
アノテーションを使用します。クライアントWebサービスを格納するエンタープライズ・アプリケーションも、呼び出しているWebサービスのスタブを含んでいる必要があります。このスタブは、clientgen
Antタスクで生成します。
@ServiceClient
アノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』を参照してください。
表3-20 weblogic.jws.ServiceClient JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
serviceName |
呼び出すWebサービスの名前を指定します。呼び出されたWebサービスのWSDLにある JWSファイルを使用して、呼び出されたWebサービスを実装した場合、この属性は、そのWebサービスの |
String |
はい |
portName |
呼び出すWebサービスのポート名を指定します。 JWSファイルを使用して、呼び出されたWebサービスを実装した場合、この属性は、そのWebサービスの この属性を指定しなかった場合、WSDLの |
String |
いいえ |
wsdlLocation |
呼び出すWebサービスを記述するWSDLファイルを指定します。 この属性を指定しなかった場合、クライアントWebサービスが使用するWSDLファイルは、呼び出されるWebサービスの |
String |
いいえ |
endpointAddress |
呼び出すWebサービスのエンドポイント・アドレスを指定します。 この属性を指定しなかった場合、クライアントWebサービスは、WSDLファイルで指定したエンドポイント・アドレスを使用します。 |
String |
いいえ |
以下のJWSファイルの抜粋では、クライアントWebサービスで@ServiceClient
アノテーションを使用し、呼び出されるWebサービス(WSDLがhttp://localhost:7001/ReliableHelloWorld/ReliableHelloWorld?WSDL
というURL上にあるReliableHelloWorldService
)のスタブでフィールド(port
)にアノテーションを付ける方法を示します。ここでは、関連する部分のみを示します。
package examples.webservices.reliable; import javax.jws.WebService; ... import weblogic.jws.ServiceClient; import examples.webservices.reliable.ReliableHelloWorldPortType; @WebService(... public class ReliableClientImpl { @ServiceClient( wsdlLocation="http://localhost:7001/ReliableHelloWorld/ReliableHelloWorld?WSDL", serviceName="ReliableHelloWorldService", portName="ReliableHelloWorldServicePort") private ReliableHelloWorldPortType port; @WebMethod public void callHelloWorld(String input, String serviceUrl) throws RemoteException { port.helloWorld(input); System.out.println(" Invoked the ReliableHelloWorld.helloWorld operation reliably." ); } }
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
WebLogic Webサービス・ランタイムで、Webサービスのすべてのメソッド・パラメータを読み込む際にStreaming APIを使用するように指定します。これによって、特に画像など、大きなパラメータの場合にWebサービス操作の呼出しのパフォーマンスが向上します。
同じWebサービスで次の機能も使用している場合、このアノテーションは使用できません。
会話
信頼性のあるメッセージング
JMSトランスポート
クライアント・アプリケーションと呼出し対象のWebサービスとの間のプロキシ・サーバー
@StreamAttachments
アノテーションには、属性はありません。
次に、@StreamAttachments
アノテーションを指定する簡単なJWSファイルを示します。単一のメソッドechoAttachment()
はDataHandler
パラメータを取り、Webサービス操作を呼び出したクライアント・アプリケーションにエコー・バックします。WebLogic Webサービス・ランタイムでは、DataHandlerの内容を読み込む際にストリーミングが使用されます。
package examples.webservices.stream_attach; import javax.jws.WebMethod; import javax.jws.WebService; import weblogic.jws.WLHttpTransport; import weblogic.jws.StreamAttachments; import javax.activation.DataHandler; import java.rmi.RemoteException; @WebService(name="StreamAttachPortType", serviceName="StreamAttachService", targetNamespace="http://example.org") @WLHttpTransport(contextPath="stream_attach", serviceUri="StreamAttachService", portName="StreamAttachServicePort") @StreamAttachments /** * Example of stream attachments */ public class StreamAttachImpl { @WebMethod() public DataHandler echoAttachment(DataHandler dh) throws RemoteException { return dh; } }
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス、メソッド
アノテーション付きの操作、またはアノテーションがクラス・レベルで指定されている場合はJWSファイルのすべての操作がトランザクション内で実行されるかどうかを指定します。デフォルトでは、操作はトランザクションでは実行されません。
以下の例では、@Transactional
アノテーションを使って、Webサービス操作がトランザクションの一部として実行されるように指定する方法を示します。
package examples.webservices.transactional; import javax.jws.WebMethod; import javax.jws.WebService; import weblogic.jws.WLHttpTransport; import weblogic.jws.Transactional; @WebService(name="TransactionPojoPortType", serviceName="TransactionPojoService", targetNamespace="http://example.org") @WLHttpTransport(contextPath="transactionsPojo", serviceUri="TransactionPojoService", portName="TransactionPojoPort") /** * This JWS file forms the basis of simple WebLogic * Web Service with a single operation: sayHello. The operation executes * as part of a transaction. */ public class TransactionPojoImpl { @WebMethod() @Transactional(value=true) public String sayHello(String message) { System.out.println("sayHello:" + message); return "Here is the message: '" + message + "'"; } }
以降の項では、アノテーションを詳細に説明します。
ターゲット:メソッド、パラメータ
戻り値またはパラメータの代替データ型の完全修飾Javaクラス名のカンマ区切りリストを指定します。代替データ型は、メソッド・シグネチャで指定されたデータ型を拡張する必要があります。これに当てはまらない場合、JWSファイルをWebサービスにコンパイルする際にjwsc
Antタスクは検証エラーを返します。
たとえば、Address
基本データ型を作成してから、このベース・タイプを拡張するUSAAddress
およびCAAddress
を作成しているものと仮定します。メソッド・シグネチャで、この型がAddress
パラメータを取ることが指定されている場合、このパラメータに@Types
アノテーションを付け、パブリック操作でも、基本Address
データ型の他に、パラメータとしてUSAAddress
およびCAAddress
を取るように指定できます。
このアノテーションを使うと、java.util.Collection
またはjava.util.List
など、コレクション・データ型の戻り値またはパラメータに格納可能なデータ型を制限することもできます。許容される格納データ型を制限することによって、生成されるWSDLは明確で一義的となり、クライアント・アプリケーションがWebサービス操作を呼び出す際、Webサービス・ランタイムはパラメータの適格確認処理を効率よく実行できます。
このアノテーションをメソッド・レベルで指定すると、適用対象は戻り値に限定されます。アノテーションをパラメータに適用する場合、各関連パラメータについて、パラメータ・レベルで指定する必要があります。
次の例では、@Types
アノテーションを使用する簡単なJWSファイルを示します。関連するJavaコードは太字で示しています。
package examples.webservices.types; import javax.jws.WebMethod; import javax.jws.WebService; import weblogic.jws.WLHttpTransport; import weblogic.jws.Types; import examples.webservices.types.BasicStruct; @WebService(serviceName="TypesService", name="TypesPortType", targetNamespace="http://example.org") @WLHttpTransport(contextPath="types", serviceUri="TypesService", portName="TypesServicePort") public class TypesImpl { @WebMethod() @Types({"examples.webservices.types.ExtendedStruct"}) public BasicStruct echoStruct( @Types({"examples.webservices.types.ExtendedStruct"}) BasicStruct struct) { System.out.println("echoStruct called"); return struct; } }
上の例では、echoStruct()
メソッドのシグネチャにおいて、パラメータおよび戻り値の両方としてBasicStruct
値を取ることが示されています。ただし、メソッドおよびstruct
パラメータはともに@Types
アノテーションが付けられているため、echoStruct
操作を呼び出すクライアント・アプリケーションは、データ型ExtendedStruct
のパラメータも渡すことができます。この場合、操作もExtendedStruct
値を返します。ここでは、ExtendedStruct
がBasicStruct
を拡張するものと見なされています。
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
javax.xml.soap.SOAPElement
またはorg.apache.xmlbeans.XmlObject
などのワイルドカード・クラスがバインドする先のXMLスキーマ・データ型を指定します。デフォルトでは、これらのJavaデータ型は<xsd:any>
XMLスキーマ・データ型にバインドされます。このクラス・レベルのアノテーションを使用すると、ワイルドカード・クラスをかわりに<xsd:anyType>
にバインドするように指定できます。
表3-23 weblogic.jws.WildcardBinding JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
className |
このバインドが適用されるワイルドカード・クラスの完全修飾名を指定します。一般的な値は |
String |
はい |
binding |
ワイルドカード・クラスがバインドする先のXMLスキーマ・データ型を指定します。 以下のいずれかの値を指定可能です。
|
enum |
はい |
次に、@WildcardBinding
アノテーションを使って、Apache XMLBeansデータ型のXMLObjectが、このWebサービスの<xsd:any>
XMLスキーマ・データ型にバインドされるように指定する例を示します。
@WildcardBindings({ @WildcardBinding(className="org.apache.xmlbeans.XmlObject", binding=WildcardParticle.ANY), @WildcardBinding(className="org.apache.xmlbeans.XmlObject[]", binding=WildcardParticle.ANY)}) public class SimpleImpl { ...
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
@weblogic.jws.WildcardBinding
アノテーションの配列を指定します。
このJWSアノテーションには、属性はありません。
例については、weblogic.jws.WildcardBindingを参照してください。
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
生成されたWSDLのポート名に加え、HTTPトランスポート形式でWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションを指定します。
このアノテーションは、JWSファイル内で最大で一度だけ指定できます。
表3-24 weblogic.jws.WLHttpTransport JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
contextPath |
Webサービスのコンテキスト・パス。この値は、Webサービスを呼び出すURL内で使用します。 たとえば、Webサービスのコンテキスト・パスを http://hostname:7001/financial/GetQuote?WSDL この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが |
String |
いいえ |
serviceUri |
URLのWebサービスURI部分。この値は、Webサービスを呼び出すURL内で使用します。 たとえば、この属性を http://hostname:7001/financial/GetQuote?WSDL この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが |
String |
いいえ |
portName |
生成されたWSDLのポートの名前。この属性は、WSDLの この属性のデフォルト値は、JWSファイルの |
String |
いいえ |
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
注意: @weblogic.jws.WLHttpsTransport アノテーションは、WebLogic Server 9.2で非推奨になりました。代わりに、@weblogic.jws.WLHttpTransport アノテーションを使用してください。これはHTTPおよびHTTPSプロトコルを両方ともサポートするようになったためです。クライアント・アプリケーションにHTTPSプロトコルのみを使用してWebサービスにアクセスさせるには、JWSファイルで@weblogic.jws.security.UserDataConstraint JWSアノテーションを指定する必要があります。 |
生成されたWSDLのポート名に加え、HTTPSトランスポート形式でWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションを指定します。
このアノテーションは、JWSファイル内で最大で一度だけ指定できます。
表3-25 weblogic.jws.WLHttpsTransport JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
contextPath |
Webサービスのコンテキスト・パス。この値は、Webサービスを呼び出すURL内で使用します。 たとえば、Webサービスのコンテキスト・パスを https://hostname:7001/financial/GetQuote?WSDL この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが |
String |
いいえ |
serviceUri |
URLのWebサービスURI部分。この値は、Webサービスを呼び出すURL内で使用します。 たとえば、この属性を https://hostname:7001/financial/GetQuote?WSDL この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが |
String |
いいえ |
portName |
生成されたWSDLのポートの名前。この属性は、WSDLの この属性のデフォルト値は、JWSファイルの |
String |
いいえ |
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
生成されたWSDLのポート名に加え、JMSトランスポート形式でWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションを指定します。WebLogic Serverが操作の呼出しのSOAPリクエスト・メッセージを入れるJMSキューを指定する場合にも、このアノテーションを使用します。
このアノテーションは、JWSファイル内で最大で一度だけ指定できます。
表3-26 weblogic.jws.WLJmsTransport JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
contextPath |
Webサービスのコンテキスト・パス(コンテキスト・ルート)。この値は、Webサービスを呼び出すURL内で使用します。 |
String |
いいえ |
serviceUri |
クライアント・アプリケーションがWebサービスの呼出しに使用するURLのWebサービスURI部分。 |
String |
いいえ |
queue |
JMSトランスポート用に構成済のJMSキューのJNDI名。JMSトランスポートの使用の詳細は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の接続プロトコルとしてのJMSトランスポートの使用に関する項を参照してください。 この属性を指定しない場合のデフォルト値は |
String |
いいえ |
portName |
生成されたWSDLのポートの名前。この属性は、WSDLの この属性を指定しない場合、 |
String |
いいえ |
connectionFactory |
JMSトランスポート用に構成済のJMS接続ファクトリのJNDI名。JMSトランスポートの使用の詳細は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の接続プロトコルとしてのJMSトランスポートの使用に関する項を参照してください。 |
String |
はい |
以下の例では、JMSトランスポートを使用して呼び出されるWebサービスがJWSファイルで実装されるように指定する方法を示します。WebLogic Serverが、サービス操作の呼出しにあるSOAPメッセージ・リクエストを入れるJMSキューはJMSTransportQueue
です。ここでは、このJMSキューはWebLogic Server用にすでに構成されていることを前提としています。
WLJmsTransport(contextPath="transports", serviceUri="JMSTransport", queue="JMSTransportQueue", portName="JMSTransportServicePort")
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
デプロイされたWebLogic WebサービスのWSDLを公開するかどうかを指定します。
デフォルトでは、WSDLは次のURLで公開されます。
http://[host]:[port]/[contextPath]/[serviceUri]?WSDL
説明:
host - WebLogic Serverが動作しているコンピュータの名前。
port - WebLogic Serverがリスニングしているポート番号(デフォルト値は7001
)。
contextPath
は、Webサービスを実装するJWSファイルの@WLHttpTransport
JWSアノテーションで指定されているcontextPath
属性の値、serviceUri
はserviceUri
属性の値を指します。
たとえば、次の@WLHttpTransport
アノテーションを使用しているとします。
@WLHttpTransport(portName="helloPort", contextPath="hello", serviceUri="SimpleImpl")
Webサービスがariel
というホストのデフォルトのポート番号で実行されているとすると、そのWebサービスのWSDLを表示するURLは次のとおりです。
http://ariel:7001/hello/SimpleImpl?WSDL
以下の@WSDL
アノテーションの使用例では、デプロイされるWebサービスのWSDLが公開されないように指定する方法を示します。ここでは、関連するJavaコードのみを示します。
package examples.webservices;
import weblogic.jws.WSDL;
@WebService(name="WsdlAnnotationPortType",
serviceName="WsdlAnnotationService",
targetNamespace="http://example.org")
@WSDL(exposed=false)
public class WsdlAnnotationImpl {
...
}
以降の項では、アノテーションを詳細に説明します。
ターゲット:メソッド、フィールド
Webサービスのコールバック・メソッドを呼び出す許可を与えられたロールをリストする@SecurityRole
JWSアノテーションの配列を指定します。未指定のロールにマップされたユーザー、またはロールにマップされていないユーザーは、コールバック・メソッドの呼出しを許可されません。
このアノテーションをフィールド・レベルで使用した場合、指定したロールは、Webサービスのすべてのコールバック操作の呼出しを許可されます。このアノテーションをメソッド・レベルで使用した場合、指定したロールは、コールバック・メソッドのみの呼出しを許可されます。両方のレベルで指定し、競合がある場合、メソッド値がフィールド値をオーバーライドします。
表3-28 weblogic.jws.security.CallbackRolesAllowed JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
value |
コールバック・メソッドの呼出しを許可されたロールをリストする |
String[] |
はい |
次に、メソッド・レベルで@CallbackRolesAllowed
アノテーションを使って、ロールengineer
がコールバック・メソッドの呼出しを許可されるように指定する例を示します。
@CallbackMethod(target="port", operation="callbackOperation")
@CallbackRolesAllowed(@SecurityRole(role="engineer", mapToPrincipals="shackell"))
public void callbackHandler(String msg) {
System.out.println (msg);
}
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス、メソッド
Webサービスの基本認証を有効にするかどうかを指定します。具体的には、これはWebサービスを呼び出す許可を与えられたロールのリストを記述した@SecurityRole
JWSアノテーションの配列を指定します。未指定のロールにマップされたユーザー、またはロールにマップされていないユーザーは、Webサービスの呼出しを許可されません。
このアノテーションをクラス・レベルで使用した場合、指定したロールは、Webサービスのすべての操作の呼出しを許可されます。特定の操作群のみに対してロールを指定するには、アノテーションを操作レベルで指定します。
表3-29 weblogic.jws.security.RolesAllowed JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
value |
Webサービス・メソッドの呼出しを許可されたロールをリストする |
String[] |
はい |
package examples.webservices.security_roles; ... import weblogic.jws.security.RolesAllowed; import weblogic.jws.security.SecurityRole; @WebService(name="SecurityRolesPortType", serviceName="SecurityRolesService", targetNamespace="http://example.org") @RolesAllowed ( { @SecurityRole (role="manager", mapToPrincipals={ "juliet","amanda" }), @SecurityRole (role="vp") } ) public class SecurityRolesImpl { ...
この例では、ロールmanager
およびvp
のみがWebサービスの呼出しを許可されています。Webサービスのコンテキスト内で、ユーザーjuliet
およびamanda
にはロールmanager
が割り当てられます。しかしロールvp
には、ユーザーが外部でこのロールにマップされたことを示唆するmapToPrincipals
属性が含まれていません。ここでは、2人のユーザーjuliet
およびamanda
がWebLogic Serverセキュリティ・レルムにすでに追加されていることが前提となっています。
ターゲット:クラス
Webサービスの呼出しが許可されている実際のロールを参照する、ロール名のリストを指定します。具体的には、@SecurityRoleRef
JWSアノテーションの配列を指定します。各アノテーションには、参照されるロール名と、@SecurityRole
アノテーションで定義される実際のロールの間のリンクが記述されています。
このJWSアノテーションには、属性はありません。
package examples.webservices.security_roles; ... import weblogic.jws.security.RolesAllowed; import weblogic.jws.security.SecurityRole; import weblogic.jws.security.RolesReferenced; import weblogic.jws.security.SecurityRoleRef; @WebService(name="SecurityRolesPortType", serviceName="SecurityRolesService", targetNamespace="http://example.org") @RolesAllowed ( { @SecurityRole (role="manager", mapToPrincipals={ "juliet","amanda" }), @SecurityRole (role="vp") } ) @RolesReferenced ( @SecurityRoleRef (role="mgr", link="manager") ) public class SecurityRolesImpl { ...
この例では、ロールmgr
はWebサービスの呼出しを許可されているロールmanager
にリンクされています。つまり、mgr
のロールに割り当てられたユーザーはすべて、Webサービスの呼出しを許可されているということです。
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
WebLogic Server内のWebサービスを実際に実行するロールおよびユーザーIDを指定します。
たとえば、@RunAs
アノテーションが、roleA
ロールとuserA
プリンシパルを指定すると仮定します。これは、WebサービスがuserB
(roleB
にマップされている)によって呼び出された場合でも、関連の操作は内部で実際にはuserA
として実行されているということです。
表3-30 weblogic.jws.security.RunAs JWSアノテーションの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
role |
Webサービスが実行されるロールを指定します。 |
String |
はい |
mapToPrincipal |
ロールにマップするプリンシパル・ユーザーを指定します。 通常は管理コンソールを使用して、指定されたプリンシパル(ユーザー)を有効なWebLogic Serverユーザーとして構成済であることが前提となっています。詳細は、Oracle WebLogic Server管理コンソール・ヘルプのユーザーの作成に関する項を参照してください。 |
String |
はい |
package examples.webservices.security_roles; import weblogic.jws.security.RunAs; ... @WebService(name="SecurityRunAsPortType", serviceName="SecurityRunAsService", targetNamespace="http://example.org") @RunAs (role="manager", mapToPrincipal="juliet") public class SecurityRunAsImpl { ...
この例では、どのユーザーによって呼び出されたかに関係なく、Webサービスを常にロールmanager
にマップされているユーザーjuliet
として実行するということを指定する方法を示します。
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス、メソッド
Webサービスの呼出しを許可されているロールの名前を指定します。このアノテーションは、JWSファイルの中で常に@RolesAllowed
配列のメンバーとして指定されます。
クライアント・アプリケーションは保護されたWebサービスを呼び出す際、基本認証の一部としてユーザーおよびパスワードを指定します。管理者は管理コンソールを使用してユーザーを有効なWebLogic Serverユーザーとして構成済であることが前提となっています。詳細は、『Oracle WebLogic Server管理コンソール・ヘルプ』のユーザーの作成に関する項を参照してください。
Webサービスを呼び出すユーザーは、関連のロールにもマップされている必要があります。このタスクは、次の2つの方法のいずれかによって実行できます。
管理コンソールでユーザーをロールにマップします。この場合、@SecurityRole
アノテーションのmapToPrincipals
属性は指定しません。詳細は、Oracle WebLogic Server管理コンソール・ヘルプのロールへのユーザーの追加に関する項を参照してください。
mapToPrincipals
属性を使用して1人以上のユーザーを指定することで、Webサービスのコンテキスト内でのみユーザーをロールにマップします。
複数のロールがWebサービスの呼出しを許可されていることを指定するには、複数の@SecurityRole
アノテーションを@RolesAllowed
アノテーション内に含めます。
package examples.webservices.security_roles; ... import weblogic.jws.security.RolesAllowed; import weblogic.jws.security.SecurityRole; @WebService(name="SecurityRolesPortType", serviceName="SecurityRolesService", targetNamespace="http://example.org") @RolesAllowed ( { @SecurityRole (role="manager", mapToPrincipals={ "juliet","amanda" }), @SecurityRole (role="vp") } ) public class SecurityRolesImpl { ...
この例では、ロールmanager
およびvp
のみがWebサービスの呼出しを許可されています。Webサービスのコンテキスト内で、ユーザーjuliet
およびamanda
にはロールmanager
が割り当てられます。しかしロールvp
には、ユーザーが外部でこのロールにマップされたことを示唆するmapToPrincipals
属性が含まれていません。ここでは、2人のユーザーjuliet
およびamanda
がWebLogic Serverセキュリティ・レルムにすでに追加されていることが前提となっています。
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
Webサービスの呼出しを許可されている、指定済みのロールにリンクするロール名参照を指定します。
ロール参照にマップされたユーザーは、参照されたロールがWebサービスの@RolesAllowed
アノテーションで指定されている限り、Webサービスを呼び出すことができます。
package examples.webservices.security_roles; ... import weblogic.jws.security.RolesAllowed; import weblogic.jws.security.SecurityRole; import weblogic.jws.security.RolesReferenced; import weblogic.jws.security.SecurityRoleRef; @WebService(name="SecurityRolesPortType", serviceName="SecurityRolesService", targetNamespace="http://example.org") @RolesAllowed ( { @SecurityRole (role="manager", mapToPrincipals={ "juliet","amanda" }), @SecurityRole (role="vp") } ) @RolesReferenced ( @SecurityRoleRef (role="mgr", link="manager") ) public class SecurityRolesImpl { ...
この例では、ロールmgr
はWebサービスの呼出しを許可されているロールmanager
にリンクされています。つまり、mgr
のロールに割り当てられたユーザーはすべて、Webサービスの呼出しを許可されているということです。
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
クライアントがWebサービスを呼び出す際に、HTTPSトランスポートの使用が必要であるかどうかを指定します。
WebLogic Serverは、このアノテーションのtransport
属性が、Webサービスを実装するJWSファイル内でTransport.INTEGRAL
とTransport.CONFIDENTIAL
のうちのいずれかに設定されていると、クライアントとWebサービスの間にSecure Sockets Layer (SSL)接続を確立します。
このアノテーションをJWSファイル内で指定した場合は、weblogic.jws.WLHttpTransportアノテーション(または、jwsc
Antタスクの<WLHttpTransport>
要素)も指定して、HTTPSバインディングがjwsc
AntタスクによってWSDLファイル内に確実に生成されるようにする必要があります。
表3-33 weblogic.jws.security.UserDataConstraint JWSアノテーションの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
transport |
クライアントがWebサービスを呼び出す際に、HTTPSトランスポートの使用が必要であるかどうかを指定します。 有効な値は以下のとおりです。
デフォルト値は |
enum |
いいえ |
package examples.webservices.security_https; import weblogic.jws.security.UserDataConstraint; ... @WebService(name="SecurityHttpsPortType", serviceName="SecurityHttpsService", targetNamespace="http://example.org") @UserDataConstraint( transport=UserDataConstraint.Transport.CONFIDENTIAL) public class SecurityHttpsImpl { ...
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
Webサービスで使用するWebサービス・セキュリティ構成の名前を指定します。JWSファイルでこのアノテーションを指定しなかった場合、デフォルトのセキュリティ構成(default_wss
)をドメインで作成済みであれば、Webサービスは、そのセキュリティ構成に関連付けられます。
@WssConfiguration
アノテーションは、Webサービスでメッセージ・レベルのセキュリティ(暗号化およびデジタル署名)が構成されている場合にのみ有効です。このアノテーションを使用してWebサービスに関連付けられたセキュリティ構成では、IDの認証にX.509証明書を使用するかどうか、パスワード・ダイジェストを使用するかどうか、暗号化やデジタル署名にキーストアを使用するかどうかなどを指定します。
WebLogic Webサービスは、必ずしもセキュリティ構成と関連付ける必要はありません。Webサービスのセキュリティ・ランタイムのデフォルトの動作が十分なものであれば、追加の構成は不要です。しかし、Webサービスでデフォルトとは異なる動作が必要とされる場合(IDの認証に、デフォルトのユーザー名/パスワードのトークンではなくX.509証明書を使用する場合など)は、Webサービスにセキュリティ構成を関連付ける必要があります。
セキュリティ構成を指定したWebサービスを呼び出すことができるようにするには、あらかじめ管理コンソールでセキュリティ構成を作成しておく必要があります。詳細は、Oracle WebLogic Server管理コンソール・ヘルプのWebサービス・セキュリティ構成の作成に関する項を参照してください。メッセージ・レベルのセキュリティの概要は、『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。
注意: @WssConfiguration アノテーションを使用する場合、単一のWebアプリケーションにパッケージ化されているすべてのWebLogic Webサービスは同じセキュリティ構成に関連付けられている必要があります。たとえば、特定のWebアプリケーションに含まれるWebサービスを実装するすべてのJWSファイルに@WssConfiguration アノテーションが存在している場合は、各@WssConfiguration のvalue 属性が同じでなければなりません。
|
以下の例では、Webサービスがmy_security_configuration
セキュリティ構成に関連付けられるように指定する方法を示します。ここでは、関連するJavaコードのみを示します。
package examples.webservices.wss_configuration; import javax.jws.WebService; ... import weblogic.jws.security.WssConfiguration; @WebService(... ... @WssConfiguration(value="my_security_configuration") public class WssConfigurationImpl { ...
以降の項では、アノテーションを詳細に説明します。
ターゲット:メソッド
SOAPメッセージ・プロトコルに対するWebサービス操作のマッピングを指定します。
このアノテーションは、@javax.jws.soap.SOAPBinding
に似ていますが、クラスではなく、メソッドに適用される点が異なります。たとえば、このアノテーションを使用すると、あるWebサービス操作でRPCエンコードのSOAPバインディングを使用し、同じWebサービスの別の操作ではdocument-literal-wrappedのSOAPバインディングを使用するように指定できます。
注意: @weblogic.jws.soap.SOAPBinding および@javax.jws.soap.SOAPBinding は同じクラス名を持つため、JWSファイルで使用する際は、どちらのアノテーションを指しているかに注意する必要があります。 |
表3-35 weblogic.jws.soap.SOAPBinding JWSアノテーションの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
style |
呼び出されたアノテーション付き操作のリクエストおよびレスポンスのSOAPメッセージのメッセージ・スタイルを指定します。 有効な値は以下のとおりです。
デフォルト値は |
enum |
いいえ |
use |
呼び出されたアノテーション付き操作のリクエストおよびレスポンスのSOAPメッセージのフォーマット・スタイルを指定します。 有効な値は以下のとおりです。
デフォルト値は |
enum |
いいえ |
parameterStyle |
メソッド・パラメータがメッセージ本文を表しているかどうか、パラメータが操作に基づく名前の最上位の要素内にラップされている要素かどうかを判別します。 有効な値は以下のとおりです。
デフォルト値は 注意:この属性は、ドキュメント・リテラル形式のWebサービスに対してのみ有効となります。つまり、 |
enum |
いいえ |
次に、Webサービス操作がdocument-literal-wrappedのSOAPバインディングをデフォルトで使用するように指定する簡単なJWSファイルを示します。これは、@javax.jws.soap.SOAPBinding
アノテーションをクラス・レベルで使用することによって指定できます。この例では、@weblogic.jws.soap.SOAPBinding
アノテーションをメソッド・レベルで使用して個々のメソッドに異なるSOAPバインディングを指定する方法も示します。具体的には、sayHelloDocLitBare()
メソッドではdocument-literal-bareのSOAPバインディングを使用し、sayHelloRPCEncoded()
メソッドではRPCエンコードのSOAPバインディングを使用します。
package examples.webservices.soap_binding_method; import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import weblogic.jws.WLHttpTransport; @WebService(name="SoapBindingMethodPortType", serviceName="SoapBindingMethodService", targetNamespace="http://example.org") @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.WRAPPED) @WLHttpTransport(contextPath="soap_binding_method", serviceUri="SoapBindingMethodService", portName="SoapBindingMethodServicePort") /** * Simple JWS example that shows how to specify soap bindings for a method. */ public class SoapBindingMethodImpl { @WebMethod() @weblogic.jws.soap.SOAPBinding( style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.BARE) public String sayHelloDocLitBare(String message) { System.out.println("sayHelloDocLitBare" + message); return "Here is the message: '" + message + "'"; } @WebMethod() @weblogic.jws.soap.SOAPBinding( style=SOAPBinding.Style.RPC, use=SOAPBinding.Use.ENCODED) public String sayHelloRPCEncoded (String message) { System.out.println("sayHelloRPCEncoded" + message); return "Here is the message: '" + message + "'"; } }
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス、メソッド
注意: WebLogic Server 9.0以降では、@weblogic.security.jws.SecurityRoles JWSアノテーションは非推奨となっています。 |
Webサービス操作にアクセスできるロールを指定します。
このアノテーションをクラス・レベルで指定した場合、指定したロールは、Webサービスのすべてのパブリック操作に適用されます。複数のロールを同じWebサービスの複数の操作に関連付ける場合は、メソッド・レベルでロールのリストを指定することもできます。
注意: @SecurityRoles アノテーションは、EJB実装のWebサービスのコンテキスト内でのみ有効です。そのため、このアノテーションは、javax.ejb.SessionBean を明示的に実装しているJWSファイル内でのみ指定できます。EJBへのアクセス保護の概念については、『Oracle WebLogic Serverセキュリティのプログラミング』のEnterprise JavaBeans (EJB)のセキュリティ対策に関する項を参照してください。JWSファイル内でのEJBの明示的な実装については、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のステートレス・セッションEJBを実装すべき場合に関する項を参照してください。 |
表3-36 weblogic.jws.security.SecurityRoles JWSアノテーションの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
rolesAllowed |
Webサービスにアクセスできるロールのリストを指定します。 このアノテーションは、Webサービスを実装するステートレス・セッションEJBの |
文字列の配列 |
いいえ |
rolesReferenced |
Webサービスで参照されるロールのリストを指定します。 Webサービスは、リストされたロールの資格証明を使用して他のリソースにアクセスできます。 このアノテーションは、Webサービスを実装するステートレス・セッションEJBの |
文字列の配列 |
いいえ |
以下の例では、Admin
ロールのみがWebサービスを呼び出すことができるようにクラス・レベルで指定する方法を示します。ここでは、関連する部分のみを示します。
package examples.webservices.security_roles; import javax.ejb.SessionBean; import javax.ejb.SessionContext; import weblogic.ejbgen.Session; import javax.jws.WebService; ... import weblogic.jws.security.SecurityRoles; @Session(ejbName="SecurityRolesEJB") @WebService(... // Specifies the roles who can invoke the entire Web Service @SecurityRoles(rolesAllowed="Admnin") public class SecurityRolesImpl implements SessionBean { ...
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス
注意: WebLogic Server 9.1以降では、@weblogic.security.jws.SecurityIdentity JWSアノテーションは非推奨となっています。 |
呼び出されたWebサービスが前提とするIDを指定します。
別の値を指定した場合を除き、Webサービスは、認証された呼出し側のIDを前提とします。このアノテーションを使用すると、Webサービスが特定のロールで実行されるように設定を変更できます。ロールは、WebLogic Serverのセキュリティ・レルム内のユーザーまたはグループに対応している必要があります。
注意: @SecurityIdentity アノテーションは、EJB実装のWebサービスのコンテキスト内でのみ有効です。そのため、このアノテーションは、javax.ejb.SessionBean を明示的に実装しているJWSファイル内でのみ指定できます。EJBへのアクセス保護の概念については、『Oracle WebLogic Serverセキュリティのプログラミング』のEnterprise JavaBeans (EJB)のセキュリティ対策に関する項を参照してください。JWSファイル内でのEJBの明示的な実装については、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のステートレス・セッションEJBを実装すべき場合に関する項を参照してください。 |
以下の例では、呼び出されたWebサービスがAdmin
ロールで実行されるように指定する方法を示します。
package examples.webservices.security_roles; import javax.ejb.SessionBean; import javax.ejb.SessionContext; import weblogic.ejbgen.Session; import javax.jws.WebService; ... import weblogic.jws.security.SecurityIdentity; @Session(ejbName="SecurityRolesEJB") @WebService(... // Specifies that the Web Service runs as the Admin role @SecurityIdentity( value="Admin") public class SecurityRolesImpl implements SessionBean { ...
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス、メソッド
@weblogic.wsee.jws.jaxws.owsm.SecurityPolicy
アノテーションの配列を指定します。
このアノテーションは、複数のOracle Web Services Manager (Oracle WSM) WS-PolicyファイルをJWSファイルのクラスまたはメソッドにアタッチする場合に使用します。アタッチするOracle WSM WS-Policyファイルが1つのみの場合は、@weblogic.wsee.jws.jaxws.owsm.SecurityPolicy
を単独で使用できます。
このアノテーションの使用の詳細および例は、『Oracle WebLogic Server WebLogic Webサービスの保護』のOracle Webサービス・セキュリティ・ポリシーの使用に関する項を参照してください。
このJWSアノテーションには、属性はありません。
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス、メソッド
デジタル署名または暗号化に関する情報を格納しているOracle Web Services Manager (Oracle WSM) WS-PolicyファイルをリクエストまたはレスポンスSOAPメッセージに適用するように指定します。
このアノテーションを単独で使用すると、単一のOracle WSM WS-Policyファイルをクラスまたはメソッドに適用できます。複数のOracle WSM WS-Policyファイルをクラスまたはメソッドに適用する場合は、@weblogic.wsee.jws.jaxws.owms.SecurityPolicies
アノテーションを使用し、Oracle WSM WS-Policyファイルをまとめて適用します。
このアノテーションをクラス・レベルでのみ指定すると、Oracle WSM WS-Policyファイル(1つまたは複数)はWebサービスのあらゆるパブリック操作に適用されていることを示します。
Oracle WSM WS-SecurityポリシーはWebLogic Server JAX-WS WebサービスのWSDLに公開されません。(通常、Webサービスに関連付けられたポリシー・ファイルはそのWSDLにアタッチされます。Webサービス・クライアント・ランタイムはこれを読み取り、クライアント・アプリケーションから呼び出された操作からのSOAPメッセージ・リクエストのデジタル署名やデジタル暗号化を行うかどうかを判別したり、行う場合はその方法を判別したりします。)
このアノテーションの使用の詳細および例は、『Oracle WebLogic Server WebLogic Webサービスの保護』のOracle Webサービス・セキュリティ・ポリシーの使用に関する項を参照してください。
注意: すべてのJWSのアノテーションにあてはまることですが、@SecurityPolicy アノテーションは実行時にはオーバーライドできません。つまり、ビルド時にアノテーションを使用して指定したOracle WSM WS-Policyファイルが、常にWebサービスに関連付けられることになります。これは、たとえば管理コンソールを使用して実行時に関連付けられたOracle WSM WS-Policyファイルを確認できても、それを削除(関連付け解除)することはできないことを意味します。ただし、管理コンソールを使用して追加のOracle WSM WS-Policyファイルを関連付けることはできます。手順の詳細は、『Oracle WebLogic Server WebLogic Webサービスの保護』の管理コンソールでOracle WSMセキュリティ・ポリシーの構成に関する項を参照してください。 |
表3-38 weblogic.jws.SecurityPolicy JWSアノテーション・タグ属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
uri |
Oracle WSM WS-Policyファイルを取得する場所を指定します。 Web上のOracle WSM WS-PolicyファイルのURLを指定するには、 Oracle WSM WS-PolicyファイルがWebLogic ServerのWebサービス・アーカイブ・ファイルまたは共有可能なJava EEライブラリにパッケージ化されていることを指定する場合は、以下の例のように @SecurityPolicy(uri= "policy:oracle/wss10_username_token_with_message_protection_server_policy") |
String |
はい |
以降の項では、アノテーションを詳細に説明します。
ターゲット:クラス、メソッド
アノテーション付きのクラスまたはメソッドをWebサービス原子性トランザクション内で実行するかどうかを指定します。
Webサービス・クラス・レベルで@Transactional
アノテーションを指定すると、サービス・エンドポイント・インタフェースで定義されたすべての双方向同期メソッドに設定が適用されます。フロー・タイプの値はメソッド・レベルでオーバーライドできますが、バージョンはトランザクション全体で一致している必要があります。
WebLogic Webサービスでは、次の仕様をサポートすることで、Websphere、JBoss、Microsoft .NETなどの外部トランザクション処理システムとの相互運用性を実現しています。
WS-AtomicTransaction(WS-AT)バージョン1.0、1.1および1.2: http://docs.oasis-open.org/ws-tx/wstx-wsat-1.2-spec-cs-01/wstx-wsat-1.2-spec-cs-01.html
WS-Coordinationバージョン1.0、1.1および1.2: http://docs.oasis-open.org/ws-tx/wstx-wscoor-1.2-spec-cs-01/wstx-wscoor-1.2-spec-cs-01.html
表3-39 weblogic.wsee.wstx.wsat.Transactionalアノテーションの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
version |
Webサービスおよびクライアントに対して使用されるWebサービス原子性トランザクション調整コンテキストのバージョン。クライアントの場合、アウトバウンド・メッセージに使用されるバージョンのみを指定します。指定した値は、トランザクション全体で一致している必要があります。 有効な値は、 例: @Transactional(version= Transactional.Version.WSAT10]) |
String |
いいえ |
value |
Webサービス原子性トランザクション調整コンテキストがトランザクション・フローとともに渡されるかどうか。有効な値は、表3-40を参照してください。 |
String |
いいえ |
次の表は、フロー・タイプの有効な値と、Webサービスおよびクライアントでのそれらの意味をまとめたものです。この表では、@TransactionAttribute
アノテーションを使用するEJB型のWebサービスに対してWebサービス原子性トランザクションを構成する際の有効な値の組合せも示しています。
表3-40 フロー・タイプの値
値 | Webサービス・クライアント | Webサービス | EJB @TransactionAttribute の有効な値 |
---|---|---|---|
|
トランザクション調整コンテキストをエクスポートしません。 |
トランザクション調整コンテキストをインポートしません。 |
|
|
トランザクションがある場合は、トランザクション調整コンテキストをエクスポートします。 |
トランザクション調整コンテストがメッセージに存在する場合は、それをインポートします。 |
|
|
トランザクション調整コンテキストをエクスポートします。アクティブなトランザクションがない場合は、例外がスローされます。 |
トランザクション調整コンテキストをインポートします。アクティブなトランザクションがない場合は、例外がスローされます。 |
|