Discussion:
Can't use JAX-WS + SOAP 1.2 ?
lanabe
2016-06-16 10:09:07 UTC
Permalink
Hi, I'm new to here.

I think Axis2 supports JAX-WS + SOAP 1.2, but apparently the generated wsdl
accessing 'http://some-domain/path/to/<servicename>?wsdl' is always treated
as SOAP 1.1 though the service class added
@BindingType(SOAPBinding.SOAP12HTTP_BINDING).

the related code is here:
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L389

And I've created a simple reproducer. Am I missing something?
https://github.com/emag/axis2-jaxws-soap12-demo
Martin Gainty
2016-06-16 12:32:58 UTC
Permalink
From: ***@gmail.com
Date: Thu, 16 Jun 2016 10:09:07 +0000
Subject: Can't use JAX-WS + SOAP 1.2 ?
To: java-***@axis.apache.org


Hi, I'm new to here.

I think Axis2 supports JAX-WS + SOAP 1.2, but apparently the generated wsdl accessing 'http://some-domain/path/to/<servicename>?wsdl' is always treated as SOAP 1.1 though the service class added @BindingType(SOAPBinding.SOAP12HTTP_BINDING).

the related code is here:
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L389

And I've created a simple reproducer. Am I missing something?
https://github.com/emag/axis2-jaxws-soap12-demo

MG>in axis2.xml what are values for parameter disableSOAP12 and parameter disableSOAP11
<parameter name="disableSOAP12" locked="true">?</parameter>
<parameter name="disableSOAP11" locked="true">?</parameter>
MG>?
lanabe
2016-06-16 13:37:23 UTC
Permalink
Thank you for your reply!

I changed these parameters to like the below in axis2.xml, but got the same
result... Any idea?

```
<parameter name="disableREST" locked="true">true</parameter> <!-- false to
true -->
<parameter name="disableSOAP12" locked="true">false</parameter>
<parameter name="disableSOAP11" locked="true">true</parameter> <!-- added
-->
```
------------------------------
Date: Thu, 16 Jun 2016 10:09:07 +0000
Subject: Can't use JAX-WS + SOAP 1.2 ?
Hi, I'm new to here.
I think Axis2 supports JAX-WS + SOAP 1.2, but apparently the generated
wsdl accessing 'http://some-domain/path/to/<servicename>?wsdl' is always
treated as SOAP 1.1 though the service class added
@BindingType(SOAPBinding.SOAP12HTTP_BINDING).
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L389
And I've created a simple reproducer. Am I missing something?
https://github.com/emag/axis2-jaxws-soap12-demo
MG>in axis2.xml what are values for parameter disableSOAP12 and parameter disableSOAP11
<parameter name="disableSOAP12" locked="true">?</parameter>
<parameter name="disableSOAP11" locked="true">?</parameter>
MG>?
Martin Gainty
2016-06-16 15:48:08 UTC
Permalink
From: ***@gmail.com
Date: Thu, 16 Jun 2016 13:37:23 +0000
Subject: Re: Can't use JAX-WS + SOAP 1.2 ?
To: java-***@axis.apache.org

Thank you for your reply!

I changed these parameters to like the below in axis2.xml, but got the same result... Any idea?

```
<parameter name="disableREST" locked="true">true</parameter> <!-- false to true -->
<parameter name="disableSOAP12" locked="true">false</parameter>
<parameter name="disableSOAP11" locked="true">true</parameter> <!-- added -->
```

On Thu, Jun 16, 2016 at 9:33 PM Martin Gainty <***@hotmail.com> wrote:






From: ***@gmail.com
Date: Thu, 16 Jun 2016 10:09:07 +0000
Subject: Can't use JAX-WS + SOAP 1.2 ?
To: java-***@axis.apache.org


Hi, I'm new to here.

I think Axis2 supports JAX-WS + SOAP 1.2, but apparently the generated wsdl accessing 'http://some-domain/path/to/<servicename>?wsdl' is always treated as SOAP 1.1 though the service class added @BindingType(SOAPBinding.SOAP12HTTP_BINDING).

the related code is here:
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L389

And I've created a simple reproducer. Am I missing something?
https://github.com/emag/axis2-jaxws-soap12-demo

