WSDL generation should not be attempted for non RPC receivers
-------------------------------------------------------------
Key: AXIS2-856
URL: http://issues.apache.org/jira/browse/AXIS2-856
Project: Apache Axis 2.0 (Axis2)
Type: Bug
Environment: Windows
Reporter: Ajay Upadhyaya
I'm in process of migrating from axis1.x, I was using Message style services
in my application
signatures were like Document method(Document in)
Which I've changed to OMElement method(OMElement in).The code migration went
okay, app works fine. I found one issue (for which I needed workaround in my
code). Here is the scenario
class ServiceClass
{
//service wrapper
public OMElement operation1(OMElement in){.... }
//real implementation of service
OMElement operation1(){.... }
}
services.xml
---------------------
<service name="myservice">
<description>
my web service
</description>
<parameter name="ServiceClass" locked="false">ServiceClass</parameter>
<operation name="operation1">
<messageReceiver
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
<actionMapping>urn:operation1</actionMapping>
</operation>
</service>
During initialization following exception is thrown
ERROR [org.apache.axis2.deployment.ServiceBuilder] - Error in schema generating
Sorry we don't support methods overloading !!!!
java.lang.Exception: Sorry we don't support methods overloading !!!!
at
org.apache.ws.java2wsdl.SchemaGenerator.generateSchema(SchemaGenerator.java:143)
at org.apache.axis2.deployment.util.Utils.fillAxisService (Utils.java:213)
at
org.apache.axis2.deployment.ServiceBuilder.populateService(ServiceBuilder.java:149)
at
org.apache.axis2.deployment.ServiceGroupBuilder.populateServiceGroup(ServiceGroupBuilder.java:91)
at
org.apache.axis2.deployment.repository.util.ArchiveReader.buildServiceGroup(ArchiveReader.java:84)
at
org.apache.axis2.deployment.repository.util.ArchiveReader.processServiceGroup(ArchiveReader.java:118)
at
org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:620)
at
org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:195)
at org.apache.axis2.deployment.RepositoryListener.update
(RepositoryListener.java:207)
at
org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:155)
at
org.apache.axis2.deployment.DeploymentEngine.loadServices(DeploymentEngine.java:91)
at
org.apache.axis2.deployment.WarBasedAxisConfigurator.loadServices(WarBasedAxisConfigurator.java:142)
at
org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java
:42)
at
org.apache.axis2.transport.http.AxisServlet.initConfigContext(AxisServlet.java:213)
at org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:182)
- To workaround this, I had to create a base class and move the real
implementation method in base class
class BaseClass
{
//real implementation of service
OMElement operation1(){.... }
}
class ServiceClass extends BaseClass
{
//service wrapper
public OMElement operation1(OMElement in){.... }
}
Looking into the axis source, found that
org.apache.ws.java2wsdl.SchemaGenerator.generateSchema method uses
getDeclaredMethods() call to find the methods in the service class, and as
getDeclaredMethods does not returns methods inherited by a class, the
workaround works.
The irony is that, in my case, since I'm not using RPC message receivers, the
SchemaGenerator class anyway is not useful, as it does not work for non RPC
cases
I'm wondering if not seeing inherited methods is a bug or a feature... but
either way, this could be put somewhere in documentation. The message Sorry we
don't support methods overloading is a bit misleading as I'm using overloaded
(inherited) methods.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]