3 JWSアノテーション・リファレンス
WebLogic Webサービスのプログラミング・モデルは、JSR-175で指定されているJDK 5.0メタデータ・アノテーション機能を使用します。JSR-175は、JavaTMプログラミング言語のメタデータ機能で、WebLogic固有のJWSアノテーションを提供します。
JWSアノテーション・タグの概要
メタデータ・アノテーション・プログラミング・モデルでは、アノテーション付きのJavaファイルを作成し、Antタスクを使用してそのファイルをJavaソース・コードにコンパイルし、関連するアーティファクトをすべて生成します。
アノテーション付きのJava Webサービス(JWS)ファイルは、Webサービスの中核部分です。このファイルにはWebサービスの動作を決定するJavaコードが含まれています。JWSファイルは、アノテーションを使用してWebサービスの形式や特性を指定した、通常のJavaクラス・ファイルです。
サポートされるJWSアノテーションは、JAX-WSを作成しているか、JAX-RPC Webサービスを作成しているかによって異なります。次の表は、JAX-WSとJAX-RPCにおけるWebサービスのアノテーション・サポートの比較を示しています。
表3-1 Webサービスのアノテーション・サポート
アノテーション | JAX-WS | JAX-RPC |
---|---|---|
Y |
Y |
|
Y |
N |
|
Y |
N |
|
Y |
N |
|
Y |
Y |
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サービス・メタデータ・アノテーション(JSR-181)
javax.jws
(http://docs.oracle.com/javaee/7/api/javax/jws/package-summary.html
)またはjavax.jws.soap
(http://docs.oracle.com/javaee/7/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アノテーション
このアノテーションは... | 次を指定します |
---|---|
|
クラス・レベルで、JWSファイルがWebサービスを実装すること。詳細は、Oracle WebLogic Server JAX-WS Webサービスの開発またはOracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発の、「JWSファイルを使用したWebサービス実装の指定( |
|
JWSファイルのメソッドをWebサービスのパブリック操作として公開する必要があること。詳細は、Oracle WebLogic Server JAX-WS Webサービスの開発またはOracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発の、「JWSメソッドのパブリック操作としての公開の指定( |
|
操作が呼出し側アプリケーションに値を戻さないこと。詳細は、Oracle WebLogic Server JAX-WS Webサービスの開発またはOracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発の、「JWSメソッドのパブリック操作としての公開の指定( |
|
Webサービス操作の入力パラメータと生成されたWSDLファイルの要素のマッピング、およびパラメータの動作。詳細は、Oracle WebLogic Server JAX-WS Webサービスの開発またはOracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発の「操作パラメータとWSDL要素とのマッピングのカスタマイズ(@WebParamアノテーション)」を参照してください。 |
|
Webサービス操作の戻り値と生成されたWSDLファイルの対応する要素のマッピング。詳細は、Oracle WebLogic Server JAX-WS Webサービスの開発またはOracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発の「操作の戻り値とWSDL要素とのマッピングのカスタマイズ( |
|
外部ハンドラ・チェーン。詳細は、Oracle WebLogic Server JAX-WS Webサービスの開発またはOracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発の「SOAPメッセージ・ハンドラの作成と使用」を参照してください。 |
|
クラス・レベルでWebサービスのSOAPバインディング( |
JAX-WSアノテーション(JSR-224)
javax.xml.ws
パッケージ(http://docs.oracle.com/javaee/7/api/javax/xml/ws/package-summary.html
)により使用できます。詳細な説明は、JAX-WS 2.1アノテーション(http://jax-ws.java.net/nonav/2.1.4/docs/annotations.html
)にあります。
注意:
JAX-WS JWSアノテーションは、JAX-WS Webサービスにのみ関連します。この項の内容は、JAX-RPC Webサービスには適用されません。
表3-3 JAX-WS (JSR-244)アノテーション
このアノテーションは... | 次を指定します |
---|---|
|
WS-Addressing |
|
Webサービスの実装クラスに使用するバインディング。『Oracle WebLogic Server JAX-WS Webサービスの開発』のエンドポイントに使用するバインディング・タイプの指定(@BindingTypeアノテーション)に関する項を参照してください。 |
|
WS-Addressing |
|
実行時にエンドポイント・インタフェースのメソッドに使用されるリクエスト・ラッパーBean。 |
|
実行時にエンドポイント・インタフェースのメソッドに使用されるレスポンス・ラッパーBean。 |
|
プロバイダ実装がプロトコル・メッセージ全体を対象とするのか、ペイロードのみを対象にするのか。 |
|
生成されたサービス・インタフェースの |
|
フォールト要素のローカルおよびネームスペース名、フォールトBeanの名前をそれぞれカスタマイズするためのサーバー固有の例外クラス。 |
|
生成されたサービス・インタフェース。 |
|
プロバイダ実装クラス。 |
|
Webサービスへの参照。『Oracle WebLogic Server JAX-WS Webサービスの開発』の@WebServiceRefアノテーションを使用したWebサービス参照の定義に関する項を参照してください。 |
JAXBアノテーション(JSR-222)
http://jcp.org/en/jsr/detail?id=222
に記載されており、使用できるアノテーションは次の表に要約されています。これらの各アノテーションは、http://docs.oracle.com/javaee/7/api/javax/xml/bind/annotation/package-summary.html
のjavax.xml.bind.annotation
パッケージを使用することで利用できます。詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』のJAXBアノテーションを使用したJava-to-XMLスキーマ・マッピングのカスタマイズに関する項、またはJAXB (http://jcp.org/en/jsr/detail?id=222
のJSR-222)の仕様を参照してください。
注意:
JAXB JWSアノテーションは、JAX-WS Webサービスにのみ関連します。この項の内容は、JAX-RPC Webサービスには適用されません。
表3-4 JAXBマッピング・アノテーション(JSR-222)
このアノテーションは... | 次を指定します |
---|---|
|
デフォルトでフィールドまたはプロパティをシリアライズするかどうか。『Oracle WebLogic Server JAX-WS Webサービスの開発』のフィールドおよびプロパティのデフォルト・シリアライゼーションの指定(@XmlAccessorType)に関する項を参照してください。 |
|
クラスに格納されているプロパティを、格納しているクラスがマップされているXMLスキーマの複合型のローカル要素へマップすること。『Oracle WebLogic Server JAX-WS Webサービスの開発』のプロパティとローカル要素とのマッピング(@XmlElement)に関する項を参照してください。 |
|
WebサービスのWSDLによって使用されるXMLスキーマのグローバル要素に最上位クラスをマップすること。『Oracle WebLogic Server JAX-WS Webサービスの開発』の最上位クラスとグローバル要素のマッピング(@XmlRootElement)に関する項を参照してください。 |
|
現在のクラスをバインドするときにバインドする他のクラス。『Oracle WebLogic Server JAX-WS Webサービスの開発』の複数のクラスのバインディング(@XmlSeeAlso)に関する項を参照してください。 |
|
クラス型または列挙型をXMLスキーマ型にマップすること。『Oracle WebLogic Server JAX-WS Webサービスの開発』の値クラスとスキーマ型のマッピング(@XmlType)に関する項を参照してください。 |
共通アノテーション(JSR-250)
javax.annotation
パッケージ(http://docs.oracle.com/javaee/7/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)
このアノテーションは... | 次を指定します |
---|---|
|
アプリケーションが必要とするリソース。アノテーションは、アプリケーション・コンポーネント・クラス、コンポーネント・クラスのフィールドまたはメソッドに適用できます。 |
|
依存関係インジェクションが完了した後に、初期化を実行するために呼び出す必要のあるメソッド。 |
|
コンテナがインスタンスを削除しようとしていることを知らせるコールバック通知を受信するメソッド。 |
WebLogic固有のアノテーション
表3-6 WebLogic固有のアノテーション
このアノテーションは... | 指定内容 | JAX-WS/JAX-RPC/両方 |
---|---|---|
Webサービス・クライアントがSOAP over JMSトランスポート接続プロトコルをサポートすること。 |
JAX-WS |
|
WebサービスがSOAP over JMSトランスポート接続プロトコルをサポートすること。 |
JAX-WS |
|
メインJWSファイルが別のWebサービス操作を非同期的に呼び出したときに発生する可能性のある障害を処理するメソッド。 |
JAX-RPC |
|
メインJWSファイルが別のWebサービス操作を非同期的に呼び出したときのレスポンスを処理するメソッド。 |
JAX-RPC |
|
SOAP (Simple Object Access Protocol)メッセージの送受信時に、WebサービスがSOAP実装のバージョン1.1または1.2を使うか。 |
JAX-RPC |
|
WebLogic Serverが次を格納するJMSキューのJNDI名:
|
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 ServerによるJMSキューからWebサービス実装へのメッセージ配信試行回数、およびサーバーが待機すべき再試行間隔など、信頼性のあるWebサービス操作に対する信頼性のあるメッセージングのプロパティ。 |
JAX-RPC |
|
クライアントWebサービスが信頼性のあるWebサービスを呼び出したが、信頼性のあるWebサービスが実際にそのメッセージを受け取ったという確認応答をそのクライアントが受信しなかった場合に発生するエラーを処理するメソッド。 |
JAX-RPC |
|
JWSファイルのアノテーション付き変数が、以下の機能を使用するときに、別のWebLogic Webサービスを呼び出すスタブであることを指定します。
|
JAX-RPC |
|
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 |
|
Webサービスのコールバック・メソッドを呼び出す許可を与えられたロールをリストする |
JAX-RPC |
|
Webサービスの基本認証を有効にするかどうか。 |
JAX-RPC |
|
Webサービスの呼出しが許可されている実際のロールを参照する、ロール名のリスト。 |
JAX-RPC |
|
WebLogic ServerでWebサービスを実際に実行するロールおよびユーザーのアイデンティティ。 |
JAX-RPC |
|
Webサービスの呼出しを許可されているロールの名前。 |
JAX-RPC |
|
Webサービスの呼出しを許可されている、指定済のロールにリンクするロール名参照。 |
JAX-RPC |
|
クライアントがWebサービスを呼び出す際に、HTTPSトランスポートの使用が必要であるかどうか。 |
JAX-RPC |
|
Webサービスで使用するWebサービス・セキュリティ構成の名前。 |
両方 |
|
SOAPメッセージ・プロトコルに対するWebサービス操作のマッピング。 |
JAX-RPC |
|
Webサービス操作にアクセスできるロール。 |
JAX-RPC |
|
呼び出されたときにWebサービスが想定するアイデンティティ。 |
JAX-RPC |
|
ポリシー構成プロパティのオーバーライド。 このアノテーションを |
JAX-WS |
|
|
JAX-WS |
|
Oracle Web Services Manager (OWSM)のセキュリティ・ポリシーがWebサービスまたはクライアントにアタッチされること。 |
JAX-WS |
|
|
JAX-WS |
|
デジタル署名または暗号化に関する情報を格納しているOracle Web Services Manager (Oracle WSM) WS-PolicyファイルをリクエストまたはレスポンスSOAPメッセージに適用するように指定します。 |
JAX-WS |
|
アノテーション付きのクラスまたはメソッドをWebサービス原子性トランザクション内で実行するかどうか。 |
JAX-WS |
com.oracle.webservices.api.jms.JMSTransportClient
ターゲット: クラス
JAX-WS Webサービス・クライアントについて、SOAP over JMSトランスポートを有効化および構成します。
SOAP over JMSトランスポートを使用し、HTTP接続ではなくJMSの宛先によりWebサービスおよびクライアントが通信を行う場合、次のような利点があります。
-
信頼性
-
スケーラビリティ
-
サービス品質
SOAP over JMSトランスポートの使用方法の詳細は、Oracle WebLogic Server JAX-WS Webサービスの開発の接続プロトコルとしてのSOAP Over JMSトランスポートの使用を参照してください。
属性
オプションで、@JMSTransportClient
アノテーションを使用して、次のJMSトランスポート・プロパティを構成できます。プロパティの詳細は、Oracle WebLogic Server JAX-WS Webサービスの開発のJMSトランスポートのプロパティの構成を参照してください。
-
destinationName
-
destinationType
-
enabled
-
jmsHeaderProperty
-
jmsMessageProperty
-
jndiConnectionFactoryName
-
jndiContextParameters
-
jndiInitialContextFactory
-
jndiURL
-
messageType
-
priority
-
replyToName
-
targetService
-
timeToLive
注意:
『Oracle WebLogic Server JAX-WS Webサービスの開発』で説明されているように、SOAP over JMSトランスポートをWebサービスの信頼できるメッセージングまたはストリーミングSOAPアタッチメントと一緒には使用できません。
例
次のサンプル・スニペットでは、クライアント・ファイル内で@JMSTransportClient
アノテーションを使用してSOAP over JMSトランスポートを有効にする方法を示しています。
... import javax.xml.ws.WebServiceClient; import com.oracle.webservices.api.jms.JMSTransportClient; ... @WebServiceClient(name = "WarehouseService", targetNamespace = "http://oracle.com/samples/", wsdlLocation="WarehouseService.wsdl") @JMSTransportClient ( destinationName="myQueue", replyToName="myReplyToQueue", jndiURL="t3://localhost:7001", jndiInitialContextFactory="weblogic.jndi.WLInitialContextFactory" , jndiConnectionFactoryName="weblogic.jms.ConnectionFactory" , deliveryMode="PERSISTENT", timeToLive="1000", priority="1", messageType="TEXT" ) public class WarehouseService extends Service { ... }
com.oracle.webservices.api.jms.JMSTransportService
ターゲット: クラス
JAX-WS Webサービスについて、SOAP over JMSトランスポートを有効化および構成します。
SOAP over JMSトランスポートを使用し、HTTP接続ではなくJMSの宛先によりWebサービスおよびクライアントが通信を行う場合、次のような利点があります。
-
信頼性
-
スケーラビリティ
-
サービス品質
SOAP over JMSトランスポートの使用方法の詳細は、Oracle WebLogic Server JAX-WS Webサービスの開発の接続プロトコルとしてのSOAP Over JMSトランスポートの使用を参照してください。
注意:
SOAP over JMSトランスポートは、信頼性のあるメッセージングおよびHTTPトランスポート固有のセキュリティのWebサービス機能とは互換性がありません。
属性
オプションで、@JMSTransportService
アノテーションを使用してJMSトランスポートのプロパティを構成できます。プロパティの詳細は、Oracle WebLogic Server JAX-WS Webサービスの開発のJMSトランスポートのプロパティの構成を参照してください。
例
次のサンプル・スニペットでは、JWSファイル内で@JMSTransportService
アノテーションを使用してSOAP over JMSトランスポートを有効にする方法を示しています。@ActivationConfigProperty
は、サービス側のMDB構成プロパティの設定に使用されています。
import javax.jws.WebService; import com.oracle.webservices.api.jms.JMSTransportService; import com.sun.xml.ws.binding.SOAPBindingImpl; import javax.ejb.ActivationConfigProperty; @WebService(name="NotifyServicePortType", serviceName="NotifyService", targetNamespace="http://examples.org/") @JMSTransportService(destinationName="myQueue", activationConfig = { @ActivationConfigProperty( propertyName = "destinationType", propertyValue = "javax.jms.Topic"), @ActivationConfigProperty( propertyName = "subscriptionDurability", propertyValue = "Durable"), @ActivationConfigProperty(propertyName = "topicMessagesDistributionMode", propertyValue = "One-Copy-Per-Application")}) @BindingType(SOAPBindingImpl.SOAP11_JMS_BINDING) public class NotifyServiceImpl {..}
weblogic.jws.AsyncFailure
ターゲット: メソッド
メイン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
MethodName
AsyncFailure
)非同期障害の処理方法を判別するので、各Webサービスは、名前が似ているメソッドを持っている必要があります。ただし、操作のいずれか1つから非同期障害を処理するメソッドとスタブとの間に必ず1対1の対応が必要な場合は、@AsyncFailure
を明示的に使用することをお薦めします。
このアノテーションの使用の詳細および例は、Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発の非同期のリクエストとレスポンスを使用したWebサービスの呼出しを参照してください。
属性
次の表に、@AsyncFailure
アノテーションの属性の一覧を示します。
表3-7 weblogic.jws.AsyncFailureアノテーションの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
操作を非同期的に呼び出すWebサービスのスタブの名前。 スタブは、 |
String |
はい |
|
非同期的に呼び出す操作の名前。 この名前は、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
メソッドによって処理されます。
weblogic.jws.AsyncResponse
ターゲット: メソッド
メイン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
MethodName
AsyncResponse
)非同期レスポンスの処理方法を判別するので、各Webサービスは、名前が似ているメソッドを持っている必要があります。ただし、操作のいずれか1つから非同期レスポンスを処理するメソッドとスタブとの間に必ず1対1の対応が必要な場合は、@AsyncResponse
を明示的に使用することをお薦めします。
このアノテーションの使用の詳細および例は、Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発の非同期のリクエストとレスポンスを使用したWebサービスの呼出しを参照してください。
属性
表3-8 weblogic.jws.AsyncResponse JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
操作を非同期的に呼び出すWebサービスのスタブの名前。 スタブは、 |
String |
はい |
|
非同期的に呼び出す操作の名前。 この名前は、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
メソッドによって処理されます。
weblogic.jws.Binding
ターゲット: クラス
SOAP (Simple Object Access Protocol)メッセージの送受信時に、WebサービスでSOAP実装のバージョン1.1を使うのか、バージョン1.2を使うのかを指定します。デフォルトでは、WebLogic WebサービスはSOAP 1.1を使用します。
属性
表3-9 weblogic.jws.Binding JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
Webサービスを呼び出す際に、リクエストおよびレスポンスのSOAPメッセージにおいて使用するSOAPのバージョンを指定します。 この属性の有効な値は次のとおりです:
デフォルト値は |
enum |
いいえ |
例
次に、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) { ... } }
weblogic.jws.BufferQueue
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
Logic Serverが次を格納するJMSキューのJNDI名を指定します:
-
バッファ付き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 Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発のバッファ済Webサービスの作成とWebサービスの信頼性のあるメッセージングの使用を参照してください。
属性
表3-10 weblogic.jws.BufferQueue JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
バッファ付きまたは信頼性のある操作の呼出しを入れるJMSキューのJNDI名。 |
String |
はい |
例
以下の例では、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); } }
weblogic.jws.Callback
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: フィールド
アノテーション付き変数がコールバックであることを指定します。つまり、アノテーション付き変数を使って、ターゲット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 Fusion Middleware 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); } }
weblogic.jws.CallbackMethod
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: メソッド
コールバック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 Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発のコールバックによるクライアントへのイベントの通知を参照してください。
属性
表3-11 weblogic.jws.CallbackMethod JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
このメソッドで処理するコールバック・メッセージのコールバック・インタフェース内のコールバック・メソッドの名前を指定します。 |
String |
はい |
|
コールバックを受け取るスタブの名前を指定します。 スタブは、 |
String |
はい |
例
次に、@CallbackMethod
アノテーションが付けられているクライアントWebサービスのメソッドを示します。この属性では、port
という変数に前もってスタブ情報が注入されていること、およびアノテーション付きメソッドがcallbackOperation()
というコールバック操作から受信したメッセージを処理することが示されています。
@CallbackMethod(target="port", operation="callbackOperation")
@CallbackRolesAllowed(@SecurityRole(role="engineer", mapToPrincipals="shackell"))
public void callbackHandler(String msg) {
System.out.println (msg);
}
weblogic.jws.CallbackService
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
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 Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発のコールバックによるクライアントへのイベントの通知を参照してください。
属性
表3-12 weblogic.jws.CallbackService JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
コールバックWebサービスの名前。WSDLファイルの デフォルト値は、JWSファイルのJavaクラスの未修飾名です。 |
String |
いいえ |
|
コールバックWebサービスのサービス名。WSDLファイルの デフォルト値は、JWSファイルのJavaクラスの未修飾名に、文字列 |
String |
いいえ |
例
次に、非常に簡単なコールバック・インタフェースの例を示します。結果のコールバック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); }
weblogic.jws.Context
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: フィールド
アノテートされたフィールドが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サービスの実行時情報へのアクセスを参照してください。
このアノテーションには、属性はありません。
weblogic.jws.Conversation
説明
ターゲット: メソッド
@Conversation
アノテーション付きのメソッドが、2つのWebLogic Webサービスの間の会話、またはスタンドアロンJavaクライアントと会話形式のWebサービスとの間の会話の一部として呼び出すことができるように指定します。
会話形式のWebサービスは通常、3つのメソッドを指定します。各メソッドには、会話の開始、継続、終了の各フェーズに対応する@Conversation
アノテーションが付けられています。@Conversational
アノテーションは、Webサービスが会話形式になるようにクラス・レベルで指定する場合、および最大アイドル時間などの会話のプロパティを構成する場合に使用します。
2つのWebサービスの間の会話の場合、クライアント・サービスでは、@ServiceClient
アノテーションを使用して、wsdl、サービス名、呼び出された会話サービスのポートを指定します。サービスとスタンドアロン・クライアントとの間の会話の場合、クライアントは、開始メソッド、継続メソッド、および終了メソッドを適切な順序で呼び出し、会話を行います。Webサービスを会話形式にするために、唯一の追加要件として、java.io.Serializable
を実装する必要があります。
このアノテーションの使用の詳細および例は、Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発の会話形式のWebサービスの作成を参照してください。
属性
表3-13 weblogic.jws.Conversation JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
アノテーション付きのメソッドが実装する会話のフェーズを指定します。 指定できる値は次のとおりです。
デフォルト値は |
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 } }
weblogic.jws.Conversational
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
JWSファイルが会話形式のWebサービスを実装するように指定します。
Webサービスを会話形式にするために、このアノテーションを使用する必要はありません。@Conversation
アノテーションを1つのメソッドに付けるだけで、JWSファイルのすべてのメソッドは自動的に会話形式になります。クラス・レベルの@Conversational
アノテーションは、会話形式の動作の一部を変更する場合や、クラス・レベルでJWSが会話形式であることを明示する場合にのみ使用します。
JWSファイルで@Conversational
アノテーションを使用しない場合でも、デフォルト値がニーズに合っていれば、属性なしでアノテーションを指定できます。ただし、会話で可能な最大アイドル時間、会話の最大継続時間などの値を変更する場合は、それぞれに対応した属性を指定します。
このアノテーションの使用の詳細および例は、Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発の会話形式のWebサービスの作成を参照してください。
属性
表3-14 weblogic.jws.Conversational JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
WebLogic Serverによって終了されるまで、会話がアイドル状態を維持できる時間を指定します。アクティビティは、会話のいずれかのフェーズを実行しているクライアントWebサービスによって定義されます。 有効な値は数値で、以下のいずれかです。
たとえば、最大アイドル時間を10分に設定するには、次のようにアノテーションを指定します。 @Conversational(maxIdleTime="10 minutes") 0の値( デフォルト値は |
String |
いいえ |
|
WebLogic Serverによって終了されるまで、会話がアクティブ状態を維持できる時間。 有効な値は数値で、以下のいずれかです。
たとえば、最大アイドル時間を3日に設定するには、次のようにアノテーションを指定します。 @Conversational(maxAge="3 days") デフォルト値は「 |
String |
いいえ |
|
既存の会話の継続フェーズと終了フェーズが、会話を開始したユーザーによって実行されるかどうかを指定します。 通常、同じユーザーが会話の開始、継続、および終了メソッドを実行するので、この属性の値を変更しても、何の影響もありません。ただし、 有効な値は、 |
ブール |
いいえ |
|
会話を開始したユーザーとは別のユーザーが会話の継続フェーズと終了フェーズを実行できるかどうかを指定します。 通常、同じユーザーが会話のすべてのフェーズを実行します。ただし、この属性を 有効な値は、 |
ブール |
いいえ |
例
以下のサンプル・スニペットでは、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.jws.FileStore
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
会話状態などの内部状態情報の格納に、WebLogic Serverのデフォルト・ファイル・ストアではなく、プログラマ指定のファイル・ストアを使用することを指定します。JWSファイルでこのJWSアノテーションを指定しなかった場合、WebサービスではWebLogic Serverに構成されているデフォルト・ファイル・ストアが使用されます。
信頼性のあるWebサービスの内部状態の格納に対しても、このJWSアノテーションを使用できます。
Webサービスをクラスタにデプロイする場合は、クラスタ内のすべてのサーバーでファイル・ストアが同じ名前で使用できるように、ファイル・ストアの論理名を指定してください。
注意:
このアノテーションはファイル・ストアにのみ適用され、JDBCストアには適用されません。
weblogic.jws.MessageBuffer
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス、メソッド
JWSのどのパブリック・メソッドがバッファされるかを指定します。クラス・レベルで指定した場合、すべてのパブリック・メソッドがバッファされます。一部のメソッドのみバッファする場合、適切なメソッド・レベルでアノテーションを指定します。
クライアントWebサービスが、別のWebLogic Webサービスのバッファ付き操作を呼び出すと、呼び出されたWebサービスをホストしているWebLogic Serverは、呼出しメッセージをJMSキューに入れ、実際の呼出しは、後でWebLogic ServerがJMSキューの先頭からWebサービスの実装にメッセージを配信したときに処理されます。クライアントは、レスポンスを待つ必要がなく、処理の実行を継続できます。このため、バッファリングされた操作(追加の非同期機能なしの場合)は、void
のみを戻すことができ、@Oneway
アノテーションが付けられている必要があります。値を戻す操作をバッファリングする場合は、呼出し側のクライアントWebサービスからの非同期のリクエストとレスポンスも使用する必要があります。詳細は、Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発の非同期のリクエストとレスポンスを使用したWebサービスの呼出しを参照してください。
バッファリングは、バッファされた一方の操作をもう一方が呼び出す2つのWebサービスの間でのみ機能します。
@MessageBuffer
の省略可能な属性を使用すると、JMSキューによる、バッファされたWebサービス操作の呼出しが成功するまでの回数、およびその呼出しの間隔を指定できます。
省略可能なクラス・レベルの@BufferQueue
アノテーションを使用すると、呼出しメッセージを入れるJMSキューを指定できます。このアノテーションを指定しなかった場合、メッセージは、デフォルトWebサービス・キューweblogic.wsee.DefaultQueue
に入れられます。
このアノテーションの使用の詳細および例は、Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発のバッファ済Webサービスの作成を参照してください。
属性
表3-16 weblogic.jws.MessageBuffer JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
呼び出されたWebLogic ServerインスタンスのJMSキューが、呼出しメッセージをWebサービスの実装に問題なく配信できるまでの再試行回数を指定します。 デフォルト値は3です。 |
int |
いいえ |
|
メッセージ配信の再試行間隔を指定します。再試行間隔は、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.Policies
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス、メソッド
@weblogic.jws.Policy
アノテーションの配列を指定します。
このアノテーションは、複数のWS-PolicyファイルをJWSファイルのクラスまたはメソッドにアタッチする場合に使用します。アタッチするWS-Policyファイルが1つだけの場合は、@weblogic.jws.Policy
を単独で使用できます。
このアノテーションの使用の詳細および例は、Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発のWebサービスの信頼性のあるメッセージングの使用と、Oracle WebLogic Server WebLogic Webサービスの保護のメッセージ・レベルのセキュリティの構成を参照してください。
このJWSアノテーションには、属性はありません。
weblogic.jws.Policy
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス、メソッド
デジタル署名、暗号化、または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 Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発のWebサービスの信頼性のあるメッセージングの使用と、Oracle WebLogic Server WebLogic Webサービスの保護のメッセージ・レベルのセキュリティの構成を参照してください。
属性
表3-17 weblogic.jws.Policy JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
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アプリケーションの開発の共有Java EEライブラリおよびオプション・パッケージの作成を参照してください。 |
String |
はい |
|
ポリシーをインバウンド・リクエストSOAPメッセージに対して適用するか、アウトバウンド・レスポンスSOAPメッセージに対して適用するか、またはその両方(デフォルト)に対して適用するかを指定します。 この属性の有効な値は次のとおりです:
デフォルト値は |
enum |
いいえ |
|
Webサービスを記述するWSDLにWS-Policyファイルをアタッチするかどうかを指定します。 有効な値は、 |
ブール |
いいえ |
weblogic.jws.ReliabilityBuffer
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: メソッド
WebLogic ServerによるJMSキューからWebサービス実装へのメッセージ配信試行回数、およびサーバーが待機すべき再試行間隔など、信頼性のあるWebサービス操作に対する信頼性のあるメッセージングのプロパティを指定します。
注意:
JWSファイルでこのアノテーションを指定する場合は、Webサービス用に信頼性のあるメッセージングを有効にするために、@Policy
アノテーションで、Webサービスの信頼性のあるメッセージング・ポリシー・アサーションがあるWS-Policyファイルも指定していることを前提にしています。
@ReliabilityBuffer
アノテーションを指定しているが、関連付けられているWS-Policyファイルで信頼性のあるメッセージングを有効にしていない場合、WebLogic Serverはこのアノテーションを無視します。
Webサービスの信頼性のあるメッセージングを有効にする方法の詳細は、Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発のWebサービスの信頼性のあるメッセージングの使用を参照してください。
属性
表3-18 weblogic.jws.ReliabilityBuffer JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
宛先のWebLogic ServerインスタンスのJMSキューが、信頼性のある操作を呼び出すクライアントからWebサービスの実装にメッセージを配信する際の再試行回数を指定します。 デフォルト値は3です。 |
int |
いいえ |
|
メッセージ配信の再試行間隔を指定します。再試行間隔は、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); } }
weblogic.jws.ReliabilityErrorHandler
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: メソッド
クライアントWebサービスが信頼性のあるWebサービスを呼び出したが、信頼性のあるWebサービスが実際にそのメッセージを受け取ったという確認応答をそのクライアントが受信しなかった場合に発生するエラーを処理するメソッドを指定します。
このアノテーションは、Webサービスの信頼性のあるメッセージング機能を実装する場合にのみ関係します。アノテーションは、信頼性のあるWebサービスを呼び出すクライアント側のWebサービスで指定します。
@ReliabilityErrorHandler
アノテーションを付けるメソッドでは、データ型weblogic.wsee.reliability.ReliabilityErrorContext
のパラメータを1つ取ります。このコンテキストを使うと、エラーの原因(エラーの原因となった操作、ターゲットWebサービス、フォルトなど)に関する詳細な情報を取得できます。メソッドは、void
を返す必要があります。
@ReliabilityErrorHandler
アノテーションの単一の属性では、クライアントWebサービスが呼び出している信頼性のあるWebサービスのスタブ情報を注入した変数を指定します。この情報は、@weblogic.jws.ServiceClient
アノテーションを使って変数に注入します。
属性
表3-19 weblogic.jws.ReliabilityErrorHandler JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
このメソッドで信頼性失敗を処理するターゲットのスタブ名を指定します。 |
String |
はい |
例
信頼性のある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
オブジェクトを使用して、このエラーの原因の詳細を取得します。
weblogic.jws.ServiceClient
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: フィールド
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 Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発を参照してください。
属性
表3-20 weblogic.jws.ServiceClient JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
呼び出すWebサービスの名前を指定します。呼び出されたWebサービスのWSDLにある JWSファイルを使用して、呼び出されたWebサービスを実装した場合、この属性は、そのWebサービスの |
String |
はい |
|
呼び出すWebサービスのポート名を指定します。 JWSファイルを使用して、呼び出されたWebサービスを実装した場合、この属性は、そのWebサービスの この属性を指定しなかった場合、WSDLの |
String |
いいえ |
|
呼び出すWebサービスを記述するWSDLファイルを指定します。 この属性を指定しなかった場合、クライアントWebサービスが使用するWSDLファイルは、呼び出されるWebサービスの |
String |
いいえ |
|
呼び出す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.jws.StreamAttachments
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
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; } }
weblogic.jws.Transactional
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス、メソッド
アノテーション付きの操作、またはアノテーションがクラス・レベルで指定されている場合はJWSファイルのすべての操作がトランザクション内で実行されるかどうかを指定します。デフォルトでは、操作はトランザクションでは実行されません。
属性
表3-21 weblogic.jws.Transactional JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
特定の操作(メソッド・レベルで使用する場合)またはWebサービスのすべての操作(クラス・レベルで指定されている場合)がトランザクション内で実行されるかどうかを指定します。 有効な値は、 |
ブール |
いいえ |
|
現在のトランザクションにおけるタイムアウト値(単位は秒)を指定します。 この属性のデフォルト値は |
int |
いいえ |
例
以下の例では、@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 + "'"; } }
weblogic.jws.Types
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: メソッド、パラメータ
戻り値またはパラメータの代替データ型の完全修飾Javaクラス名のカンマ区切りリストを指定します。代替データ型は、メソッド・シグネチャで指定されたデータ型を拡張する必要があります。これに当てはまらない場合、JWSファイルをWebサービスにコンパイルする際にjwsc
Antタスクは検証エラーを返します。
たとえば、Address
基本データ型を作成してから、このベース・タイプを拡張するUSAAddress
およびCAAddress
を作成しているものと仮定します。メソッド・シグネチャで、この型がAddress
パラメータを取ることが指定されている場合、このパラメータに@Types
アノテーションを付け、パブリック操作でも、基本Address
データ型の他に、パラメータとしてUSAAddress
およびCAAddress
を取るように指定できます。
このアノテーションを使うと、java.util.Collection
またはjava.util.List
など、コレクション・データ型の戻り値またはパラメータに格納可能なデータ型を制限することもできます。許容される格納データ型を制限することによって、生成されるWSDLは明確で一義的となり、クライアント・アプリケーションがWebサービス操作を呼び出す際、Webサービス・ランタイムはパラメータの適格確認処理を効率よく実行できます。
このアノテーションをメソッド・レベルで指定すると、適用対象は戻り値に限定されます。アノテーションをパラメータに適用する場合、各関連パラメータについて、パラメータ・レベルで指定する必要があります。
属性
表3-22 weblogic.jws.Types JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
コレクション・タイプのパラメータまたは戻り値に格納可能なデータ型、または元のデータ型のかわりに使用できる代替データ型の完全修飾クラス名のカンマ区切りリストです。 |
String[] |
はい |
例
次の例では、@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
を拡張するものと見なされています。
weblogic.jws.WildcardBinding
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
javax.xml.soap.SOAPElement
またはorg.apache.xmlbeans.XmlObject
などのワイルドカード・クラスがバインドする先のXMLスキーマ・データ型を指定します。デフォルトでは、これらのJavaデータ型は<xsd:any>
XMLスキーマ・データ型にバインドされます。このクラス・レベルのアノテーションを使用すると、ワイルドカード・クラスをかわりに<xsd:anyType>
にバインドするように指定できます。
属性
表3-23 weblogic.jws.WildcardBinding JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
このバインドが適用されるワイルドカード・クラスの完全修飾名を指定します。一般的な値は |
String |
はい |
|
ワイルドカード・クラスがバインドする先の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.WildcardBindings
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
@weblogic.jws.WildcardBinding
アノテーションの配列を指定します。
このJWSアノテーションには、属性はありません。
例については、weblogic.jws.WildcardBindingを参照してください。
weblogic.jws.WLHttpTransport
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
生成されたWSDLのポート名に加え、HTTPトランスポート形式でWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションを指定します。
このアノテーションは、JWSファイル内で最大で一度だけ指定できます。
属性
表3-24 weblogic.jws.WLHttpTransport JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
Webサービスのコンテキスト・パス。この値は、Webサービスを呼び出すURL内で使用します。 たとえば、Webサービスのコンテキスト・パスを http://hostname:7001/financial/GetQuote?WSDL この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが |
String |
いいえ |
|
URLのWebサービスURI部分。この値は、Webサービスを呼び出すURL内で使用します。 たとえば、この属性を http://hostname:7001/financial/GetQuote?WSDL この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが |
String |
いいえ |
|
生成されたWSDLのポートの名前。この属性は、WSDLの この属性のデフォルト値は、JWSファイルの |
String |
いいえ |
weblogic.jws.WLHttpsTransport
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
注意:
@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アノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
Webサービスのコンテキスト・パス。この値は、Webサービスを呼び出すURL内で使用します。 たとえば、Webサービスのコンテキスト・パスを https://hostname:7001/financial/GetQuote?WSDL この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが |
String |
いいえ |
|
URLのWebサービスURI部分。この値は、Webサービスを呼び出すURL内で使用します。 たとえば、この属性を https://hostname:7001/financial/GetQuote?WSDL この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが |
String |
いいえ |
|
生成されたWSDLのポートの名前。この属性は、WSDLの この属性のデフォルト値は、JWSファイルの |
String |
いいえ |
weblogic.jws.WLJmsTransport
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
生成されたWSDLのポート名に加え、JMSトランスポート形式でWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションを指定します。WebLogic Serverが操作の呼出しのSOAPリクエスト・メッセージを入れるJMSキューを指定する場合にも、このアノテーションを使用します。
このアノテーションは、JWSファイル内で最大で一度だけ指定できます。
属性
表3-26 weblogic.jws.WLJmsTransport JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
Webサービスのコンテキスト・パス(コンテキスト・ルート)。この値は、Webサービスを呼び出すURL内で使用します。 |
String |
いいえ |
|
クライアント・アプリケーションがWebサービスの呼出しに使用するURLのWebサービスURI部分。 |
String |
いいえ |
|
JMSトランスポート用に構成済のJMSキューのJNDI名。JMSトランスポートの使用の詳細は、Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発の接続プロトコルとしてのJMSトランスポートの使用を参照してください。 この属性を指定しない場合のデフォルト値は |
String |
いいえ |
|
生成されたWSDLのポートの名前。この属性は、WSDLの この属性を指定しない場合、 |
String |
いいえ |
|
JMSトランスポート用に構成済のJMS接続ファクトリのJNDI名。JMSトランスポートの使用の詳細は、Oracle Fusion Middleware 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.jws.WSDL
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
デプロイされた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
属性
表3-27 weblogic.jws.WSDL JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
デプロイされたWebサービスの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 {
...
}
weblogic.jws.security.CallbackRolesAllowed
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: メソッド、フィールド
Webサービスのコールバック・メソッドを呼び出す許可を与えられたロールをリストする@SecurityRole
JWSアノテーションの配列を指定します。未指定のロールにマップされたユーザー、またはロールにマップされていないユーザーは、コールバック・メソッドの呼出しを許可されません。
このアノテーションをフィールド・レベルで使用した場合、指定したロールは、Webサービスのすべてのコールバック操作の呼出しを許可されます。このアノテーションをメソッド・レベルで使用した場合、指定したロールは、コールバック・メソッドのみの呼出しを許可されます。両方のレベルで指定し、競合がある場合、メソッド値がフィールド値をオーバーライドします。
属性
表3-28 weblogic.jws.security.CallbackRolesAllowed JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
コールバック・メソッドの呼出しを許可されたロールをリストする |
String[] |
はい |
例
次に、メソッド・レベルで@CallbackRolesAllowed
アノテーションを使って、ロールengineer
がコールバック・メソッドの呼出しを許可されるように指定する例を示します。
@CallbackMethod(target="port", operation="callbackOperation")
@CallbackRolesAllowed(@SecurityRole(role="engineer", mapToPrincipals="shackell"))
public void callbackHandler(String msg) {
System.out.println (msg);
}
we3blogic.jws.security.RolesAllowed
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス、メソッド
Webサービスの基本認証を有効にするかどうかを指定します。具体的には、これはWebサービスを呼び出す許可を与えられたロールのリストを記述した@SecurityRole
JWSアノテーションの配列を指定します。未指定のロールにマップされたユーザー、またはロールにマップされていないユーザーは、Webサービスの呼出しを許可されません。
このアノテーションをクラス・レベルで使用した場合、指定したロールは、Webサービスのすべての操作の呼出しを許可されます。特定の操作群のみに対してロールを指定するには、アノテーションを操作レベルで指定します。
属性
表3-29 weblogic.jws.security.RolesAllowed JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
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セキュリティ・レルムにすでに追加されていることが前提となっています。
weblogic.jws.security.RolesReferenced
説明
ターゲット: クラス
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.jws.security.RunAs
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
WebLogic Server内のWebサービスを実際に実行するロールおよびユーザーのアイデンティティを指定します。
たとえば、@RunAs
アノテーションが、roleA
ロールとuserA
プリンシパルを指定すると仮定します。これは、WebサービスがuserB
(roleB
にマップされている)によって呼び出された場合でも、関連の操作は内部で実際にはuserA
として実行されているということです。
属性
表3-30 weblogic.jws.security.RunAs JWSアノテーションの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
Webサービスが実行されるロールを指定します。 |
String |
はい |
|
ロールにマップするプリンシパル・ユーザーを指定します。 通常はWebLogic Server管理コンソールを使用して、指定されたプリンシパル(ユーザー)を有効な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
として実行するということを指定する方法を示します。
weblogic.jws.security.SecurityRole
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス、メソッド
Webサービスの呼出しを許可されているロールの名前を指定します。このアノテーションは、JWSファイルの中で常に@RolesAllowed
配列のメンバーとして指定されます。
クライアント・アプリケーションは保護されたWebサービスを呼び出す際、基本認証の一部としてユーザーおよびパスワードを指定します。管理者はWebLogic Server管理コンソールを使用してユーザーを有効なWebLogic Serverユーザーとして構成済であることが前提となっています。詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのユーザーの作成を参照してください。
Webサービスを呼び出すユーザーは、関連のロールにもマップされている必要があります。このタスクは、次の2つの方法のいずれかによって実行できます。
-
WebLogic Server管理コンソールを使用して、ユーザーをロールにマップします。この場合、
@SecurityRole
アノテーションのmapToPrincipals
属性は指定しません。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのユーザーへのロールの割当てに関する項を参照してください。 -
mapToPrincipals
属性を使用して1人以上のユーザーを指定することで、Webサービスのコンテキスト内でのみユーザーをロールにマップします。
複数のロールがWebサービスの呼出しを許可されていることを指定するには、複数の@SecurityRole
アノテーションを@RolesAllowed
アノテーション内に含めます。
属性
表3-31 weblogic.jws.security.SecurityRole JWSアノテーションの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
Webサービスの呼出しを許可されているロールの名前。 |
String |
はい |
|
ロールにマップするユーザー名の配列。 この属性を指定しない場合は、通常WebLogic Server管理コンソールを使用してユーザーとロールの間のマッピングを外部で定義済であると想定されます。 |
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セキュリティ・レルムにすでに追加されていることが前提となっています。
weblogic.jws.security.SecurityRoleRef
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
Webサービスの呼出しを許可されている、指定済のロールにリンクするロール名参照を指定します。
ロール参照にマップされたユーザーは、参照されたロールがWebサービスの@RolesAllowed
アノテーションで指定されている限り、Webサービスを呼び出すことができます。
属性
表3-32 weblogic.jws.security.SecurityRoleRef JWSアノテーションの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
role |
ロール参照の名前。 |
String |
はい |
link |
Webサービスの呼出しを許可されている指定済のロールの名前。この属性の値は、同じJWSファイルで指定されている |
String |
はい |
例
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.jws.security.UserDataConstraint
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
クライアントが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アノテーションの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
クライアントが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 { ...
weblogic.jws.security.WssConfiguration
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
Webサービスで使用するWebサービス・セキュリティ構成の名前を指定します。JWSファイルでこのアノテーションを指定しなかった場合、デフォルトのセキュリティ構成(default_wss
)をドメインで作成済であれば、Webサービスは、そのセキュリティ構成に関連付けられます。
@WssConfiguration
アノテーションは、Webサービスでメッセージ・レベルのセキュリティ(暗号化およびデジタル署名)が構成されている場合にのみ有効です。このアノテーションを使用してWebサービスに関連付けられたセキュリティ構成では、アイデンティティの認証にX.509証明書を使用するかどうか、パスワード・ダイジェストを使用するかどうか、暗号化やデジタル署名にキーストアを使用するかどうかなどを指定します。
WebLogic Webサービスは、必ずしもセキュリティ構成と関連付ける必要はありません。Webサービスのセキュリティ・ランタイムのデフォルトの動作が十分なものであれば、追加の構成は不要です。しかし、Webサービスでデフォルトとは異なる動作が必要とされる場合(アイデンティティの認証に、デフォルトのユーザー名/パスワードのトークンではなくX.509証明書を使用する場合など)は、Webサービスにセキュリティ構成を関連付ける必要があります。
セキュリティ構成を指定したWebサービスを呼び出すことができるようにするには、あらかじめWebLogic Server管理コンソールでセキュリティ構成を作成しておく必要があります。詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのWebサービス・セキュリティ構成の作成を参照してください。メッセージ・レベルのセキュリティの概要は、Oracle WebLogic Server WebLogic Webサービスの保護のメッセージ・レベルのセキュリティの構成を参照してください。
注意:
@WssConfiguration
アノテーションを使用する場合、単一のWebアプリケーションにパッケージ化されているすべてのWebLogic Webサービスは同じセキュリティ構成に関連付けられている必要があります。たとえば、特定のWebアプリケーションに含まれるWebサービスを実装するすべてのJWSファイルに@WssConfiguration
アノテーションが存在している場合は、各@WssConfiguration
のvalue
属性が同じでなければなりません。
jwsc
Antタスクを使用してJWSファイルをWebサービスにコンパイルするときに複数のWebサービスが単一のWebアプリケーションに含まれていることを指定するには、単一の<module>
要素で対応する<jws>
要素をグループ化します。
属性
表3-34 weblogic.jws.security.WssConfiguration JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
このWebサービスに関連付けられたWebサービス・セキュリティ構成の名前を指定します。デフォルト構成名は Webサービスを問題なく呼び出すことができるようにするには、WebLogic Server管理コンソールであらかじめセキュリティ構成(デフォルト構成も含む)を作成しておく必要があります。 |
String |
はい |
例
以下の例では、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 { ...
weblogic.jws.soap.SOAPBinding
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: メソッド
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アノテーションの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
呼び出されたアノテーション付き操作のリクエストおよびレスポンスのSOAPメッセージのメッセージ・スタイルを指定します。 有効な値は次のとおりです:
デフォルト値は |
enum |
いいえ |
|
呼び出されたアノテーション付き操作のリクエストおよびレスポンスのSOAPメッセージのフォーマット・スタイルを指定します。 有効な値は次のとおりです:
デフォルト値は |
enum |
いいえ |
|
メソッド・パラメータがメッセージ本文を表しているかどうか、パラメータが操作に基づく名前の最上位の要素内にラップされている要素かどうかを判別します。 有効な値は次のとおりです:
デフォルト値は 注意: この属性は、ドキュメント・リテラル形式の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.jws.security.SecurityRoles (非推奨)
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス、メソッド
注意:
WebLogic Server 9.0以降では、@weblogic.security.jws.SecurityRoles
JWSアノテーションは非推奨となっています。
Webサービス操作にアクセスできるロールを指定します。
このアノテーションをクラス・レベルで指定した場合、指定したロールは、Webサービスのすべてのパブリック操作に適用されます。複数のロールを同じWebサービスの複数の操作に関連付ける場合は、メソッド・レベルでロールのリストを指定することもできます。
注意:
@SecurityRoles
アノテーションは、EJB実装のWebサービスのコンテキスト内でのみ有効です。そのため、このアノテーションは、javax.ejb.SessionBean
を明示的に実装しているJWSファイル内でのみ指定できます。EJBへのアクセス保護の概念については、WebLogicセキュリティ・サービスによるアプリケーションの開発のEnterprise JavaBeans (EJB)のセキュリティ対策を参照してください。JWSファイル内でのEJBの明示的な実装については、Oracle WebLogic Server JAX-WS Webサービスの開発のステートレス・セッションEJBを実装する必要がある場合を参照してください。
属性
表3-36 weblogic.jws.security.SecurityRoles JWSアノテーションの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
Webサービスにアクセスできるロールのリストを指定します。 このアノテーションは、Webサービスを実装するステートレス・セッションEJBの |
文字列の配列 |
いいえ |
|
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.jws.security.SecurityIdentity (非推奨)
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
注意:
WebLogic Server 9.1以降では、@weblogic.security.jws.SecurityIdentity
JWSアノテーションは非推奨となっています。
呼び出されたときにWebサービスが想定するアイデンティティを指定します。
異なる指定が行われていなければ、Webサービスは、認証された呼出し元のアイデンティティを想定します。このアノテーションを使用すると、Webサービスが特定のロールで実行されるように設定を変更できます。ロールは、WebLogic Serverのセキュリティ・レルム内のユーザーまたはグループに対応している必要があります。
注意:
@SecurityIdentity
アノテーションは、EJB実装のWebサービスのコンテキスト内でのみ有効です。そのため、このアノテーションは、javax.ejb.SessionBean
を明示的に実装しているJWSファイル内でのみ指定できます。EJBへのアクセス保護の概念については、WebLogicセキュリティ・サービスによるアプリケーションの開発のEnterprise JavaBeans (EJB)のセキュリティ対策を参照してください。JWSファイル内でのEJBの明示的な実装については、Oracle WebLogic Server JAX-WS Webサービスの開発のステートレス・セッションEJBを実装する必要がある場合を参照してください。
属性
表3-37 weblogic.jws.security.SecurityIdentity JWSアノテーションの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
呼び出されたWebサービスが前提とするロールを指定します。ロールは、WebLogic Serverのセキュリティ・レルム内のユーザーまたはグループに対応している必要があります。 |
String |
はい |
例
以下の例では、呼び出された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.Property
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
ポリシー構成プロパティのオーバーライドを指定します。
このアノテーションをweblogic.wsee.jws.jaxws.owsm.SecurityPolicy
アノテーションとともに使用すると、ポリシーをWebサービス・クライアントにアタッチするときに構成プロパティをオーバーライドできます。
注意:
このアノテーションは、Webサービス・クライアント専用です。Webサービス(サーバー側)のポリシー・アタッチメントについては、サポートされていません。
このアノテーションの使用の詳細と例は、Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理のアノテーションを使用したJava EE Webサービスおよびクライアントへのポリシーのアタッチを参照してください。
このJWSアノテーションには、属性はありません。
weblogic.wsee.jws.jaxws.owsm.SecurityPolicies
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
@weblogic.wsee.jws.jaxws.owsm.SecurityPolicies
アノテーションの配列を指定します。
このアノテーションは、複数のOWSMセキュリティ・ポリシーをJWSファイルのクラスにアタッチする場合に使用します。OWSMセキュリティ・ポリシーを1つのみアタッチする場合は、@weblogic.wsee.jws.jaxws.owsm.SecurityPolicy
アノテーションを使用できます。
このアノテーションの使用の詳細と例は、Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理のアノテーションを使用したJava EE Webサービスおよびクライアントへのポリシーのアタッチを参照してください。
このJWSアノテーションには、属性はありません。
weblogic.wsee.jws.jaxws.owsm.SecurityPolicy
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス
OWSMセキュリティ・ポリシー・ファイルをWebサービスまたはクライアントにアタッチします。
このアノテーションを単独で使用すると、単一のOWSMセキュリティ・ポリシーをクラスに適用できます。複数のOWSMセキュリティ・ポリシーをクラスにアタッチする場合は、@weblogic.wsee.jws.jaxws.owsm.SecurityPolicies
アノテーションを使用し、OWSMセキュリティ・ポリシーをまとめてアタッチします。
このアノテーションの使用の詳細と例は、Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理のアノテーションを使用したJava EE Webサービスおよびクライアントへのポリシーのアタッチを参照してください。
属性
表3-38 weblogic.wsee.jws.jaxws.owsm.SecurityPolicy JWSアノテーション・タグの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
OWSMセキュリティ・ポリシーの名前を指定します。 OWSMポリシーがOWSMポリシー・リポジトリにパッケージ化されていることを指定する場合は、次の例のように @SecurityPolicy(uri="policy:oracle/wss_saml20_token_over_ssl_service_policy") OWSMリポジトリの詳細は、Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理のOWSMリポジトリの管理を参照してください。 |
String |
はい |
|
注意: この属性は、Webサービス・クライアントに対してのみ指定できます。Webサービス(サーバー側)のポリシー・アタッチメントについては、この属性はサポートされていません。 ポリシー構成オーバーライド情報を指定します。 |
String |
いいえ |
|
OWSMポリシー・ファイルが有効かどうかを指定します。 有効な値は、 |
ブール |
いいえ |
例
次の例では、wss_saml20_token_over_ssl_service_policy
をWebサービスにアタッチする方法を示します。
@SecurityPolicy(uri="policy:oracle/wss_saml20_token_over_ssl_service_policy", enabled=true)
次の例では、wss10_message_protection_client_policy
をWebサービス・クライアントにアタッチしてkeystore.recipient.alias構成プロパティをオーバーライドする方法を示します。
@SecurityPolicy(uri="policy:oracle/wss10_message_protection_client_policy", properties = { @Property(name="keystore.recipient.alias", value="mykey") }, enabled=true)
weblogic.wsee.jws.jaxws.owsm.SecurityPolicies
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス、メソッド
@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アノテーションには、属性はありません。
weblogic.wsee.jws.jaxws.owsm.SecurityPolicy
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス、メソッド
デジタル署名または暗号化に関する情報を格納している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-39 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 |
はい |
weblogic.wsee.wstx.wsat.Transactional
以降の項では、アノテーションを詳細に説明します。
説明
ターゲット: クラス、メソッド
アノテーション付きのクラスまたはメソッドを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-40 weblogic.wsee.wstx.wsat.Transactionalアノテーションの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
|
Webサービスおよびクライアントに対して使用されるWebサービス原子性トランザクション調整コンテキストのバージョン。クライアントの場合、アウトバウンド・メッセージに使用されるバージョンのみを指定します。指定した値は、トランザクション全体で一致している必要があります。 有効な値は、 例: @Transactional(version= Transactional.Version.WSAT10]) |
String |
いいえ |
|
Webサービス原子性トランザクション調整コンテキストがトランザクション・フローとともに渡されるかどうか。有効な値は、表3-41を参照してください。 |
String |
いいえ |
次の表は、フロー・タイプの有効な値と、Webサービスおよびクライアントでのそれらの意味をまとめたものです。この表では、@TransactionAttribute
アノテーションを使用するEJB型のWebサービスに対してWebサービス原子性トランザクションを構成する際の有効な値の組合せも示しています。
表3-41 フロー・タイプの値
値 | Webサービス・クライアント | Webサービス | EJB @TransactionAttributeの有効な値 |
---|---|---|---|
|
トランザクション調整コンテキストをエクスポートしません。 |
トランザクション調整コンテキストをインポートしません。 |
|
|
トランザクションがある場合は、トランザクション調整コンテキストをエクスポートします。 |
トランザクション調整コンテストがメッセージに存在する場合は、それをインポートします。 |
|
|
トランザクション調整コンテキストをエクスポートします。アクティブなトランザクションがない場合は、例外がスローされます。 |
トランザクション調整コンテキストをインポートします。アクティブなトランザクションがない場合は、例外がスローされます。 |
|