Hello - I'm struggling with being able to pass an array of complex object types 
in an Axis2 POJO.  I've attempted multiple different workarounds (array 
wrapper, arraylists, wrapper of arraylists, etc), but all result in errors.

Can anyone point out the error I'm making in the code below or simply point me 
at a known correct example of how to pass an array of complex type in a POJO?  

thank you


Below is the trivial example I'm attempting to use and the resulting exception 
in the Tomcat log.  Axis2 version 1.3 is being used within Tomcat version 
6.0.14.  From what I see in the log, there appears to be an issue with 
deserializing the array.

the "complex" type:
public class Message 

{

private String msg;


public Message(String msg)

{

this.msg = msg;

}


public String getMsg() {

return msg;

}


public void setMsg(String msg) {

this.msg = msg;

}


}



the service client.  "serviceclient" is of RPCServiceClient type and 
initialized earlier.  the code below works when a single object is passed 
(String for example).

public String echo()

{

Object[] response = null;

try

{

Message[] msgs = { new Message("hello"), new Message("world") };

QName op = new QName("http://web.jArchivix";, "echo");


Object[] args = new Object[] { msgs };

Class[] returnTypes = new Class[] { String.class };


System.out.println("msg0: " + msgs[0].getMsg() + " msg[1]: " + 
msgs[1].getMsg());


response = this.serviceClient.invokeBlocking(op, args, returnTypes);

}

catch (Exception e)

{

e.printStackTrace();

}


return response != null ? (String) response[0] : null;

}



the Service code



public String echo(Message[] msgs) 

{


Message msg0 = msgs[0];

Message msg1 = msgs[1];


return (msg0.getMsg() + " " + msg1.getMsg()); 


} 



Below is the resulting AxisFault that is thrown in Tomcat (dump of catalina.out)

[ERROR] Exception occurred while trying to invoke service method echo
org.apache.axis2.AxisFault: jArchivix.vo.Message
        at org.apache.axis2.AxisFault.makeFault(AxisFault.java:417)
        at 
org.apache.axis2.engine.DefaultObjectSupplier.getObject(DefaultObjectSupplier.java:29)
        at 
org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:345)
        at 
org.apache.axis2.databinding.utils.BeanUtil.processObject(BeanUtil.java:655)
        at 
org.apache.axis2.databinding.utils.BeanUtil.ProcessElement(BeanUtil.java:574)
        at 
org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:535)
        at 
org.apache.axis2.rpc.receivers.RPCUtil.processRequest(RPCUtil.java:153)
        at 
org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:188)
        at 
org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:98)
        at 
org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
        at 
org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)
        at 
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
        at 
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
        at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.InstantiationException: jArchivix.vo.Message
        at java.lang.Class.newInstance0(Class.java:340)
        at java.lang.Class.newInstance(Class.java:308)
        at 
org.apache.axis2.engine.DefaultObjectSupplier.getObject(DefaultObjectSupplier.java:27)
        ... 26 more




Below is the exception on the client side:



Feb 17, 2008 12:43:15 PM JArchivixServiceClient echo()

SEVERE: jArchivix.vo.Message

org.apache.axis2.AxisFault: jArchivix.vo.Message

at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486)

at 
org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343)

at 
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)

at 
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)

at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)

at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:528)

at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:508)

at 
org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:101)

at jArchivix.web.JArchivixServiceClient.echo(JArchivixServiceClient.java:51)

at WSTestSet.testWSEcho(WSTestSet.java:96)

at WSTestSet$1.runTest(WSTestSet.java:65)

at junit.framework.TestCase.runBare(TestCase.java:130)

at junit.framework.TestResult$1.protect(TestResult.java:110)

at junit.framework.TestResult.runProtected(TestResult.java:128)

at junit.framework.TestResult.run(TestResult.java:113)

at junit.framework.TestCase.run(TestCase.java:120)

at junit.framework.TestSuite.runTest(TestSuite.java:228)

at junit.framework.TestSuite.run(TestSuite.java:223)

at junit.textui.TestRunner.doRun(TestRunner.java:115)

at junit.textui.TestRunner.doRun(TestRunner.java:108)

at junit.textui.TestRunner.run(TestRunner.java:76)

at WSTestSet.main(WSTestSet.java:161)

Reply via email to