axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Markus Reis (JIRA)" <axis-...@ws.apache.org>
Subject [jira] Commented: (AXIS-2211) Wrong method signature called depending on the name of the operation with JWS
Date Tue, 03 Jan 2006 14:28:03 GMT
    [ http://issues.apache.org/jira/browse/AXIS-2211?page=comments#action_12361624 ] 

Markus Reis commented on AXIS-2211:
-----------------------------------

the test environment was:
+) Windows XP Professional Version 2002 SP 2 (client and server)
+) Java 1.4.2_03-b02 (client and server)
+) Apache Tomcat 5.0.28 (server)
+) Axis Implementation-Version: 1.3 2244 October 5 2005

> Wrong method signature called depending on the name of the operation with JWS
> -----------------------------------------------------------------------------
>
>          Key: AXIS-2211
>          URL: http://issues.apache.org/jira/browse/AXIS-2211
>      Project: Apache Axis
>         Type: Bug
>     Versions: 1.2.1
>  Environment: Windows Xp, Java 1.5.0_04, Tomcat 5.5.9, Axis 1.2.1
>     Reporter: Andrea Matsunaga

>
> I have a JWS service with two methods with the same name but different signatures (one
has String and the other an array of string). This service was working properly on Axis 1.1
(on Linux). Now, I'm trying to port it to Axis 1.2.1 (on Windows) and though the client is
trying to access the operation with a String, the operation with an array of string signature
is being called by Axis. Using the SOAPMonitor, it is possible to see that the client is sending
a proper SOAP message indicating a string (and not an array of string), but the message returned
is with an array of string. Adding some logs to my service, it was verified that the wrong
operation was invoked. The odd aspect of this is that just by changing the name of the operation
the expected behavior can be "recovered". The only difference that I could notice is that
the generated WSDL shows the response/request messages in a different order, but this should
not be influencing wich operation is invoked. When the operation is named "translate", the
service misbehaves, while when the exact same service has its operations renamed to "echoString",
everything works fine.
> Here is the service that misbehaves (i.e., when the client tries to access the first
method with String, Axis actually invokes the second with an array of strings):
> public class Echo {
>     public String translate(String lang, String text) {
>         return "Echo> " + text;
>     }
>     public String[] translate(String lang, String[] words) {
>         if (null != words) {
>             for (int i = 0; i < words.length; i++) {
>                 words[i] = "Echo[" + i + "]> " + words[i];
>             }
>         }
>         return words;
>     }
> }
> Here is the service that works as expected (i.e., when the client tries to access the
first method with String, Axis invokes the first with a string; note that only the operation
name changed):
> public class Echo {
>     public String echoString(String lang, String text) {
>         return "Echo> " + text;
>     }
>     public String[] echoString(String lang, String[] words) {
>         if (null != words) {
>             for (int i = 0; i < words.length; i++) {
>                 words[i] = "Echo[" + i + "]> " + words[i];
>             }
>         }
>         return words;
>     }
> }

-- 
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


Mime
View raw message