Oracle® Fusion Middleware Oracle Infrastructure Webサービス開発者ガイド 11g リリース1(11.1.1) B61390-05 |
|
前 |
この付録では、Oracle Infrastructure Webサービスで使用される非同期Webサービスおよびポリシー注釈について説明します。
この付録のトピックは、次のとおりです。
WebLogic Webサービス・プログラミング・モデルでは、(http://www.jcp.org/en/jsr/detail?id=175
のJSR-175で規定されている)http://today.java.net/pub/a/today/2007/05/22/using-annotations-in-java-ee-5.html
機能のJDK 6.0メタデータ注釈を使用しています。このプログラミング・モデルでは、注釈付きのJavaファイルを使用してWebサービスの形状や特性を作成します。
表A-1は、この付録で説明している非同期Webサービスおよびポリシー注釈をまとめたものです。
使用可能な注釈の詳細は、Oracle Fusion Middleware Oracle Web ServicesのためのJava APIリファレンス』を参照してください。事前定義済ポリシーの詳細は、Web Servicesのセキュリティおよび管理者ガイドの事前定義済ポリシーに関する項を参照してください。
表A-1 Oracle Infrastructure Webサービスの注釈
注釈 | 説明 |
---|---|
|
WS-AddressingポリシーをWebサービスにアタッチします。 |
|
Webサービスを非同期Webサービスとして宣言します。 |
|
後で処理されるようリクエストを保存するために使用するキューの詳細を指定します。 |
@AsyncWebServiceResponseQueue注釈 |
後で処理されるようレスポンスを保存するために使用するキューを定義します。 |
|
このリリースでは使用されません。 |
|
管理ポリシーを、コールバック・サービスに接続される非同期Webサービスのコールバック・クライアントにアタッチします。 |
|
コールバックportType内の対応する操作のWSDLエンティティの名前をカスタマイズし、メソッドが同期か非同期かを設定し、レスポンスの自動送信を無効化できます。 |
|
MTOMポリシーを、コールバック・サービスに接続される非同期Webサービスのコールバック・クライアントにアタッチします。 |
|
コールバック・サービスをコールするときにメッセージ・コンテキスト内で必須となるプロパティを指定できます。 |
|
1つ以上のセキュリティ・ポリシーを、コールバック・サービスに接続される非同期Webサービスのコールバック・クライアントにアタッチします。 |
|
管理ポリシーをWebサービスにアタッチします。 |
|
MTOMポリシーをWebサービスにアタッチします。 |
|
JWSファイルがOracle Infrastructure Webサービスを実装することをクラス・レベルで指定します。 |
|
コールバック・サービスをコールするときにメッセージ・コンテキスト内で必須となる単一のプロパティを指定できます。 |
|
レスポンスWebサービス・ポート情報をカスタマイズします。 |
|
セキュリティ・ポリシーのリストをWebサービスにアタッチします。 |
|
セキュリティ・ポリシーをWebサービスにアタッチします。 |
oracle.webservices.annotations.AddressingPolicy
注釈は、WS-AddressingポリシーをWebサービスにアタッチします。
例:
@AddressingPolicy( value="oracle/wsaddr_policy",
enabled = "true")
次の表に、oracle.webservices.annotations.AddressingPolicy
注釈に渡すことができる属性を定義します。
oracle.webservices.annotations.async.AsyncWebService
注釈は、Webサービスを非同期Webサービスとして宣言します。
デフォルトでは、Webサービスに関連付けられた操作はすべて非同期となります。特定のメソッドを同期としてマークするには、「@CallbackMethod注釈」を参照してください。メソッドを同期的にも非同期的にもコールできるようにする場合は、メソッドを2つ作成して、それぞれに応じた注釈を付ける必要があります。
例:
@PortableWebService
@AsyncWebService
public class HelloService {
public String hello(String name) {
return "Hi " + name;
}
}
oracle.webservices.annotations.async.AsyncWebServiceQueue
注釈は、後で処理されるようリクエストを保存するために使用するキューを定義します。詳細は、リクエスト・キューおよびレスポンス・キューの構成に関する項を参照してください。
例:
@AsyncWebServiceQueue (
connectionFactory = "weblogic.jms.XAConnectionFactory",
queue = "oracle.j2ee.ws.server.async.NonDefaultRequestQueue",
enableTransaction = true
transactionTimeout=3600
messageProcessorInitialPoolSize=1
messageProcessorMaxPoolSize=16
)
次の表に、oracle.webservices.annotations.async.AsyncWebServiceQueue
注釈に渡すことができる属性を定義します。
表A-3 oracle.webservices.annotations.async.AsyncWebServiceQueue注釈の属性
属性 | 説明 | デフォルト |
---|---|---|
|
リクエスト・キューのJMSキュー接続ファクトリの名前。 |
weblogic.jmx.XAConnectionFactory |
|
非同期リクエストを格納するために使用するJMSキューの名前。 |
oracle.j2ee.ws.server.async.DefaultRequestQueue |
|
MDBが非同期リクエストをトランザクションとして処理する必要があるかどうかを指定するフラグ。 注意: ユーザー・トランザクションは、独立してコミットまたはロールバックできるように、MDBトランザクションとは別に保守されます。 |
false |
|
キューに並んだメッセージを処理するためのトランザクション・タイムアウト(秒単位)。この属性は、そのトランザクションが有効になっている場合かメソッドが多重呼出し不変ではない場合のみ有意です。このタイムアウトは、リクエスト・メッセージを処理するMDBに適用されます。 |
0: デフォルトでは、サーバーレベルで構成された値が使用されます。 |
|
プール内で非同期リクエストを処理するために使用可能なメッセージ・プロセッサ・インスタンスの最初の数。 この値の設定の詳細は、「カスタムのリクエスト・キューおよびレスポンス・キューの作成」を参照してください。 |
1 |
|
プール内で非同期リクエストを処理するために使用可能なメッセージ・プロセッサ・インスタンスの最大数。 値が大きいほど、スループットは向上します。ただし、使用されるリソース(スレッドやデータベース接続など)は多くなります。厳密なリソース要件は、非同期リクエスト・メッセージの保存に使用される永続ストアのタイプによって異なります。 この値の設定の詳細は、「カスタムのリクエスト・キューおよびレスポンス・キューの作成」を参照してください。 |
16 |
oracle.webservices.annotations.async.AsyncWebServiceResponseQueue
注釈は、後で処理されるようレスポンスを保存するために使用するキューを定義します。
例:
@AsyncWebServiceQueue (
connectionFactory = "weblogic.jms.XAConnectionFactory",
queue = "oracle.j2ee.ws.server.async.NonDefaultResponseQueue",
enableTransaction = true
messageProcessorInitialPoolSize=1
messageProcessorMaxPoolSize=16
)
次の表に、oracle.webservices.annotations.async.AsyncWebServiceResponseQueue
注釈に渡すことができる属性を定義します。
表A-4 oracle.webservices.annotations.async.AsyncWebService ResponseQueue注釈の属性
属性 | 説明 | デフォルト |
---|---|---|
|
レスポンス・キューが有効かどうかを指定するフラグ。有効になっている場合、リクエストMDBによってリクエストが処理され、レスポンスがレスポンス・キューに格納されます。無効になっている場合、リクエストMDBによってレスポンス処理が実行されます。 |
true |
|
リクエスト・キューのJMSキュー接続ファクトリの名前。 |
weblogic.jmx.XAConnectionFactory |
|
非同期レスポンスに使用されるJMSキューの名前。レスポンスMDBは、レスポンス・キューからメッセージを取得してコールバック・サービスに転送します。 |
oracle.j2ee.ws.server.async.DefaultResponseQueue |
|
MDBが非同期レスポンスをトランザクションとして処理する必要があるかどうかを指定するフラグ。 注意: ユーザー・トランザクションは、独立してコミットまたはロールバックできるように、MDBトランザクションとは別に保守されます。 |
false |
|
プール内で非同期レスポンスを処理するために使用可能なメッセージ・プロセッサ・インスタンスの最初の数。 この値の設定の詳細は、「カスタムのリクエスト・キューおよびレスポンス・キューの作成」を参照してください。 |
1 |
|
プール内で非同期レスポンスを処理するために使用可能なメッセージ・プロセッサ・インスタンスの最大数。 値が大きいほど、スループットは向上します。ただし、使用されるリソース(スレッドやデータベース接続など)は多くなります。厳密なリソース要件は、非同期リクエスト・メッセージの保存に使用される永続ストアのタイプによって異なります。 この値の設定の詳細は、「カスタムのリクエスト・キューおよびレスポンス・キューの作成」を参照してください。 |
16 |
このリリースでは、レスポンス・メッセージとコールバック・サービスとを相互に関連付けるためにWS-Addressingが使用されるため、oracle.webservices.annotations.async.CallbackAddressingPolicy
注釈は使用されません。将来的には、ポリシーをコールバック交換に通知するために、この注釈が使用される可能性があります。
oracle.webservices.annotations.async.CallbackManagementPolicy
注釈は、管理ポリシーを、コールバック・サービスに接続される非同期Webサービスのコールバック・クライアントにアタッチします。デフォルトではいずれの管理ポリシーもアタッチされません。
例:
@CallbackManagementPolicy("oracle/log_policy")
次の表に、oracle.webservices.annotations.async.CallbackManagementPolicy
注釈に渡すことができる属性を定義します。
oracle.webservices.annotations.async.CallbackMethod
注釈を使用すると、コールバックportType内の対応する操作のWSDLエンティティの名前をカスタマイズし、メソッドが同期か非同期かを設定できます。この注釈は、javax.jws.WebMethod注釈と似ています。
例:
@CallbackMethod(exclude=true)
次の表に、oracle.webservices.annotations.async.CallbackMethod
注釈に渡すことができる属性を定義します。
表A-6 oracle.webservices.annotations.async.CallbackMethod注釈の属性
属性 | 説明 | デフォルト |
---|---|---|
|
コールバックportType内の注釈付きメソッドに対応するコールバック・メソッドの名前。この注釈は、POJO実装クラスからコールバック・インタフェースを生成する際に使用されるのみで、実行時には無視されます。 |
"onResult" + <注釈付きメソッドの名前> |
|
コールバックportType内のこのメソッドのwsdl:operationの名前。 |
"onResult" + <注釈付きメソッドの名前> |
|
コールバックportType内のこのメソッドのアクションの名前。SOAPバインディングでは、この値によってSOAPアクションの値が決まります。 |
操作の名前。 |
|
レスポンス・メッセージの送信に使用されるサービス参照用の名前。 この値は、デプロイされたアーカイブに対して一意である必要があります。次のものを定義するために使用されます。
|
<注釈付きクラスの名前> + "ResponseWebService.SERVICE_REF_NAME_SUFFIX" |
|
メソッドが非同期かどうかを指定するフラグ。この値をtrueに設定すると、メソッドが同期であることを指定します。この場合、他の属性設定はすべて無視されます。 |
false |
oracle.webservices.annotations.async.CallbackMtomPolicy
注釈は、MTOMポリシーを、コールバック・サービスに接続される非同期Webサービスのコールバック・クライアントにアタッチします。デフォルトではいずれのMTOMポリシーもアタッチされません。
例:
@CallbackMtomPolicy("oracle/wsmtom_policy")
次の表に、oracle.webservices.annotations.async.CallbackMtomPolicy
注釈に渡すことができる属性を定義します。
oracle.webservices.annotations.async.CallbackProperties
注釈を使用すると、コールバック・サービスをコールするときにメッセージ・コンテキスト内で必須となる一連のプロパティを指定できます。
例:
@CallbackProperties(
{ @Property( key = SecurityConstants.ClientConstants.WSS_CSF_KEY,
value = "basic.credentials") }
)
次の表に、oracle.webservices.annotations.async.CallbackProperties
注釈に渡すことができる属性を定義します。
oracle.webservices.annotations.async.CallbackSecurityPolicy
注釈は、1つ以上のセキュリティ・ポリシーを、コールバック・サービスに接続される非同期Webサービスのコールバック・クライアントにアタッチします。デフォルトではいずれのセキュリティ・ポリシーもアタッチされません。
例:
@CallbackSecurityPolicy("oracle/wss10_saml_token_with_message_protection_client_policy")
次の表に、oracle.webservices.annotations.async.CallbackSecurityPolicy
注釈に渡すことができる属性を定義します。
oracle.webservices.annotations.ManagementPolicy
注釈は、管理ポリシーをWebサービスにアタッチします。
例:
@ManagementPolicy( value="oracle/log_policy",
enabled = "true")
次の表に、oracle.webservices.annotations.ManagementPolicy
注釈に渡すことができる属性を定義します。
oracle.webservices.annotations.MtomPolicy
注釈は、MTOMポリシーをWebサービスにアタッチします。
例:
@MtomPolicy( value="oracle/wsmtom_policy",
enabled = "true")
次の表に、oracle.webservices.annotations.MtomPolicy
注釈に渡すことができる属性を定義します。
oracle.webservices.annotations.PortableWebService
注釈は、JWSファイルがOracle Infrastructure Webサービスを実装することをクラス・レベルで指定します。
例:
@PortableWebService
@AsyncWebService
public class HelloService {
public String hello(String name) {
return "Hi " + name;
}
}
次の表に、oracle.webservices.annotations.PortableWebService
注釈に渡される属性を定義します。
表A-12 oracle.webservices.annotations.PortableWebServiceAnnotationの属性
属性 | 説明 | デフォルト |
---|---|---|
|
サービスの抽象Webサービス・コントラクトを定義しているサービス・エンドポイント・インタフェースの名前。 この注釈を使用すると、インタフェース・コントラクトを実装から分離できます。この注釈が存在する場合、サービス・エンドポイント・インタフェースを使用して抽象WSDLコントラクト(portTypeおよびbinding)が決定されます。サービス・エンドポイント・インタフェースには、JavaからWSDLへのマッピングをカスタマイズするためにJSR-181注釈を含めることができます。 サービス実装はサービス・エンドポイント・インタフェースを実装できますが、これは必須ではありません。 この属性が指定されていない場合、Webサービス・コントラクトはサービス実装で定義されている注釈から生成されます。サービス・エンドポイント・インタフェースがターゲット環境で必要な場合は、実装定義の名前を使用して実装定義のパッケージ内に生成されます。 注意: エンドポイント・インタフェースに注釈を付ける場合、この属性は無効です。 |
"" |
|
Webサービスの名前。この名前は、WSDL 1.1にマップされるときにwsdl:portTypeに対して使用されます。 |
"" |
|
Webサービスのポート名。この名前は、WSDL 1.1にマップされるときにwsdl:portに対して使用されます。 注意: エンドポイント・インタフェースに注釈を付ける場合、この属性は無効です。 |
"" |
|
Webサービスのサービス名。この名前は、WSDL 1.1にマップされるときにwsdl:serviceに対して使用されます。 注意: エンドポイント・インタフェースに注釈を付ける場合、この属性は無効です。 |
"" |
|
ターゲット・ネームスペース。 サービス・エンドポイント・インタフェースに注釈を付ける際に、wsdl:portTypeおよび関連付けられたすべての要素に対して使用されるターゲット・ネームスペース。 (endpointInterface属性を介して)サービス・エンドポイント・インタフェースを参照していないサービス実装に注釈を付ける際は、wsdl:portType、wsdl:serviceおよび関連付けられたXML要素に対してターゲット・ネームスペースが使用されます。 (endpointInterface属性を介して)サービス・エンドポイント・インタフェースを参照しているサービス実装に注釈を付ける際は、wsdl:portType、wsdl:serviceおよび関連付けられたXML要素に対してターゲット・ネームスペースが使用されます。 |
"" |
|
Webサービスを記述する事前定義済WSLDの場所。値は、既存のWSDLファイルを参照する相対URLまたは絶対URLです。 この属性は、サービス実装が事前定義済WSDLコントラクトを実装していることを示します。サービス実装とWSDLで定義されているportTypeおよびbindingとが矛盾している場合、エラー・メッセージが戻されます。 1つのWSDLファイルに複数のportTypeおよびbindingが含まれる場合もあります。サービス実装の注釈によって、Webサービスに対応する特定のportTypeおよびbindingが決まります。 |
"" |
oralce.webservices.annotations.PortableWebServiceProvider
注釈は、JavaクラスをOracle Infrastructure Webサービス・プロバイダを実装するものとして指定します。
例:
@PortableWebServiceProvider
@AsyncWebService
public class HelloService {
public String hello(String name) {
return "Hi " + name;
}
}
次の表に、oracle.webservices.annotations.PortableWebServiceProvider
注釈に渡される属性を定義します。
表A-13 oracle.webservices.annotations.PortableWebServiceProvider注釈の属性
属性 | 説明 | デフォルト |
---|---|---|
|
Webサービス・ポートの名前。 |
"" |
|
Webサービスの名前。 |
"" |
|
ターゲット・ネームスペース。 |
"" |
|
Webサービスを記述する事前定義済WSLDの場所。値は、既存のWSDLファイルを参照する相対URLまたは絶対URLです。 この属性は、サービス実装が事前定義済WSDLコントラクトを実装していることを示します。サービス実装とWSDLで定義されているportTypeおよびbindingとが矛盾している場合、エラー・メッセージが戻されます。 1つのWSDLファイルに複数のportTypeおよびbindingが含まれる場合もあります。サービス実装の注釈によって、Webサービスに対応する特定のportTypeおよびbindingが決まります。 |
"" |
oracle.webservices.annotations.Property
注釈を使用すると、コールバック・サービスをコールするときにメッセージ・コンテキスト内で必須となる単一のプロパティを指定できます。
例:
@Property( key = SecurityConstants.ClientConstants.WSS_CSF_KEY,
value = "basic.credentials")
次の表に、oracle.webservices.annotations.CallbackProperty
注釈に渡すことができる属性を定義します。
oracle.webservices.annotations.async.ResponseWebService
注釈を使用すると、レスポンスWebサービス・ポート情報をカスタマイズできます。
次の表に、oracle.webservices.annotations.async.ResponseWebService
注釈に渡される属性を定義します。
表A-15 oracle.webservices.annotations.async.ResponseWebService注釈の属性
属性 | 説明 | デフォルト |
---|---|---|
|
レスポンスportTypeの名前。 WSDL 1.1にマップされるときにwsdl:portTypeの名前として使用されます。 |
<注釈付きクラスの名前> + "Response" |
|
wsdl:portType、wsdl:serviceおよび関連付けられたすべての要素に対して使用されるターゲット・ネームスペース。 |
非同期Webサービスのターゲット・ネームスペースと同じです。 |
|
WSDLのパートナ・リンク要素内で使用されるコールバックportTypeのロール名。 |
なし |
|
レスポンス・メッセージの送信に使用されるサービス参照用のサービス参照名。 この値は、デプロイされたアーカイブに対して一意である必要があります。次のものを定義するために使用されます。
|
<注釈付きクラスの名前> + "ResponseWebService.SERVICE_REF_NAME_SUFFIX" |
|
このリリースでは使用されません。 |
なし |
|
このリリースでは使用されません。 |
なし |
oracle.webservices.annotations.async.Retry
注釈は、この非同期メソッドを多重呼出し不変とするのか、システム障害などによって実行が異常終了した場合には再試行可能とするかどうかを指定します。この注釈はクラスまたはメソッドのレベルで適用可能ですが、メソッドレベルの設定により、クラスレベルの設定はオーバーライドされます。
デフォルトでは、すべての非同期メソッドは多重呼出し不変で、これは非同期メソッドを2回以上コールしても副次的な影響がないことを意味します。非同期メソッドが多重呼出し不変でない場合は、明示的にこの注釈のenable
属性にfalseを設定する必要があります。
次の表に、oracle.webservices.annotations.Retry
注釈に渡される属性を定義します。
表A-16 oracle.webservices.annotations.Retry注釈の属性
属性 | 説明 | デフォルト |
---|---|---|
|
そのメソッドが多重不変呼出しであり、実行が異常終了した場合には安全に再試行ができるかどうかを指定するフラグ。 |
true |
|
そのメソッドがグローバル・トランザクションに参加できるかどうかを指定するフラグ。 このフィールドは、グローバル・トランザクション動作を指定する注釈( 注意: グローバル・トランザクション固有の注釈のみならずこのフィールドが指定されている場合には、値が一致している必要があります。 そのメソッドがグローバル・トランザクションに参加できる場合には、 メソッドがグローバル・トランザクションに参加できない場合には、
|
false |
oracle.webservices.annotations.SecurityPolicies
注釈は、@SecurityPolicy
注釈の配列を指定します。複数のWS-Policyファイルをクラスにアタッチする場合は、この注釈を使用します。
例:
@SecurityPolicies({ @SecurityPolicy(value= "policy:oracle/wss10_username_token_with_message_protection_server_policy"), @SecurityPolicy(value= "policy:oracle/authorization_policy")})
oracle.webservices.annotations.SecurityPolicy
注釈は、セキュリティ・ポリシーをリクエストSOAPメッセージまたはレスポンスSOAPメッセージにアタッチします。この注釈を単独で使用して、単一のWS-Policyファイルをクラスに適用できます。複数のWS-Policyファイルをクラスに適用する場合は、@SecurityPolicies
注釈を使用してそれらのファイルを1つにまとめます。
例:
@SecurityPolicy(value= "policy:oracle/wss10_username_token_with_message_protection_server_policy"),
次の表は、oracle.webservices.annotations.SecurityPolicy
注釈に渡すことができる属性をまとめたものです。