axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Agnes Ro (JIRA)" <axis-...@ws.apache.org>
Subject [jira] Commented: (AXIS-2421) incorrect Bean deserialisation - deserialised object's constructor invoked with incorrect argument values - axis seems to confuse types
Date Mon, 20 Aug 2007 05:53:31 GMT

    [ https://issues.apache.org/jira/browse/AXIS-2421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12521015
] 

Agnes Ro commented on AXIS-2421:
--------------------------------

Hi. Is there a patch for this? This is a big issue for us atm..

Agnes.

> incorrect Bean deserialisation - deserialised object's constructor invoked with incorrect
argument values - axis seems to confuse types
> ---------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS-2421
>                 URL: https://issues.apache.org/jira/browse/AXIS-2421
>             Project: Axis
>          Issue Type: Bug
>          Components: Serialization/Deserialization
>    Affects Versions: 1.3
>         Environment: Client on Windows XP Pro, Server (Tomcat and Axis) on RedHat Linux
>            Reporter: gareth smith
>            Priority: Minor
>
> Problem:
> - transmitting a simple object via SOAP
> - object has 4 attributes, two "long" values, one "int" value and one Java String value
> - problem is with deserialisation of longs
> - object's constructor is invoked with the first long's value for both long parameters
> - 2nd long's value is never used
> - problem seems to be in org.apache.axis.encoding.ConstructorTarget.java line 88
> - args[c] = values.get(i) causes the first value of a type to be returned, regardless
of whether or not ir was returned already
> - fix implemented by replacing above line with:
> args[c] = values.remove(i);
> - not sure of the wider implications of this fix, however.
> /*
>  * Some client code to test this
>  */
> package soaptest;
> import org.apache.axis.client.Call;
> import org.apache.axis.client.Service;
> import javax.xml.namespace.QName;
> public class ProfileClient {
>     public static void main(String[] args) {
> 	try {
> 	    String endpoint = "http://localhost:8087/axis/services/ProfileService";
> 	    Service service = new Service();
> 	    Call call = (Call) service.createCall();
> 	    call.setTargetEndpointAddress(new java.net.URL(endpoint));
> 	    call.setOperationName(new QName("http://soapinterop.org", "addSubscriber"));
> 	    call.registerTypeMapping(java.lang.Class.forName("soaptest.Subscriber"), new QName("Subscriber"),
new org.apache.axis.encoding.ser.BeanSerializerFactory(java.lang.Class.forName("soaptest.Subscriber"),
new QName("Subscriber")), new org.apache.axis.encoding.ser.BeanDeserializerFactory(java.lang.Class.forName("soaptest.Subscriber"),
new QName("Subscriber")));
> 	    Subscriber sub = new Subscriber (555555, 358408, 1, "jussi@sonera.fi");
> 	    System.out.println("About to invoke..." + sub.toString());
> 	    call.invoke(new Object[] {sub});
> 	}
> 	catch (java.rmi.RemoteException ex) {
> 	    System.err.println("Problem with remote connection: " + ex.toString());
> 	}
> 	catch (Exception ex) {
> 	    System.err.println("Problem executing client: " + ex.toString());
> 	}
>     }
> }
> /*
>  * This class should be on client and server
>  * /
> package soaptest;
> public class Subscriber implements java.io.Serializable {
>     public Subscriber(long imsi, long msisdn, int operator, String URI) {
> 	myIMSI = imsi;
> 	myMSISDN = msisdn;
> 	myOperator = operator;
> 	myURI = URI;
>     }
>     public long getIMSI() {
> 	System.out.println("Subscriber.getIMSI(): returning " + myIMSI);
> 	return myIMSI;
>     }
>     public long getMSISDN() {
> 	System.out.println("Subscriber.getMSISDN(): returning " + myMSISDN);
> 	return myMSISDN;
>     }
>     public int getOperator() {
> 	System.out.println("Subscriber.getOperator(): returning " + myOperator);
> 	return myOperator;
>     }
>     public String getURI() {
> 	System.out.println("Subscriber.getURI(): returning " + myURI);
> 	return myURI;
>     }
>     public void setIMSI(long imsi) {
> 	myIMSI = imsi;
>     }
>     public void setMSISDN(long msisdn) {
> 	myMSISDN = msisdn;
>     }
>     public void setOperator(int operator) {
> 	myOperator = operator;
>     }
>     public void setURI(String uri) {
> 	myURI = uri;
>     }
>     public String toString() {
> 	return "IMSI: " + myIMSI + ", MSISDN: " + myMSISDN + ", operator: " + myOperator + ",
URI: " + myURI;
>     }
>     private long myIMSI;
>     private long myMSISDN;
>     private int myOperator;
>     private String myURI;
> }
> /*
>  * this should be deployed as a web service
>  */
> package soaptest;
> import java.util.*;
> public class ProfileAccess {
>     public ProfileAccess() {
>         System.err.println("Starting");
>      }
>     public void addSubscriber(Subscriber sub)  {
>         System.err.println("The subscriber being added is " + sub.toString());
>     }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Mime
View raw message