You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "gareth smith (JIRA)" <ax...@ws.apache.org> on 2006/03/02 09:31:44 UTC

[jira] Created: (AXIS-2421) incorrect Bean deserialisation - deserialised object's constructor invoked with incorrect argument values - axis seems to confuse types

incorrect Bean deserialisation - deserialised object's constructor invoked with incorrect argument values - axis seems to confuse types
---------------------------------------------------------------------------------------------------------------------------------------

         Key: AXIS-2421
         URL: http://issues.apache.org/jira/browse/AXIS-2421
     Project: Apache Axis
        Type: Bug
  Components: Serialization/Deserialization  
    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.
-
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


[jira] Commented: (AXIS-2421) incorrect Bean deserialisation - deserialised object's constructor invoked with incorrect argument values - axis seems to confuse types

Posted by "Agnes Ro (JIRA)" <ax...@ws.apache.org>.
    [ https://issues.apache.org/jira/browse/AXIS-2421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12521016 ] 

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

One more thing, is this issue in 1.2 as well?

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


[jira] Commented: (AXIS-2421) incorrect Bean deserialisation - deserialised object's constructor invoked with incorrect argument values - axis seems to confuse types

Posted by "Nate Franzen (JIRA)" <ax...@ws.apache.org>.
    [ https://issues.apache.org/jira/browse/AXIS-2421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12491698 ] 

Nate Franzen commented on AXIS-2421:
------------------------------------

The problem is clearly there in axis 1.4 as well, 

There's a block of code axis/encoding/ConstructorTarget.java

                // Get arg for the type of the class
                for (int c = 0; c < classes.length; c++) {
                    boolean found = false;
                    int i = 0;
                    while (!found && i < values.size()) {
                         // got right class arg
-->                      if (values.get(i).getClass().getName().toLowerCase().indexOf(classes[c].getName().toLowerCase()) != -1) {
                            found = true;
                            args[c] = values.get(i);
                        }
                        i++;

where it just optimistically picks the first argument of matching type.  If the constructor takes two strings as parameters, then it is called with (string1, string1).  Nothing fails, it just corrupts the deserialized object.  Oops.   



> 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


[jira] Commented: (AXIS-2421) incorrect Bean deserialisation - deserialised object's constructor invoked with incorrect argument values - axis seems to confuse types

Posted by "Agnes Ro (JIRA)" <ax...@ws.apache.org>.
    [ 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


[jira] Commented: (AXIS-2421) incorrect Bean deserialisation - deserialised object's constructor invoked with incorrect argument values - axis seems to confuse types

Posted by "Rob Allen (JIRA)" <ax...@ws.apache.org>.
    [ https://issues.apache.org/jira/browse/AXIS-2421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12577140#action_12577140 ] 

Rob Allen commented on AXIS-2421:
---------------------------------

This is how we worked around this issue...

 // got right class arg
if (values.get(i).getClass().getName().toLowerCase().indexOf(classes[c].getName().toLowerCase()) != -1) {
    found = true;
    args[c] = values.get(i);
    values.remove(i);  // ADD THIS LINE
}

I should mention that I don't know whether this is a guaranteed fix as I'm not sure whether the first argument in the "values" list will always map to the first value of the args[] array.  The order was correct in each case I saw while running in the debugger. 


> 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