View Full Version : JaxRpcPortProxyFactoryBean, WSDL and overloaded operations
hst
May 11th, 2005, 02:47 AM
Hi
I have a WSDL file with som overloaded operations in. It works just fine using the Axis WSDL2Java tool. But when i try to use JaxRpcPortProxyFactoryBean i get an error like this:
java.lang.IllegalArgumentException: Duplicate operation with name=getSupportedDevices, found in portType '{http://mobilethink.dk/otamanager/soap/services/otamanager}OtaManagerSoapBinding'.
I know that overloaded operations is a bad thing, but as WSDL2Java is able to generate working classes, I was hopeing that there was some kind of tweak to make it work with JaxRpcPortProxyFactoryBean.
Regards, Hans
RikBlankestijn
May 11th, 2005, 03:37 AM
I just registered to this forum to report the exact same message. From what I have read on another forum the springframework doesn't support method overloading.
My question now would be when will it be supported?
And hst why is overloading a bad thing?
hst
May 11th, 2005, 04:13 AM
On overloading being a bad thing; it's my understanding that method overloading won't be supported in future version of WSDL.
RikBlankestijn
May 11th, 2005, 04:55 AM
I see, that's what I've read somewhere too. I do not understand why actually, but it can explain why the springframework doesn't support it. Why go through the hassle of supporting it when it's being banned in the future of wsdl's.
hst
May 17th, 2005, 08:07 AM
Anyone? I would be glad even if someone could tell me it was impossible. It would give me som peace of mind :)
Juergen Hoeller
May 25th, 2005, 09:00 AM
Note that Spring itself does support overloaded operations in various places. Don't know where you got the idea from that Spring doesn't support overloading in general.
The only restriction that I'm aware of is a restriction in the beans area: JavaBean setters should not be overloaded. But that's a restriction of the JavaBeans spec and the JDK's JavaBeans introspector, not of Spring itself.
Regarding Spring on Axis: That exception is clearly thrown by Axis, not by Spring. Axis seems to validate the WSDL ports and throw an exception if more than one method of the same name is found there.
Spring itself does not do anything special here: all that Spring ships is adapters for JAX-RPC. The actual work is done by the Axis engine, or whatever other JAX-RPC implementation you might be using.
Juergen
RikBlankestijn
May 31st, 2005, 04:25 AM
The springframework does not support operation overloading in WSDL. It does support in general except for webservices. AXIS does support operation overloading, spring just can't handle it.
dejanp
May 31st, 2005, 07:25 AM
There are at least two known problems regarding overloading and Axis implementation: it doesn't really work if you use "wrapped" style and there is an obscure problem in wdsl4j you can find more about here: http://www.xwebservices.com/Web_Services/XWebCheckOut/faqs.aspx#4
jwray
Jul 29th, 2005, 12:54 PM
There are at least two known problems regarding overloading and Axis implementation: it doesn't really work if you use "wrapped" style and there is an obscure problem in wdsl4j you can find more about here: http://www.xwebservices.com/Web_Services/XWebCheckOut/faqs.aspx#4
I'm having this problem right now, specifically trying to connect to a confluence service which has two overloaded search methods.
Has anyone use the code given in the given link succesfully? I tryed swapping out the wsdl4j.jar for the version given but the result is that non of my calls now work, even the non-overloaded ones that worked fine before. I get the exception below.
I realise this has little to do with Spring but thought some people watching this thread may have come up with a solution that works
thanks,
Jonny
javax.xml.rpc.JAXRPCException: Cannot find operation: search
at org.apache.axis.client.Call.setOperation(Call.java :1368)
at org.apache.axis.client.Call.setOperation(Call.java :1644)
at org.apache.axis.client.Call.setOperation(Call.java :1584)
at org.apache.axis.client.Service.createCall(Service. java:526)
at org.springframework.remoting.jaxrpc.JaxRpcPortClie ntInterceptor.performJaxRpcCall(JaxRpcPortClientIn terceptor.java:482)
antonix
Dec 18th, 2007, 11:52 PM
Hi Guys,
I am not using any overloaded operation, I am just trying to call an method from the web service, that's all, still I am getting cannot find operation,
Following is the stack trace,
Exception in thread "main" javax.xml.rpc.JAXRPCException: Cannot find operation: getNevOSSCustomerRequest - none defined
at org.apache.axis.client.Call.setOperation(Call.java :1365)
at org.apache.axis.client.Call.setOperation(Call.java :1652)
at org.apache.axis.client.Call.setOperation(Call.java :1592)
at org.apache.axis.client.Service.createCall(Service. java:527)
at org.springframework.remoting.jaxrpc.JaxRpcPortClie ntInterceptor.performJaxRpcCall(JaxRpcPortClientIn terceptor.java:669)
at org.springframework.remoting.jaxrpc.JaxRpcPortClie ntInterceptor.performJaxRpcCall(JaxRpcPortClientIn terceptor.java:643)
at org.springframework.remoting.jaxrpc.JaxRpcPortClie ntInterceptor.doInvoke(JaxRpcPortClientInterceptor .java:599)
at org.springframework.remoting.jaxrpc.JaxRpcPortClie ntInterceptor.invoke(JaxRpcPortClientInterceptor.j ava:571)
at org.springframework.aop.framework.ReflectiveMethod Invocation.proceed(ReflectiveMethodInvocation.java :171)
at org.springframework.aop.framework.JdkDynamicAopPro xy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy0.getNevOSSCustomerRequest(Unknown Source)
at com.tony.test.WebserviceTester.main(WebserviceTest er.java:29)
:(
is there anyone who can help me out?
Powered by vBulletin® Version 4.2.1 Copyright © 2013 vBulletin Solutions, Inc. All rights reserved.