Re: Can't use JAX-WS + SOAP 1.2 ?

lanabe <[email protected]>
Newsgroups gmane.text.xml.axis.user
Message-ID <CAKhWDPTPJX9KvFXaQ-TvN18Dcv2RyPi6ZFECE+0cCcp=YHxDtQ@mail.gmail.com>
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

On Fri, Jun 17, 2016 at 12:48 AM Martin Gainty <[email protected]> wrote:

>
>
>
> ------------------------------
> From: [email protected]
> Date: Thu, 16 Jun 2016 13:37:23 +0000
> Subject: Re: Can't use JAX-WS + SOAP 1.2 ?
>
> To: [email protected]
>
> 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 <[email protected]> wrote:
>
>
>
>
> ------------------------------
> From: [email protected]
> Date: Thu, 16 Jun 2016 10:09:07 +0000
> Subject: Can't use JAX-WS + SOAP 1.2 ?
> To: [email protected]
>
>
> 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?
>
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.