users@jax-rpc.java.net

deserialization error

From: <matt_at_bennettsworld.com>
Date: Mon, 16 Apr 2007 09:59:44 -0700

Hello,

I am using JWSDK 1.5 and am getting a deserialization error on elements
that are declared as nillable in the WSDL. If the element is declared
as nillable in the WSDL, shouldn't an empty element be allowed in the
request? Is there a feature on the wscompile that I need to include?

I would be extremely grateful for any help you can provide.

Below I have included (1) the Ant target, (2) the WSDL type, (3) the
SOAP request, and (4) the stack trace.


Ant Target for the wscompile
============================
<target name="generate-server"
        depends="generate-client"
        description="Generate the JAX-RPC server classes.">
  <wscompile features="searchschema,strict,wsi"
             keep="true"
             import="true"
             base="${build.ws}/WEB-INF/classes"
             sourceBase="${src.home}"
             xPrintStackTrace="true"
             verbose="true"
             model="${build.ws}/WEB-INF/${model.rpcenc.file}"
             config="${config.server.name}">
    <classpath>
      <path refid="compile.classpath" />
    </classpath>
  </wscompile>
</target>


WSDL Type
=========
<xsd:complexType name="GetRegulatoryActionsHitListRequestType">
  <xsd:sequence>
    <xsd:element name="EntityIdentification"
                 type="xsd:positiveInteger" nillable="false" />
    <xsd:element name="StartingActionDate" type="xsd:dateTime"
                 nillable="true" minOccurs="0" maxOccurs="1" />
    <xsd:element name="State" type="xsd:string" nillable="true"
                 minOccurs="0" maxOccurs="1" />
  </xsd:sequence>
</xsd:complexType>


SOAP Request
============
<?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:q0="http://external-apps.naic.org/rirsWS"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <q0:GetRegulatoryActionsHitListRequest>
      <q0:EntityIdentification>555</q0:EntityIdentification>
      <q0:StartingActionDate />
      <q0:State />
    </q0:GetRegulatoryActionsHitListRequest>
  </soapenv:Body>
</soapenv:Envelope>


Stack Trace
===========
Apr 16, 2007 11:08:21 AM com.sun.xml.rpc.server.StreamingHandler handle
SEVERE: deserialization error:
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
deserialization error: java.lang.StringIndexOutOfBoundsException: String
index out of range: 0
        at
com.sun.xml.rpc.encoding.literal.LiteralSimpleTypeSerializer.deserialize(LiteralSimpleTypeSerializer.java:150)
        at
org.naic.rirs.webservices.GetRegulatoryActionsHitListRequestType__rirsWS__LiteralSerializer.doDeserialize(GetRegulatoryActionsHitListRequestType__rirsWS__LiteralSerializer.java:74)
        at
com.sun.xml.rpc.encoding.literal.LiteralObjectSerializerBase.internalDeserialize(LiteralObjectSerializerBase.java:216)
        at
com.sun.xml.rpc.encoding.literal.LiteralObjectSerializerBase.deserialize(LiteralObjectSerializerBase.java:124)
        at
org.naic.rirs.webservices.RegulatoryInformationRetrievalSystem_Tie.deserialize_getRegulatoryActionsHitList(RegulatoryInformationRetrievalSystem_Tie.java:757)
        at
org.naic.rirs.webservices.RegulatoryInformationRetrievalSystem_Tie.readFirstBodyElement(RegulatoryInformationRetrievalSystem_Tie.java:635)
        at
com.sun.xml.rpc.server.StreamingHandler.handle(StreamingHandler.java:233)
        at
com.sun.xml.rpc.server.http.JAXRPCServletDelegate.doPost(JAXRPCServletDelegate.java:443)
        at
com.sun.xml.rpc.server.http.JAXRPCServlet.doPost(JAXRPCServlet.java:102)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)

CAUSE:

java.lang.StringIndexOutOfBoundsException: String index out of range: 0
        at java.lang.String.charAt(String.java:444)
        at
com.sun.xml.rpc.encoding.simpletype.XSDDateTimeCalendarEncoder.stringToObject(XSDDateTimeCalendarEncoder.java:84)
        at
com.sun.xml.rpc.encoding.literal.LiteralSimpleTypeSerializer.deserialize(LiteralSimpleTypeSerializer.java:139)
        at
org.naic.rirs.webservices.GetRegulatoryActionsHitListRequestType__rirsWS__LiteralSerializer.doDeserialize(GetRegulatoryActionsHitListRequestType__rirsWS__LiteralSerializer.java:74)
        at
