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);
}