24.3.4.23. @policy 属性
属性 | 描述 |
---|---|
| (必需) 包含策略定义的文件的位置。 |
|
(可选) 在生成 WSDL 时在生成的合同中包含策略。默认为 |
| (可选) 指定此文档会出现的 WSDL 文件中的位置。有关可能放置值的列表,请参阅 “在 WSDL 合同中放置”一节。 |
|
(可选) 如果将放置设置为 |
@policies 注解
@Policies
注释由 org.apache.cxf.annotations.Policies
接口定义。它可以放置在 SEI 或 thse SEI 方法上。
此注解提供了将多个 @Policy
注释分组到一个列表的方法。
在 WSDL 合同中放置
要指定策略在 WSDL 合同中显示的位置,您可以指定 放置
属性,即 Policy.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
方法关联。策略本身存储在文件系统的 XML 文件中,该文件存储在 annotations policies
目录下。
@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); }