[ https://issues.apache.org/jira/browse/CXF-7302?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15967617#comment-15967617 ]
Dennis Kieselhorst commented on CXF-7302: ----------------------------------------- How do the ports in the WSDL look like? Please debug org.apache.cxf.jaxws.ServiceImpl and check the contents of portInfos, especially bindingID. > 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)