MG>your client code:
public class Client {
public String invokeSayHello(String text) { HelloWorld_Service service = new HelloWorld_Service();
MG>create a valid JAX-WS service using YOUR parameters populated into QName
MG>javax.xml.ws.Service service = Service.create(new QName(
"http://org/apache/axis2/jaxws/test/OMELEMENT", "OMElementService"));
MG>programatically add SOAP1.2 port using SOAP12HTTP_BINDING parms to your JAXWS service:

MG>service.addPort( new QName(
"http://org/apache/axis2/jaxws/test/OMELEMENT", "OMElementPort"), javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING,"http://localhost:6060/axis2/services/OMElementProviderService.OMElementProviderPort");//tweak above port parameter to YOUR PORT
//grab all the configured ports and print them out MG>java.util.Iterator<javax.xml.namespace.QName> ports = service.getPorts(); MG>while(ports.hasNext()) { MG> javax.xml.namespace.QName QNamePort port=(javax.xml.namespace.QName)ports.next(); MG> log.debug("port namespaceURI="+port.getNamespaceURI()); MG> log.debug("port localPart="+port.getLocalPart()); MG> log.debug(" port prefix="+port.getPrefix()); MG> }
HelloWorld stub = service.getHelloWorldPort(); //service was not respecting SOAP12HTTP_BINDING return stub.sayHello(text); }
}
MG>reference org.apache.axis2.jaxws.dispatch.OMElementDispatchTest
MG>do you see SOAP12_HTTP_BINDING Port?
lanabe
2016-06-17 05:45:21 UTC
Permalink
Martin, thanks a lot!

You mean I must use pojo + services.xml for Web seivices like a
quickstart[1]?
In my example[2], my service classes use only JAX-WS annotations like
java_first_jaxws example[3].

And in my understanding, it seems this issue is caused from hard-corded
with SOAP 1.1 binding.

In my example case, you should get a wsdl generated by axis2 runtime if you
access '
http://localhost:8080/axis2-jaxws-soap12-demo-server/services/HelloWorldSoap12?wsdl
'.

Axis2 uses wsgen(included JDK) to generate the requested wsdl.
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L183-L184

and, however, initialize() set binding as SOAP 1.1 regardless of the
service classess binding annotation.
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L389

so, wsgen arguments will set for SOAP 1.1.
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L208-L215

You must set extra arguments like extension, wsdl:Xsoap1.2 If you want to
use wsgen for SOAP 1.2. so, wsgen will complain about it.
https://github.com/emag/axis2-jaxws-soap12-demo#error-log

Can I change this behavior? Thanks.

[1]
https://github.com/apache/axis2-java/tree/v1.7.3/modules/samples/quickstart
[2] https://github.com/emag/axis2-jaxws-soap12-demo
[3]
https://github.com/apache/axis2-java/tree/v1.7.3/modules/samples/java_first_jaxws
------------------------------
Date: Thu, 16 Jun 2016 13:37:23 +0000
Subject: Re: Can't use JAX-WS + SOAP 1.2 ?
Thank you for your reply!
I changed these parameters to like the below in axis2.xml, but got the
same result... Any idea?
```
<parameter name="disableREST" locked="true">true</parameter> <!-- false to true -->
<parameter name="disableSOAP12" locked="true">false</parameter>
<parameter name="disableSOAP11" locked="true">true</parameter> <!-- added -->
```
------------------------------
Date: Thu, 16 Jun 2016 10:09:07 +0000
Subject: Can't use JAX-WS + SOAP 1.2 ?
Hi, I'm new to here.
I think Axis2 supports JAX-WS + SOAP 1.2, but apparently the generated
wsdl accessing 'http://some-domain/path/to/<servicename>?wsdl' is always
treated as SOAP 1.1 though the service class added
@BindingType(SOAPBinding.SOAP12HTTP_BINDING).
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L389
And I've created a simple reproducer. Am I missing something?
https://github.com/emag/axis2-jaxws-soap12-demo
public class Client {
public String invokeSayHello(String text) {
HelloWorld_Service service = new HelloWorld_Service();
MG>create a valid JAX-WS service using YOUR parameters populated into QName
MG>javax.xml.ws.Service service = Service.create(new QName(
"http://org/apache/axis2/jaxws/test/OMELEMENT",
"OMElementService"));
MG>service.addPort( new QName(
"http://org/apache/axis2/jaxws/test/OMELEMENT",
"OMElementPort"), javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING,
"
http://localhost:6060/axis2/services/OMElementProviderService.OMElementProviderPort
");
//tweak above port parameter to YOUR PORT
//grab all the configured ports and print them out
MG>java.util.Iterator<javax.xml.namespace.QName> ports =
service.getPorts();
MG>while(ports.hasNext()) {
MG> javax.xml.namespace.QName QNamePort
port=(javax.xml.namespace.QName)ports.next();
MG> log.debug("port namespaceURI="+port.getNamespaceURI());
MG> log.debug("port localPart="+port.getLocalPart());
MG> log.debug(" port prefix="+port.getPrefix());
MG> }
HelloWorld stub = service.getHelloWorldPort(); //service was not
respecting SOAP12HTTP_BINDING
return stub.sayHello(text);
}
}
MG>reference org.apache.axis2.jaxws.dispatch.OMElementDispatchTest
MG>do you see SOAP12_HTTP_BINDING Port?
Martin Gainty
2016-06-17 13:44:38 UTC
Permalink
MG2>quick comments

From: ***@gmail.com
Date: Fri, 17 Jun 2016 05:45:21 +0000
Subject: Re: Can't use JAX-WS + SOAP 1.2 ?
To: java-***@axis.apache.org

Martin, thanks a lot!

You mean I must use pojo + services.xml for Web seivices like a quickstart[1]?MG2>for reliable HTTPBinding to SOAP1.2 use the programmatic approach below to bind HTTP to SOAP1.2
In my example[2], my service classes use only JAX-WS annotations like java_first_jaxws example[3].

And in my understanding, it seems this issue is caused from hard-corded with SOAP 1.1 binding.
MG2>with some of the providers unfortunately yes
In my example case, you should get a wsdl generated by axis2 runtime if you access 'http://localhost:8080/axis2-jaxws-soap12-demo-server/services/HelloWorldSoap12?wsdl'.

Axis2 uses wsgen(included JDK) to generate the requested wsdl.
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L183-L184
and, however, initialize() set binding as SOAP 1.1 regardless of the service classess binding annotation.
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L389
so, wsgen arguments will set for SOAP 1.1.
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L208-L215

You must set extra arguments like extension, wsdl:Xsoap1.2 If you want to use wsgen for SOAP 1.2. so, wsgen will complain about it.
https://github.com/emag/axis2-jaxws-soap12-demo#error-log

MG2>annotations can tweak targetNamespace,serviceName,wsdlLocation and PortName from SOAP12EchoImpl.java:

@javax.xml.ws.WebServiceProvider(targetNamespace="http://jaxws.axis2.apache.org/proxy/soap12", serviceName="SOAP12EchoService", wsdlLocation="META-INF/SOAP12Echo.wsdl", portName="EchoPort")@javax.xml.ws.BindingType(SOAPBinding.SOAP12HTTP_BINDING)@javax.xml.ws.ServiceMode(Mode.MESSAGE)public class SOAP12EchoImpl implements javax.xml.ws.Provider<String> {
MG2>Note: you must implement javax.xml.ws.Provider
Can I change this behavior? Thanks.
MG2>all Axis2 functionality routes to axis2 Impl class that *must* implement ProviderMG2>*some* of the providers do have hardcoded SOAP11HTTP_BINDING e.g.
.\jaxb\JAXBProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)
.\soapmsg\SoapMessageProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)

.\soapmsgcheckmtom\SoapMessageCheckMTOMProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)

