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