[Copied problem description from CXF Jira] In CXF 2.7.10 when using Java First WS-Policy Annotations such as: @Policies({ @Policy(uri = "annotationpolicies/TestOperationPolicy.xml"), @Policy(uri = "annotationpolicies/TestOperationInputPolicy.xml", placement = Policy.Placement.BINDING_OPERATION_INPUT), @Policy(uri = "annotationpolicies/TestOperationOutputPolicy.xml", placement = Policy.Placement.BINDING_OPERATION_OUTPUT), @Policy(uri = "annotationpolicies/TestOperationPTPolicy.xml", placement = Policy.Placement.PORT_TYPE_OPERATION), @Policy(uri = "annotationpolicies/TestOperationPTInputPolicy.xml", placement = Policy.Placement.PORT_TYPE_OPERATION_INPUT), @Policy(uri = "annotationpolicies/TestOperationPTOutputPolicy.xml", placement = Policy.Placement.PORT_TYPE_OPERATION_OUTPUT) }) The resulting WSDL ends up generating multiple PolicyReference elements when there is no separate Java Interface for example: <wsdl:operation name="echoInt"> <soap:operation soapAction="" style="document"/> <wsp:PolicyReference URI="#echoIntBindingOpPolicy"/> <wsp:PolicyReference URI="#echoIntBindingOpPolicy"/> <wsdl:input name="echoInt"> <soap:body use="literal"/> <wsp:PolicyReference URI="#echoIntBindingOpInputPolicy"/> <wsp:PolicyReference URI="#echoIntBindingOpInputPolicy"/> </wsdl:input> <wsdl:output name="echoIntResponse"> <soap:body use="literal"/> <wsp:PolicyReference URI="#echoIntBindingOpOutputPolicy"/> <wsp:PolicyReference URI="#echoIntBindingOpOutputPolicy"/> </wsdl:output> </wsdl:operation>
Flagged as Known Issue as ticket unresolved at the time of writing the release note.
Now set to bug fix as requested in bug 1096876. A resolution needs to be added to the doc text, however.
Set back to known issue. Flag reset in error.
This should already be included in 6.3.0 since this fix was included in CXF 2.7.11: klape@localhost cxf$ git tag --contains eb5ac69120bc7799997740ff6817864039b55518 cxf-2.7.11
I still see reported issue in 6.3.0.ER8: Defining webservice with no interface like this: @WebService( serviceName = "HelloWorldServiceNoInterface", portName = "HelloWorld1", name = "HelloWorld1", targetNamespace = "http://www.jboss.org/jbossas/quickstarts/wshelloworld/HelloWorld1" ) @Policy(uri = "ws-policy/x509SecurityPolicy.xml", placement = Policy.Placement.BINDING) public class HelloWorldServiceNoInterface { @WebMethod @Policies({ @Policy(uri = "ws-policy/inputPolicy.xml", placement = Policy.Placement.PORT_TYPE_OPERATION_INPUT), @Policy(uri = "ws-policy/outputPolicy.xml", placement = Policy.Placement.PORT_TYPE_OPERATION_OUTPUT) }) public String sayHello() { return "Hello World!"; } } still results in multiple PolicyReference elements in wsdl: <wsdl:portType name="HelloWorld1"> <wsdl:operation name="sayHello"> <wsdl:input message="tns:sayHello" name="sayHello"> <wsp:PolicyReference URI="#Input_Security_Policy"/> <wsp:PolicyReference URI="#Input_Security_Policy"/> </wsdl:input> <wsdl:output message="tns:sayHelloResponse" name="sayHelloResponse"> <wsp:PolicyReference URI="#Output_Security_Policy"/> <wsp:PolicyReference URI="#Output_Security_Policy"/> </wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="HelloWorldServiceNoInterfaceSoapBinding" type="tns:HelloWorld1"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsp:PolicyReference URI="#X509SecurityPolicy"/> <wsp:PolicyReference URI="#X509SecurityPolicy"/> <wsdl:operation name="sayHello"> <soap:operation soapAction="" style="document"/> <wsdl:input name="sayHello"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="sayHelloResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding>
This should not block 6.3.0 release. It can be pushed to 6.3.1 if needed.
Shifting to 6.4.0.
Verified with 6.4.0.DR8