.\soapmsgmu\SoapMessageMUProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)
.\soapmsgreturnnull\SoapMessageNullProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)
.\sourcemsg\SourceMessageProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)
.\string\StringProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)

.\stringmsg\StringMessageProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)
MG2>file a jira bug to replace hardcoded SOAP11HTTP_BINDING in the Providers and with parameterised Binding
https://issues.apache.org/jira/browse/axis2/?selectedTab=com.atlassian.jira.jira-projects-plugin:summary-panel

[1] https://github.com/apache/axis2-java/tree/v1.7.3/modules/samples/quickstart
[2] https://github.com/emag/axis2-jaxws-soap12-demo
[3] https://github.com/apache/axis2-java/tree/v1.7.3/modules/samples/java_first_jaxws

MG2>Many Thanks Ianabe for catching this

Date: Thu, 16 Jun 2016 10:09:07 +0000
Subject: Can't use JAX-WS + SOAP 1.2 ?
To: java-***@axis.apache.org


Hi, I'm new to here.

I think Axis2 supports JAX-WS + SOAP 1.2, but apparently the generated wsdl accessing 'http://some-domain/path/to/<servicename>?wsdl' is always treated as SOAP 1.1 though the service class added @BindingType(SOAPBinding.SOAP12HTTP_BINDING).

