axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Davanum Srinivas <dava...@gmail.com>
Subject Re: IllegalArgumentException when deserializing arrays
Date Sun, 13 Nov 2005 02:26:42 GMT
use the --wrapArrays flag in WSDL2Java. it will help i think.

-- dims

On 11/9/05, Narayanan Singaram <zapsingaram@gmail.com> wrote:
> Hello All,
>
> I'm getting an IllegalArgumentException in the server while
> deserializing an array of array ([][])  object. Axis is calling the
> setter method with an array([]) where as the method expects an array of
> array([][]).
>
> I'm using wsdl2java for generating both the server and client side
> stubs. I tried with both axis 1.2.1 & 1.3 and am getting the same result.
> Sorry for the long email.
>
> Schema in the WSDL looks like
>
>             <complexType name="columnType">
>                 <attribute name="name" type="string" />
>                 <attribute name="type" type="string" />
>             </complexType>
>
>             <complexType name="rowValueType">
>                 <attribute name="value" type="string" />
>             </complexType>
>
>             <complexType name="rowType">
>                 <sequence>
>                     <element name="Data" type="tns:rowValueType"
> minOccurs="1" maxOccurs="unbounded" />
>                 </sequence>
>             </complexType>
>
>             <complexType name="exceptionType">
>                 <sequence>
>                     <element name="ExceptionType" type="string"
> maxOccurs="1" minOccurs="1"/>
>                     <element name="Column" type="tns:columnType"
> minOccurs="1" maxOccurs="unbounded" />
>                     <element name="Row" type="tns:rowType" minOccurs="1"
> maxOccurs="unbounded" />
>                 </sequence>
>             </complexType>
>
> Generated Java class for the ExceptionType contains a two dimensional
> array for 'row'.
>
> public class ExceptionType  implements java.io.Serializable {
>     private java.lang.String exceptionType;
>     private pushresults.ColumnType[] column;
>     private pushresults.RowValueType[][] row;
>
>     public ExceptionType() {
>     }
>
>     public ExceptionType(
>            java.lang.String exceptionType,
>            pushresults.ColumnType[] column,
>            pushresults.RowValueType[][] row) {
>            this.exceptionType = exceptionType;
>            this.column = column;
>            this.row = row;
>     }
>    ..... other bean methods
> }
>
>
> When deserializing the incoming request in the server(Tomcat), axis
> calls the setRow() method with a RowValueType[] object, where as the
> signature of the setter method is RowValueType[][]. Exception from the
> axis log can be found at the end of this email.
>
> Any idea how to rectify this or what mistake I'm doing?. Is there any
> property I should set in the server-config.wsdd?
>
> Thanks for your help.
>
> Thanks,
> Narayanan
>
> _ Exception in the Axis Log:_
> - Could not convert [Lpushresults.RowValueType; to bean field 'row',
> type [Lpushresults.RowValueType;
> - NSPop (32)
> - Popped element stack to org.apache.axis.message.MessageElement:Exception
> - Exit: DeserializationContext::endElement()
> - org.apache.axis.i18n.resource::handleGetObject(toAxisFault00)
> - Enter: SOAPPart ctor(FORM_FAULT)
> - org.apache.axis.i18n.resource::handleGetObject(setMsgForm)
> - Setting current message form to: FORM_FAULT (currentMessage is now
> org.apache.axis.AxisFault)
> - Exit: SOAPPart ctor()
> - Enter: SimpleChain::onFault
> - Exit: SimpleChain::onFault
> - org.apache.axis.i18n.resource::handleGetObject(axisFault00)
> - AxisFault:
> - NSPush (32)
> - org.apache.axis.i18n.resource::handleGetObject(empty00)
> - NSPop (empty)
> - NSPush (32)
> - org.apache.axis.i18n.resource::handleGetObject(empty00)
> - NSPop (empty)
> - NSPush (32)
> - org.apache.axis.i18n.resource::handleGetObject(empty00)
> - NSPop (empty)
> AxisFault
>  faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
>  faultSubcode:
>  faultString: java.lang.IllegalArgumentException: argument type mismatch
>  faultActor:
>  faultNode:
>  faultDetail:
>
> {http://xml.apache.org/axis/}stackTrace:java.lang.IllegalArgumentException:
> argument type mismatch
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:585)
>     at
> org.apache.axis.utils.BeanPropertyDescriptor.set(BeanPropertyDescriptor.java:142)
>     at
> org.apache.axis.encoding.ser.BeanPropertyTarget.set(BeanPropertyTarget.java:100)
>     at
> org.apache.axis.encoding.DeserializerImpl.valueComplete(DeserializerImpl.java:249)
>     at
> org.apache.axis.encoding.ser.ArrayDeserializer.valueComplete(ArrayDeserializer.java:583)
>     at
> org.apache.axis.encoding.DeserializerImpl.endElement(DeserializerImpl.java:509)
>     at
> org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
>     at
> org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:171)
>     at
> org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)
>     at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236)
>     at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384)
>     at
> org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:148)
>     at
> org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
>     at
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
>     at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
>     at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
>     at
> org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)
>     at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
>     at
> org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
>     at
> org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>     at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>     at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>     at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>     at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>     at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>     at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>     at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>     at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
>     at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
>     at
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>     at
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>     at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>     at java.lang.Thread.run(Thread.java:595)
>


--
Davanum Srinivas : http://wso2.com/blogs/

Mime
View raw message