com.sun.xml.rpc.encoding.literal.LiteralObjectSerializerBase.internalDeserialize(LiteralObjectSerializerBase.java:216)
        at
com.sun.xml.rpc.encoding.literal.LiteralObjectSerializerBase.deserialize(LiteralObjectSerializerBase.java:124)
        at
org.naic.rirs.webservices.RegulatoryInformationRetrievalSystem_Tie.deserialize_getRegulatoryActionsHitList(RegulatoryInformationRetrievalSystem_Tie.java:757)
        at
org.naic.rirs.webservices.RegulatoryInformationRetrievalSystem_Tie.readFirstBodyElement(RegulatoryInformationRetrievalSystem_Tie.java:635)
        at
com.sun.xml.rpc.server.StreamingHandler.handle(StreamingHandler.java:233)
        at
com.sun.xml.rpc.server.http.JAXRPCServletDelegate.doPost(JAXRPCServletDelegate.java:443)
        at
com.sun.xml.rpc.server.http.JAXRPCServlet.doPost(JAXRPCServlet.java:102)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)
Apr 16, 2007 11:08:21 AM com.sun.xml.rpc.server.StreamingHandler handle
SEVERE: deserialization error:
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
deserialization error: java.lang.StringIndexOutOfBoundsException: String
index out of range: 0
        at
com.sun.xml.rpc.encoding.literal.LiteralSimpleTypeSerializer.deserialize(LiteralSimpleTypeSerializer.java:150)
        at
org.naic.rirs.webservices.GetRegulatoryActionsHitListRequestType__rirsWS__LiteralSerializer.doDeserialize(GetRegulatoryActionsHitListRequestType__rirsWS__LiteralSerializer.java:74)
        at
com.sun.xml.rpc.encoding.literal.LiteralObjectSerializerBase.internalDeserialize(LiteralObjectSerializerBase.java:216)
        at
com.sun.xml.rpc.encoding.literal.LiteralObjectSerializerBase.deserialize(LiteralObjectSerializerBase.java:124)
        at
org.naic.rirs.webservices.RegulatoryInformationRetrievalSystem_Tie.deserialize_getRegulatoryActionsHitList(RegulatoryInformationRetrievalSystem_Tie.java:757)
        at
org.naic.rirs.webservices.RegulatoryInformationRetrievalSystem_Tie.readFirstBodyElement(RegulatoryInformationRetrievalSystem_Tie.java:635)
        at
com.sun.xml.rpc.server.StreamingHandler.handle(StreamingHandler.java:233)
        at
com.sun.xml.rpc.server.http.JAXRPCServletDelegate.doPost(JAXRPCServletDelegate.java:443)
        at
com.sun.xml.rpc.server.http.JAXRPCServlet.doPost(JAXRPCServlet.java:102)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)

CAUSE:

java.lang.StringIndexOutOfBoundsException: String index out of range: 0
        at java.lang.String.charAt(String.java:444)
        at
com.sun.xml.rpc.encoding.simpletype.XSDDateTimeCalendarEncoder.stringToObject(XSDDateTimeCalendarEncoder.java:84)
        at
com.sun.xml.rpc.encoding.literal.LiteralSimpleTypeSerializer.deserialize(LiteralSimpleTypeSerializer.java:139)
        at
org.naic.rirs.webservices.GetRegulatoryActionsHitListRequestType__rirsWS__LiteralSerializer.doDeserialize(GetRegulatoryActionsHitListRequestType__rirsWS__LiteralSerializer.java:74)
        at
com.sun.xml.rpc.encoding.literal.LiteralObjectSerializerBase.internalDeserialize(LiteralObjectSerializerBase.java:216)
        at
com.sun.xml.rpc.encoding.literal.LiteralObjectSerializerBase.deserialize(LiteralObjectSerializerBase.java:124)
        at
org.naic.rirs.webservices.RegulatoryInformationRetrievalSystem_Tie.deserialize_getRegulatoryActionsHitList(RegulatoryInformationRetrievalSystem_Tie.java:757)
        at
org.naic.rirs.webservices.RegulatoryInformationRetrievalSystem_Tie.readFirstBodyElement(RegulatoryInformationRetrievalSystem_Tie.java:635)
        at
com.sun.xml.rpc.server.StreamingHandler.handle(StreamingHandler.java:233)
        at
com.sun.xml.rpc.server.http.JAXRPCServletDelegate.doPost(JAXRPCServletDelegate.java:443)
        at
com.sun.xml.rpc.server.http.JAXRPCServlet.doPost(JAXRPCServlet.java:102)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)



Thanks,
Matt