the related code is here:
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L389

And I've created a simple reproducer. Am I missing something?
https://github.com/emag/axis2-jaxws-soap12-demo

MG>your client code:
public class Client {
public String invokeSayHello(String text) { HelloWorld_Service service = new HelloWorld_Service();
MG>create a valid JAX-WS service using YOUR parameters populated into QName
MG>javax.xml.ws.Service service = Service.create(new QName(
"http://org/apache/axis2/jaxws/test/OMELEMENT", "OMElementService"));
MG>programatically add SOAP1.2 port using SOAP12HTTP_BINDING parms to your JAXWS service:

MG>service.addPort( new QName(
"http://org/apache/axis2/jaxws/test/OMELEMENT", "OMElementPort"), javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING,"http://localhost:6060/axis2/services/OMElementProviderService.OMElementProviderPort");//tweak above port parameter to YOUR PORT
//grab all the configured ports and print them out MG>java.util.Iterator<javax.xml.namespace.QName> ports = service.getPorts(); MG>while(ports.hasNext()) { MG> javax.xml.namespace.QName QNamePort port=(javax.xml.namespace.QName)ports.next(); MG> log.debug("port namespaceURI="+port.getNamespaceURI()); MG> log.debug("port localPart="+port.getLocalPart()); MG> log.debug(" port prefix="+port.getPrefix()); MG> }
HelloWorld stub = service.getHelloWorldPort(); //service was not respecting SOAP12HTTP_BINDING return stub.sayHello(text); }
}
MG>reference org.apache.axis2.jaxws.dispatch.OMElementDispatchTest
MG>do you see SOAP12_HTTP_BINDING Port?
lanabe
2016-06-19 08:43:23 UTC
Permalink
Martin, Thank you for your confirmation.
Post by Martin Gainty
file a jira bug to replace hardcoded SOAP11HTTP_BINDING in the Providers
and with parameterised Binding
Done!
https://issues.apache.org/jira/browse/AXIS2-5790
Post by Martin Gainty
MG2>quick comments
------------------------------
Date: Fri, 17 Jun 2016 05:45:21 +0000
Subject: Re: Can't use JAX-WS + SOAP 1.2 ?
Martin, thanks a lot!
You mean I must use pojo + services.xml for Web seivices like a
quickstart[1]?
MG2>for reliable HTTPBinding to SOAP1.2 use the programmatic approach
below to bind HTTP to SOAP1.2
In my example[2], my service classes use only JAX-WS annotations like
java_first_jaxws example[3].
And in my understanding, it seems this issue is caused from hard-corded
with SOAP 1.1 binding.
MG2>with some of the providers unfortunately yes
In my example case, you should get a wsdl generated by axis2 runtime if
you access '
http://localhost:8080/axis2-jaxws-soap12-demo-server/services/HelloWorldSoap12?wsdl
'.
Axis2 uses wsgen(included JDK) to generate the requested wsdl.
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L183-L184
and, however, initialize() set binding as SOAP 1.1 regardless of the service classess binding annotation.
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L389
so, wsgen arguments will set for SOAP 1.1.
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L208-L215
You must set extra arguments like extension, wsdl:Xsoap1.2 If you want to
use wsgen for SOAP 1.2. so, wsgen will complain about it.
https://github.com/emag/axis2-jaxws-soap12-demo#error-log
MG2>annotations can tweak targetNamespace,serviceName,wsdlLocation and
@javax.xml.ws.WebServiceProvider(targetNamespace="
http://jaxws.axis2.apache.org/proxy/soap12",
serviceName="SOAP12EchoService",
wsdlLocation="META-INF/SOAP12Echo.wsdl",
portName="EchoPort")
@javax.xml.ws.BindingType(SOAPBinding.SOAP12HTTP_BINDING)
@javax.xml.ws.ServiceMode(Mode.MESSAGE)
public class SOAP12EchoImpl implements javax.xml.ws.Provider<String> {
MG2>Note: you must implement javax.xml.ws.Provider
Can I change this behavior? Thanks.
MG2>all Axis2 functionality routes to axis2 Impl class that *must*
implement Provider
MG2>*some* of the providers do have hardcoded SOAP11HTTP_BINDING e.g.
grep -S "HTTP11_BINDING" *Provider.java
(SOAPBinding.SOAP11HTTP_BINDING)
(SOAPBinding.SOAP11HTTP_BINDING)
(SOAPBinding.SOAP11HTTP_BINDING)
(SOAPBinding.SOAP11HTTP_BINDING)
(SOAPBinding.SOAP11HTTP_BINDING)
(SOAPBinding.SOAP11HTTP_BINDING)
(SOAPBinding.SOAP11HTTP_BINDING)
MG2>file a jira bug to replace hardcoded SOAP11HTTP_BINDING in the
Providers and with parameterised Binding
https://issues.apache.org/jira/browse/axis2/?selectedTab=com.atlassian.jira.jira-projects-plugin:summary-panel
[1]
https://github.com/apache/axis2-java/tree/v1.7.3/modules/samples/quickstart
[2] https://github.com/emag/axis2-jaxws-soap12-demo
[3]
https://github.com/apache/axis2-java/tree/v1.7.3/modules/samples/java_first_jaxws
MG2>Many Thanks Ianabe for catching this
Date: Thu, 16 Jun 2016 10:09:07 +0000
Subject: Can't use JAX-WS + SOAP 1.2 ?
Hi, I'm new to here.
I think Axis2 supports JAX-WS + SOAP 1.2, but apparently the generated
wsdl accessing 'http://some-domain/path/to/<servicename>?wsdl' is always
treated as SOAP 1.1 though the service class added
@BindingType(SOAPBinding.SOAP12HTTP_BINDING).
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L389
And I've created a simple reproducer. Am I missing something?
https://github.com/emag/axis2-jaxws-soap12-demo
public class Client {
public String invokeSayHello(String text) {
HelloWorld_Service service = new HelloWorld_Service();
MG>create a valid JAX-WS service using YOUR parameters populated into QName
MG>javax.xml.ws.Service service = Service.create(new QName(
"http://org/apache/axis2/jaxws/test/OMELEMENT",
"OMElementService"));
MG>service.addPort( new QName(
"http://org/apache/axis2/jaxws/test/OMELEMENT",
"OMElementPort"), javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING,
"
http://localhost:6060/axis2/services/OMElementProviderService.OMElementProviderPort
");
//tweak above port parameter to YOUR PORT
//grab all the configured ports and print them out
MG>java.util.Iterator<javax.xml.namespace.QName> ports =
service.getPorts();
MG>while(ports.hasNext()) {
MG> javax.xml.namespace.QName QNamePort
port=(javax.xml.namespace.QName)ports.next();
MG> log.debug("port namespaceURI="+port.getNamespaceURI());
MG> log.debug("port localPart="+port.getLocalPart());
MG> log.debug(" port prefix="+port.getPrefix());
MG> }
HelloWorld stub = service.getHelloWorldPort(); //service was not
respecting SOAP12HTTP_BINDING
return stub.sayHello(text);
}
}
MG>reference org.apache.axis2.jaxws.dispatch.OMElementDispatchTest
MG>do you see SOAP12_HTTP_BINDING Port?
Martin Gainty
2016-06-19 17:12:53 UTC
Permalink
Its folks like yourself that make Axis the most reliable WS project hosted by Apache
Glad I could help
Thanks Ianabe!
Martin Gainty
______________________________________________ Member
_____ _ _____ _ _____ ___ _ _____ _ _ _
|_ _| |_ ___ | _ |___ ___ ___| |_ ___ | __|___| _| |_ _ _ _ ___ ___ ___ | __|___ _ _ ___ _| |___| |_|_|___ ___
| | | | -_| | | . | .'| _| | -_| |__ | . | _| _| | | | .'| _| -_| | __| . | | | | . | .'| _| | . | |
|_| |_|_|___| |__|__| _|__,|___|_|_|___| |_____|___|_| |_| |_____|__,|_| |___| |__| |___|___|_|_|___|__,|_| |_|___|_|_|
|_|


From: ***@gmail.com
Date: Sun, 19 Jun 2016 08:43:23 +0000
Subject: Re: Can't use JAX-WS + SOAP 1.2 ?
To: java-***@axis.apache.org

Martin, Thank you for your confirmation.
Post by Martin Gainty
file a jira bug to replace hardcoded SOAP11HTTP_BINDING in the Providers and with parameterised Binding
Done!
https://issues.apache.org/jira/browse/AXIS2-5790
On Fri, Jun 17, 2016 at 10:44 PM Martin Gainty <***@hotmail.com> wrote:



MG2>quick comments

From: ***@gmail.com
Date: Fri, 17 Jun 2016 05:45:21 +0000
Subject: Re: Can't use JAX-WS + SOAP 1.2 ?
To: java-***@axis.apache.org

Martin, thanks a lot!

You mean I must use pojo + services.xml for Web seivices like a quickstart[1]?MG2>for reliable HTTPBinding to SOAP1.2 use the programmatic approach below to bind HTTP to SOAP1.2
In my example[2], my service classes use only JAX-WS annotations like java_first_jaxws example[3].

And in my understanding, it seems this issue is caused from hard-corded with SOAP 1.1 binding.
MG2>with some of the providers unfortunately yes
In my example case, you should get a wsdl generated by axis2 runtime if you access 'http://localhost:8080/axis2-jaxws-soap12-demo-server/services/HelloWorldSoap12?wsdl'.

Axis2 uses wsgen(included JDK) to generate the requested wsdl.
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L183-L184
and, however, initialize() set binding as SOAP 1.1 regardless of the service classess binding annotation.
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L389
so, wsgen arguments will set for SOAP 1.1.
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L208-L215

You must set extra arguments like extension, wsdl:Xsoap1.2 If you want to use wsgen for SOAP 1.2. so, wsgen will complain about it.
https://github.com/emag/axis2-jaxws-soap12-demo#error-log

MG2>annotations can tweak targetNamespace,serviceName,wsdlLocation and PortName from SOAP12EchoImpl.java:

@javax.xml.ws.WebServiceProvider(targetNamespace="http://jaxws.axis2.apache.org/proxy/soap12", serviceName="SOAP12EchoService", wsdlLocation="META-INF/SOAP12Echo.wsdl", portName="EchoPort")@javax.xml.ws.BindingType(SOAPBinding.SOAP12HTTP_BINDING)@javax.xml.ws.ServiceMode(Mode.MESSAGE)public class SOAP12EchoImpl implements javax.xml.ws.Provider<String> {
MG2>Note: you must implement javax.xml.ws.Provider
Can I change this behavior? Thanks.
MG2>all Axis2 functionality routes to axis2 Impl class that *must* implement ProviderMG2>*some* of the providers do have hardcoded SOAP11HTTP_BINDING e.g.
.\jaxb\JAXBProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)
.\soapmsg\SoapMessageProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)

.\soapmsgcheckmtom\SoapMessageCheckMTOMProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)

.\soapmsgmu\SoapMessageMUProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)
.\soapmsgreturnnull\SoapMessageNullProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)
.\sourcemsg\SourceMessageProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)
.\string\StringProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)

