Re: Axis1 1.4 - How do I generate BindingStub and Proxy for endpoint overriding?

Daniele Segato <[email protected]>
Newsgroups gmane.text.xml.axis.user
Message-ID <[email protected]>
On 08/29/2012 08:16 PM, Daniele Segato wrote:
> Hi,
>
> I've been given an old, undocumented, code for which I have to upgrade
> the WSDL and then develop using new services. (Axis1, NOT Axis2)
>

I solved this on my own, finally..  (with an external hint actually)

Here's how I solved it if someone need it.

> Already generated methods have many classes (v1 directory):
>
> OldServiceFault.java
> OldService_PortType.java
> OldServiceProxy.java
> OldService_Service.java
> OldService_ServiceLocator.java
> OldServiceSOAPSoapBindingStub.java
> OldServiceSOAPStub.java
>
>
> on the new generated one:
> NewServiceFault.java
> NewService_PortType.java
> NewService_Service.java
> NewService_ServiceLocator.java
> NewServiceSOAPStub.java
>
>
> SoapBindingStub and Proxy classes are missing and I need them.
>
> OldServiceSOAPSoapBindingStub.java and OldServiceSOAPStub.java are very
> similar, but the latter has addBinding0, addBinding1 methods with more
> QNames definitions

Apparently the SoapBindingStub is automatically created when needed 
(when the wsdl exceed a certain number of definitions I think)

In my case it wasn't needed.


> on the other end the Proxy class do not resemble other classes, it
> implement the _PortType interface and apparently is used as a decorator
> to the BindingStub class that limit itself only to override the endpoint:
>
> ****
>    public OldServiceProxy(String endpoint) {
>      _endpoint = endpoint;
>      _initOldServiceProxy();
>    }
>
>    private void _initOldServiceProxy() {
>      try {
>        oldService_PortType = (new
> my.package.OldService_ServiceLocator()).getOldServiceSOAP();
>        if (oldService_PortType != null) {
>          if (_endpoint != null)
>
> ((javax.xml.rpc.Stub)oldService_PortType)._setProperty("javax.xml.rpc.service.endpoint.address",
> _endpoint);
>          else
>            _endpoint =
> (String)((javax.xml.rpc.Stub)oldService_PortType)._getProperty("javax.xml.rpc.service.endpoint.address");
>
>        }
>
>      }
>      catch (javax.xml.rpc.ServiceException serviceException) {}
>    }
> ***
>
> for every other methods it delegate to the service returned by the locator.

And this class is NOT generated by the wsdl2java.

It's generated by Eclipse doing:

File -> New -> Other (CTRL+N)
look for Web Services -> Web Service Client

select a WSDL, a runtime environment (tomcat 6 for example) and the 
project that will contain the generated classes.

This does exactly the same of the wsdl2java + the proxy class.
It apparently automatically choose to use axis1 or 2 depending on the 
wsdl itself.


> I've no experience in axis and googled a lot (even tried to study the
> axis 1.4 source code) before coming here to ask.
>
>
> My question is: how do I generate those two classes?

I initially tough of seeing if Eclipse had something like that, but my 
eclipse installation didn't.

That option is bundled in Eclipse if you download the "Eclipse IDE for 
Java EE Developers" version. I had indigo.

Be aware that I had some Eclipse plugin that, for some reason, removed 
the Web Service Client option (and Axis preferences) - this was the 
reason it took me so much time... I do not know which was the plugin 
causing the issue, if that happen to you just use a clean Eclipse EE to 
generate it.

> thank you very much in advance
> Regards
> Daniele Segato

Regards,
Daniele
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.