[ 
https://issues.apache.org/jira/browse/CXF-7302?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15962488#comment-15962488
 ] 

Alex Pintilie commented on CXF-7302:
------------------------------------

An update on this issue:

When I create the service using {{javax.xml.ws.Service::create(java.net.URL 
wsdlDocumentLocation, QName serviceName)}} (see JDK code bellow) then Soap 1.2 
get's configured automatically. _Why does jaxWsProxyFactoryBean pick Soap 1.1_ ?

{code:title=javax.xml.ws.Service}
/**
 * Creates a <code>Service</code> instance.
 *
 * The specified WSDL document location and service qualified name MUST
 * uniquely identify a <code>wsdl:service</code> element.
 *
 * @param wsdlDocumentLocation <code>URL</code> for the WSDL document location
 *                             for the service
 * @param serviceName <code>QName</code> for the service
 * @throws WebServiceException If any error in creation of the
 *                    specified service.
 **/
public static Service create(
                java.net.URL wsdlDocumentLocation,
                QName serviceName) {
        return new Service(wsdlDocumentLocation, serviceName);
}
{code}


> Soap binding detection from wsdl hardcoded to soap 1.1
> ------------------------------------------------------
>
>                 Key: CXF-7302
>                 URL: https://issues.apache.org/jira/browse/CXF-7302
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 3.1.10
>         Environment: Windows 7 Pro SP1, JDK 1.8.1_u111
>            Reporter: Alex Pintilie
>            Priority: Blocker
>
> Hello,
> I debugged how CXF detects the soap version from the wsdl file and found a 
> *hardcoded* call (there no other calls) :(
> {code:title=org.apache.cxf.wsdl11.PartialWSDLProcessor|borderStyle=solid}
> private static void setSoapBindingExtElement(Definition wsdlDefinition, 
> Binding binding, ExtensionRegistry extReg) throws Exception {
>     SOAPBindingUtil.addSOAPNamespace(wsdlDefinition, false); // isSOAP12 = 
> false
>     SOAPBinding soapBinding = SOAPBindingUtil.createSoapBinding(extReg, 
> false); // isSOAP12 = false
>     soapBinding.setStyle(style);
>     binding.addExtensibilityElement(soapBinding);
> }
> {code}
> {code:title=org.apache.cxf.wsdl11.SOAPBindingUtil|borderStyle=solid}
> // Please call these methods in such a way that soap 1.2 detection from wsdl 
> is possible
> public static SOAPBinding createSoapBinding(ExtensionRegistry extReg, boolean 
> isSOAP12) throws WSDLException {
>     ExtensibilityElement extElement = null;
>     if (isSOAP12) { // always false here
>         extElement = extReg.createExtension(Binding.class, 
>                       new QName(WSDLConstants.NS_SOAP12, "binding"));
>         
> ((SOAP12Binding)extElement).setTransportURI(WSDLConstants.NS_SOAP_HTTP_TRANSPORT);
>     } else {
>         extElement = extReg.createExtension(Binding.class, 
>                       new QName(WSDLConstants.NS_SOAP11, "binding"));
>         
> ((SOAPBinding)extElement).setTransportURI(WSDLConstants.NS_SOAP_HTTP_TRANSPORT);
>     }
>     return getSoapBinding(extElement);
> }
> public static SOAPAddress createSoapAddress(ExtensionRegistry extReg, boolean 
> isSOAP12) throws WSDLException {
>  ExtensibilityElement extElement = null;
>  if (isSOAP12) { // always false here
>   extElement = extReg.createExtension(Port.class, 
>     WSDLConstants.QNAME_SOAP12_BINDING_ADDRESS);
>  } else {
>   extElement = extReg.createExtension(Port.class,
>     WSDLConstants.QNAME_SOAP_BINDING_ADDRESS);
>  }
>  return getSoapAddress(extElement);
> }
> {code}
> The wsdl file has Soap 1.2 declared:
> {{xmlns:soap = "http://schemas.xmlsoap.org/wsdl/soap12/"}}.
> I call the server and get a response back followed by this exception:
> {{org.apache.cxf.binding.soap.SoapFault: A SOAP 1.2 message is not valid when 
> sent to a SOAP 1.1 only endpoint.}}
> {code:title=MyProxyFactory.java|borderStyle=solid}        
> // setting the soap12 binding has no effect
> jaxWsProxyFactoryBean.setBindingId(SOAPBinding.SOAP12HTTP_BINDING);
> jaxWsProxyFactoryBean.setServiceClass(serviceInterface);
> jaxWsProxyFactoryBean.setAddress(serviceUrl);
> jaxWsProxyFactoryBean.setWsdlLocation(wsdlUrl);
> return jaxWsProxyFactoryBean.create();
> {code}
> Please correct me if I'm wrong.
> Regards,
> Alex



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to