cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Pintilie (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CXF-7302) Soap binding detection from wsdl hardcoded to soap 1.1
Date Wed, 29 Mar 2017 09:55:41 GMT

     [ https://issues.apache.org/jira/browse/CXF-7302?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Alex Pintilie updated CXF-7302:
-------------------------------
    Description: 
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);
	SOAPBinding soapBinding = SOAPBindingUtil.createSoapBinding(extReg, false);
	soapBinding.setStyle(style);
	binding.addExtensibilityElement(soapBinding);
}
{code}

{code:title=org.apache.cxf.wsdl11.SOAPBindingUtil|borderStyle=solid}
// Please call this method in such a way that soap 1.2 detection from wsdl is possible
public static SOAPAddress createSoapAddress(ExtensionRegistry extReg, boolean isSOAP12) throws
WSDLException {
	ExtensibilityElement extElement = null;
	if (isSOAP12) {
		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/"}}.

The wsdl has no services declared such that {{definition.getService(serviceName)}} returns
{{null}}.

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

  was:
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}
public static SOAPAddress setAddrElement(Definition wsdlDefinition, Port port, ExtensionRegistry
extReg) throws Exception {
    SOAPAddress address  = SOAPBindingUtil.createSoapAddress(extReg, false); // isSOAP12 =
false !
    address.setLocationURI("dummy");
    return address;
}
{code}

{code:title=org.apache.cxf.wsdl11.SOAPBindingUtil|borderStyle=solid}
// Please call this method in such a way that soap 1.2 detection from wsdl is possible
public static SOAPAddress createSoapAddress(ExtensionRegistry extReg, boolean isSOAP12) throws
WSDLException {
	ExtensibilityElement extElement = null;
	if (isSOAP12) {
		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/"}}.

The wsdl has no services declared such that {{definition.getService(serviceName)}} returns
{{null}}.

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


> 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);
> 	SOAPBinding soapBinding = SOAPBindingUtil.createSoapBinding(extReg, false);
> 	soapBinding.setStyle(style);
> 	binding.addExtensibilityElement(soapBinding);
> }
> {code}
> {code:title=org.apache.cxf.wsdl11.SOAPBindingUtil|borderStyle=solid}
> // Please call this method in such a way that soap 1.2 detection from wsdl is possible
> public static SOAPAddress createSoapAddress(ExtensionRegistry extReg, boolean isSOAP12)
throws WSDLException {
> 	ExtensibilityElement extElement = null;
> 	if (isSOAP12) {
> 		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/"}}.
> The wsdl has no services declared such that {{definition.getService(serviceName)}} returns
{{null}}.
> 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)

Mime
View raw message