[ 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)