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