24.3.4.23. @Policy プロパティー
| プロパティー | 説明 |
|---|---|
|
| (必須) ポリシー定義を含むファイルの場所。 |
|
|
(オプション) WSDL を生成するときに、生成されたコントラクトにポリシーを含めるかどうか。デフォルトは |
|
| (オプション) WSDL ファイルのどこにこのドキュメントを表示するかを指定します。可能な配置値のリストについては、「WSDL コントラクトへの配置」 を参照してください。 |
|
|
(任意) 配置が |
@Policies アノテーション
@Policies アノテーションは org.apache.cxf.annotations.Policies インターフェイスで定義されます。SEI または SEI メソッドに配置できます。
このアノテーションは、複数の @Policy アノテーションをリストにグループ化する方法を提供します。
WSDL コントラクトへの配置
ポリシーが WSDL コントラクトのどこに表示されるかを指定するには、Policy.Placement 型である placement プロパティーを指定します。プレースメントには、次のいずれかの値を指定できます。
Policy.Placement.BINDING Policy.Placement.BINDING_OPERATION Policy.Placement.BINDING_OPERATION_FAULT Policy.Placement.BINDING_OPERATION_INPUT Policy.Placement.BINDING_OPERATION_OUTPUT Policy.Placement.DEFAULT Policy.Placement.PORT_TYPE Policy.Placement.PORT_TYPE_OPERATION Policy.Placement.PORT_TYPE_OPERATION_FAULT Policy.Placement.PORT_TYPE_OPERATION_INPUT Policy.Placement.PORT_TYPE_OPERATION_OUTPUT Policy.Placement.SERVICE Policy.Placement.SERVICE_PORT
@Policy の例
以下の例は、WSDL ポリシーを HelloWorld SEI に関連付け、ポリシーを sayHi メソッドに関連付ける方法を示しています。ポリシー自体は、annotationpolicies ディレクトリーの下に、ファイルシステムの XML ファイルに保存されます。
@WebService
@Policy(uri = "annotationpolicies/TestImplPolicy.xml",
placement = Policy.Placement.SERVICE_PORT),
@Policy(uri = "annotationpolicies/TestPortTypePolicy.xml",
placement = Policy.Placement.PORT_TYPE)
public interface HelloWorld {
@Policy(uri = "annotationpolicies/TestOperationPTPolicy.xml",
placement = Policy.Placement.PORT_TYPE_OPERATION),
String sayHi(@WebParam(name = "text") String text);
}@Policies の例
以下の例のように、@Policies アノテーションを使用して、複数の @Policy アノテーションをリストにグループ化できます。
@WebService
@Policies({
@Policy(uri = "annotationpolicies/TestImplPolicy.xml",
placement = Policy.Placement.SERVICE_PORT),
@Policy(uri = "annotationpolicies/TestPortTypePolicy.xml",
placement = Policy.Placement.PORT_TYPE)
})
public interface HelloWorld {
@Policy(uri = "annotationpolicies/TestOperationPTPolicy.xml",
placement = Policy.Placement.PORT_TYPE_OPERATION),
String sayHi(@WebParam(name = "text") String text);
}