Alan Yang created CXF-4876:
------------------------------

             Summary: CXF RespectBinding feature does not support the 
customized binding info under operation and its sub element.
                 Key: CXF-4876
                 URL: https://issues.apache.org/jira/browse/CXF-4876
             Project: CXF
          Issue Type: Bug
          Components: JAXB Databinding
    Affects Versions: 2.6.2
            Reporter: Alan Yang


The RespectBinding description in the JAXWS 2.2 spec is:

6.5.3 javax.xml.ws.RespectBindingFeature

The RespectBindingFeature is used to control whether a JAX-WS implementation 
MUST respect/honor the contents of the wsdl:binding associated with an 
endpoint. It has a corresponding RespectBinding annotation described in section 
7.14.3.

♦ Conformance (javax.xml.ws.RespectBindingFeature): When the 
javax.xml.ws.RespectBindingFeature is enabled, a JAX-WS implementation MUST 
inspect the wsdl:binding at runtime to determine result and parameter bindings 
as well as any wsdl:extensions that have the required=true attribute. All 
required wsdl:extensions MUST be supported and honored by a JAX-WS 
implementation unless a specific wsdl:extension has be explicitly disabled via 
a WebServiceFeature.

But when we test our application that enabled the RespectBinding feature, we 
found an issue in cxf-2.6.2. The issue is if we add an invalid binding under 
wsdl:binding element as you can see in below, a WebServiceException will be 
throw out when accessing the endpoint first time, and the endpoint will not be 
accessed, this is behavior is correct.

  <binding name="EchoPortBinding" type="tns:Echo">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"; 
style="document"/>
    <tns:badBinding wsdl:required="true" uri="http://bad/bad"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; />
    <operation name="echo">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="literal"/>       
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
      <fault name="Exception">
        <soap:fault name="Exception" use="literal"/>
      </fault>
    </operation>
  </binding>

But if we add the invalid binding under operation or its sub element (input, 
output or fault), like the example in below, then cxf will not check it, and 
the endpoint would be access after deployment, although the wsdl4j has 
deserialize it as an unkown element. 

  <binding name="EchoPortBinding" type="tns:Echo">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"; 
style="document"/>   
    <operation name="echo">
      <soap:operation soapAction=""/>
      <tns:badBinding wsdl:required="true" uri="http://bad/bad"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; />
      <input>
        <soap:body use="literal"/>       
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
      <fault name="Exception">
        <soap:fault name="Exception" use="literal"/>
      </fault>
    </operation>
  </binding>



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to