.\stringmsg\StringMessageProvider.java:@BindingType(SOAPBinding.SOAP11HTTP_BINDING)
MG2>file a jira bug to replace hardcoded SOAP11HTTP_BINDING in the Providers and with parameterised Binding
https://issues.apache.org/jira/browse/axis2/?selectedTab=com.atlassian.jira.jira-projects-plugin:summary-panel

[1] https://github.com/apache/axis2-java/tree/v1.7.3/modules/samples/quickstart
[2] https://github.com/emag/axis2-jaxws-soap12-demo
[3] https://github.com/apache/axis2-java/tree/v1.7.3/modules/samples/java_first_jaxws

MG2>Many Thanks Ianabe for catching this

Date: Thu, 16 Jun 2016 10:09:07 +0000
Subject: Can't use JAX-WS + SOAP 1.2 ?
To: java-***@axis.apache.org


Hi, I'm new to here.

I think Axis2 supports JAX-WS + SOAP 1.2, but apparently the generated wsdl accessing 'http://some-domain/path/to/<servicename>?wsdl' is always treated as SOAP 1.1 though the service class added @BindingType(SOAPBinding.SOAP12HTTP_BINDING).

the related code is here:
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L389

And I've created a simple reproducer. Am I missing something?
https://github.com/emag/axis2-jaxws-soap12-demo

