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 "Bruce Chen (JIRA)" <ax...@ws.apache.org> on 2005/03/10 17:39:52 UTC
[jira] Commented: (AXIS-1362) Axis 1.2 bata can not process List
[ http://issues.apache.org/jira/browse/AXIS-1362?page=comments#action_60599 ]
Bruce Chen commented on AXIS-1362:
----------------------------------
This problem resolved in RC2
But found again in RC3!
> Axis 1.2 bata can not process List
> ----------------------------------
>
> Key: AXIS-1362
> URL: http://issues.apache.org/jira/browse/AXIS-1362
> Project: Axis
> Type: Bug
> Components: Serialization/Deserialization
> Versions: 1.2 Beta
> Environment: Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_02-b03)
> Java HotSpot(TM) Client VM (build 1.4.2_02-b03, mixed mode)
> tomcat 5.0.19
> Reporter: Bruce Chen
> Attachments: axis.zip, screenshot-1.jpg
>
> At begin, I use Axis 1.1,
> I got an Deserialization error in the follwing env.
> - Call returning a simple JavaBean
> - Call added a client handler( it works if not add the client handler)
> when i upgrade Axis to 1.2 beta
> The error message disappeared and it works.
> However now it reports a Serialization error message on another operation which returning an List and works well at Axis 1.1
> ////////////////////////////////////////////////////////
> package bene.manual;
> import java.util.ArrayList;
> import java.util.HashMap;
> import java.util.Iterator;
> import java.util.List;
> import java.util.Map;
> import javax.xml.namespace.QName;
> import javax.xml.rpc.ParameterMode;
> import org.apache.axis.Handler;
> import org.apache.axis.client.Call;
> import org.apache.axis.client.Service;
> import org.apache.axis.encoding.XMLType;
> import org.apache.axis.encoding.ser.ArrayDeserializerFactory;
> import org.apache.axis.encoding.ser.ArraySerializerFactory;
> import org.apache.axis.encoding.ser.BeanDeserializerFactory;
> import org.apache.axis.encoding.ser.BeanSerializerFactory;
> import org.apache.axis.encoding.ser.MapDeserializerFactory;
> import org.apache.axis.encoding.ser.MapSerializerFactory;
> public class TestClient {
> String url = "http://127.0.0.1:8080/axis/services/mytest";
> String uri = "urn:MyTest";
> Call call;
> QName qname;
> TestClient() {
> init();
> }
> void testList() throws Exception {
> /// Now test List .////////////
> List list = new ArrayList();
> list.add("test111");
> list.add("test222");
> call.removeAllParameters();
> qname = new QName(uri, "ArrayOf_tns1_anyType");
> call.registerTypeMapping(
> List.class,
> qname,
> new ArraySerializerFactory(),
> new ArrayDeserializerFactory());
> call.addParameter("list", qname, ParameterMode.IN);
> call.setReturnType(qname);
> call.setOperationName(new QName(uri, "testList"));
> List list1 = (List) call.invoke(new Object[] { list });
> for (int i = 0; i < list1.size(); i++) {
> System.out.println(list1.get(i));
> }
> }
> // operation 2 ,
> void testComplex() throws Exception{
> call.removeAllParameters();
> call.setOperationName(new QName(uri, "testComplex"));
> qname = new QName(uri, "MapItem");
> call.registerTypeMapping(
> MapItem.class,
> qname,
> new BeanSerializerFactory(MapItem.class, qname),
> new BeanDeserializerFactory(MapItem.class, qname));
> qname = new QName(uri, "ResultInfo");
> call.registerTypeMapping(
> ResultInfo.class,
> qname,
> new BeanSerializerFactory(ResultInfo.class, qname),
> new BeanDeserializerFactory(ResultInfo.class, qname));
> call.addParameter("string", XMLType.XSD_STRING, ParameterMode.IN);
> call.setReturnType(new QName(uri, "ResultInfo"));
> MapItem mi = (MapItem) call.invoke(new Object[] { "myname" });
> System.out.println(mi);
> //MapItem is a simple java bean
> }
> void printMap(Map map) {
> Iterator it = map.keySet().iterator();
> while (it.hasNext()) {
> Object key = it.next();
> Object value = map.get(key);
> System.out.println(key + ": " + value);
> }
> }
> void init() {
> try {
> call = (Call) new Service().createCall();
> call.setTargetEndpointAddress(url);
> call.setMaintainSession(true);
> Handler h = new ClientHandler();
>
> // if i add a client handler here, operation 2 can not work
> // it works after i upgrade to axis1.2
> // but operation 1 does not work which can work under axis1.1
>
> call.setClientHandlers(h, h);
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> public static void main(String[] args) throws Exception {
> TestClient tc = new TestClient();
> tc.testList();
> tc.testComplex();
>
> }
> }
> //////////////////////////////////////////////////////
> package bene.manual;
> import org.apache.axis.AxisFault;
> import org.apache.axis.Message;
> import org.apache.axis.MessageContext;
> import org.apache.axis.handlers.BasicHandler;
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> public class ClientHandler extends BasicHandler{
> private static Log log = LogFactory.getLog(ClientHandler.class);
>
> public void invoke(MessageContext mc) throws AxisFault {
> Message message;
> if (!mc.getPastPivot()) {
> message = mc.getRequestMessage();
> } else {
> message = mc.getResponseMessage();
> }
> String soap = null;
> if (message != null) {
> soap = message.getSOAPPartAsString();
> log.debug(soap);
> //System.out.println(soap);
> }
> }
> }
> ////////////////////////
> package bene.manual;
> public class MapItem implements java.io.Serializable {
> private String key;
> private String value;
> public MapItem() {
> }
> public MapItem(String key, String value){
> this.key = key;
> this.value = value;
> }
> public String getKey() {
> return key;
> }
> public void setKey(String key) {
> this.key = key;
> }
> public String getValue() {
> return value;
> }
> public void setValue(String value) {
> this.value = value;
> }
>
> public String toString(){
> return key + "=" + value;
> }
> }
--
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
-
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira