[ 
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, "[EMAIL 
> PROTECTED]");
>           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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to