MG>your client code:
public class Client {
public String invokeSayHello(String text) { HelloWorld_Service service = new HelloWorld_Service();
MG>create a valid JAX-WS service using YOUR parameters populated into QName
MG>javax.xml.ws.Service service = Service.create(new QName(
"http://org/apache/axis2/jaxws/test/OMELEMENT", "OMElementService"));
MG>programatically add SOAP1.2 port using SOAP12HTTP_BINDING parms to your JAXWS service:

MG>service.addPort( new QName(
"http://org/apache/axis2/jaxws/test/OMELEMENT", "OMElementPort"), javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING,"http://localhost:6060/axis2/services/OMElementProviderService.OMElementProviderPort");//tweak above port parameter to YOUR PORT
//grab all the configured ports and print them out MG>java.util.Iterator<javax.xml.namespace.QName> ports = service.getPorts(); MG>while(ports.hasNext()) { MG> javax.xml.namespace.QName QNamePort port=(javax.xml.namespace.QName)ports.next(); MG> log.debug("port namespaceURI="+port.getNamespaceURI()); MG> log.debug("port localPart="+port.getLocalPart()); MG> log.debug(" port prefix="+port.getPrefix()); MG> }
HelloWorld stub = service.getHelloWorldPort(); //service was not respecting SOAP12HTTP_BINDING return stub.sayHello(text); }
}
MG>reference org.apache.axis2.jaxws.dispatch.OMElementDispatchTest
MG>do you see SOAP12_HTTP_BINDING Port?
Andreas Veithen
2016-06-19 18:43:42 UTC
Permalink
Martin,

AFAIK you are neither a committer nor a member of the ASF, so please
stop using a signature misrepresenting your relationship with the ASF.

Andreas
Post by Martin Gainty
Its folks like yourself that make Axis the most reliable WS project hosted by Apache
Glad I could help
Thanks Ianabe!
Martin Gainty
______________________________________________
Member
_____ _ _____ _ _____ ___ _
_____ _ _ _
|_ _| |_ ___ | _ |___ ___ ___| |_ ___ | __|___| _| |_ _ _ _ ___
___ ___ | __|___ _ _ ___ _| |___| |_|_|___ ___
| | | | -_| | | . | .'| _| | -_| |__ | . | _| _| | | | .'|
_| -_| | __| . | | | | . | .'| _| | . | |
|_| |_|_|___| |__|__| _|__,|___|_|_|___| |_____|___|_| |_|
|_____|__,|_| |___| |__| |___|___|_|_|___|__,|_| |_|___|_|_|
|_|
________________________________
Date: Sun, 19 Jun 2016 08:43:23 +0000
Subject: Re: Can't use JAX-WS + SOAP 1.2 ?
Martin, Thank you for your confirmation.
Post by Martin Gainty
file a jira bug to replace hardcoded SOAP11HTTP_BINDING in the Providers
and with parameterised Binding
Done!
https://issues.apache.org/jira/browse/AXIS2-5790
MG2>quick comments
________________________________
Date: Fri, 17 Jun 2016 05:45:21 +0000
Subject: Re: Can't use JAX-WS + SOAP 1.2 ?
Martin, thanks a lot!
You mean I must use pojo + services.xml for Web seivices like a
quickstart[1]?
MG2>for reliable HTTPBinding to SOAP1.2 use the programmatic approach below
to bind HTTP to SOAP1.2
In my example[2], my service classes use only JAX-WS annotations like
java_first_jaxws example[3].
And in my understanding, it seems this issue is caused from hard-corded with
SOAP 1.1 binding.
MG2>with some of the providers unfortunately yes
In my example case, you should get a wsdl generated by axis2 runtime if you
access
'http://localhost:8080/axis2-jaxws-soap12-demo-server/services/HelloWorldSoap12?wsdl'.
Axis2 uses wsgen(included JDK) to generate the requested wsdl.
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L183-L184
and, however, initialize() set binding as SOAP 1.1 regardless of the service
classess binding annotation.
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L389
so, wsgen arguments will set for SOAP 1.1.
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L208-L215
You must set extra arguments like extension, wsdl:Xsoap1.2 If you want to
use wsgen for SOAP 1.2. so, wsgen will complain about it.
https://github.com/emag/axis2-jaxws-soap12-demo#error-log
MG2>annotations can tweak targetNamespace,serviceName,wsdlLocation and
@javax.xml.ws.WebServiceProvider(targetNamespace="http://jaxws.axis2.apache.org/proxy/soap12",
serviceName="SOAP12EchoService",
wsdlLocation="META-INF/SOAP12Echo.wsdl",
portName="EchoPort")
@javax.xml.ws.BindingType(SOAPBinding.SOAP12HTTP_BINDING)
@javax.xml.ws.ServiceMode(Mode.MESSAGE)
public class SOAP12EchoImpl implements javax.xml.ws.Provider<String> {
MG2>Note: you must implement javax.xml.ws.Provider
Can I change this behavior? Thanks.
MG2>all Axis2 functionality routes to axis2 Impl class that *must*
implement Provider
MG2>*some* of the providers do have hardcoded SOAP11HTTP_BINDING e.g.
Post by Martin Gainty
grep -S "HTTP11_BINDING" *Provider.java
MG2>file a jira bug to replace hardcoded SOAP11HTTP_BINDING in the Providers
and with parameterised Binding
https://issues.apache.org/jira/browse/axis2/?selectedTab=com.atlassian.jira.jira-projects-plugin:summary-panel
[1]
https://github.com/apache/axis2-java/tree/v1.7.3/modules/samples/quickstart
[2] https://github.com/emag/axis2-jaxws-soap12-demo
[3]
https://github.com/apache/axis2-java/tree/v1.7.3/modules/samples/java_first_jaxws
MG2>Many Thanks Ianabe for catching this
Date: Thu, 16 Jun 2016 10:09:07 +0000
Subject: Can't use JAX-WS + SOAP 1.2 ?
Hi, I'm new to here.
I think Axis2 supports JAX-WS + SOAP 1.2, but apparently the generated wsdl
accessing 'http://some-domain/path/to/<servicename>?wsdl' is always treated
as SOAP 1.1 though the service class added
@BindingType(SOAPBinding.SOAP12HTTP_BINDING).
https://github.com/apache/axis2-java/blob/v1.7.3/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java#L389
And I've created a simple reproducer. Am I missing something?
https://github.com/emag/axis2-jaxws-soap12-demo
public class Client {
public String invokeSayHello(String text) {
HelloWorld_Service service = new HelloWorld_Service();
MG>create a valid JAX-WS service using YOUR parameters populated into QName
MG>javax.xml.ws.Service service = Service.create(new QName(
"http://org/apache/axis2/jaxws/test/OMELEMENT",
"OMElementService"));
MG>service.addPort( new QName(
"http://org/apache/axis2/jaxws/test/OMELEMENT",
"OMElementPort"), javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING,
"http://localhost:6060/axis2/services/OMElementProviderService.OMElementProviderPort");
//tweak above port parameter to YOUR PORT
//grab all the configured ports and print them out
MG>java.util.Iterator<javax.xml.namespace.QName> ports =
service.getPorts();
MG>while(ports.hasNext()) {
MG> javax.xml.namespace.QName QNamePort
port=(javax.xml.namespace.QName)ports.next();
MG> log.debug("port namespaceURI="+port.getNamespaceURI());
MG> log.debug("port localPart="+port.getLocalPart());
MG> log.debug(" port prefix="+port.getPrefix());
MG> }
HelloWorld stub = service.getHelloWorldPort(); //service was not respecting
SOAP12HTTP_BINDING
return stub.sayHello(text);
}
}
MG>reference org.apache.axis2.jaxws.dispatch.OMElementDispatchTest
MG>do you see SOAP12_HTTP_BINDING Port?
---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-***@axis.apache.org
For additional commands, e-mail: java-user-***@axis.apache.org

Loading...