You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Linus Kamb <li...@iris.washington.edu> on 2005/07/14 22:17:01 UTC
NullPointerException sending array of org.w3c.dom.Elements in 1.2.1
I get the exception dump below when trying to return an array of
org.w3c.dom.Elements. The XML is fine. The method returns fine.
Is it an error to try to send or return Element[] in doc/lit wrapped?
I can send the very same XML to the server as doc lit wrapped no problem. It seems to be
a problem with sending (or returning) Element[].
I am pretty sure this worked before I upgraded to 1.2.1, but I haven't tested that feature
in a while. (Yeah, I know, bad regression testing...)
I have attached the wsdl.
The server method code looks like:
(I get the same exception when sending Element[] to the server.)
public org.w3c.dom.Element[] getXml(java.lang.String[] fnames)
throws java.rmi.RemoteException
{
System.out.println("filenames:" + fnames );
Element[] elems = null;
try
{
Vector v = new Vector( fnames.length );
for ( int i = 0; i < fnames.length; i++ )
{
File file = new File( fnames[i] );
System.out.println("file:" + file.getCanonicalPath() +
" exists: " + file.exists());
Document document = getDocument( file );
v.add( document.getDocumentElement()) ;
}
elems = (Element[])v.toArray(new Element[fnames.length]);
}
catch ( Exception ex )
{
ex.printStackTrace();
}
return elems;
}
No Exceptions are thrown in this code.
The exception is:
WARN 2005-07-13 16:38:20,622: Exception: - AttachmentsImpl:523
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode: faultString: java.lang.NullPointerException
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.lang.NullPointerException
at org.apache.axis.utils.ArrayUtil.getArrayComponentPD(ArrayUtil.java:153)
at org.apache.axis.utils.ArrayUtil.internalIsConvertable(ArrayUtil.java:116)
at org.apache.axis.utils.ArrayUtil.isConvertable(ArrayUtil.java:96)
at org.apache.axis.encoding.TypeMappingImpl.getSerializer(TypeMappingImpl.java:334)
at
org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:80)
at
org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:83)
at
org.apache.axis.encoding.SerializationContext.getSerializer(SerializationContext.java:1507)
at
org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1390)
at
org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:914)
at org.apache.axis.message.RPCParam.serialize(RPCParam.java:200) at
org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139) at
org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:477)
at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315) at
org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
at
org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:519)
at org.apache.axis.Message.getContentType(Message.java:475)
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:775)
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: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:118)
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:552)
{http://xml.apache.org/axis/}hostname:moab.local
java.lang.NullPointerException
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:317)
at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
at
org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:519)
at org.apache.axis.Message.getContentType(Message.java:475)
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:775)
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: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:118)
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:552)
Caused by: java.lang.NullPointerException
at org.apache.axis.utils.ArrayUtil.getArrayComponentPD(ArrayUtil.java:153)
at org.apache.axis.utils.ArrayUtil.internalIsConvertable(ArrayUtil.java:116)
at org.apache.axis.utils.ArrayUtil.isConvertable(ArrayUtil.java:96)
at org.apache.axis.encoding.TypeMappingImpl.getSerializer(TypeMappingImpl.java:334)
at
org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:80)
at
org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:83)
at
org.apache.axis.encoding.SerializationContext.getSerializer(SerializationContext.java:1507)
at
org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1390)
at
org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:914)
at org.apache.axis.message.RPCParam.serialize(RPCParam.java:200)
at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:477)
at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
... 32 more
------------------
Thanks,
Linus
Re: NullPointerException sending array of org.w3c.dom.Elements in 1.2.1
Posted by Anne Thomas Manes <at...@gmail.com>.
You specify the client-side type mapping using a client.config file.
Anne
On 7/19/05, Linus Kamb <li...@iris.washington.edu> wrote:
>
> This worked. Although I have to invoke the service the "old-fashioned" way, using Service
> and Call.invoke() as opposed to using the generated *ServiceLocator and
> *ServiceSoapBindingStub classes so I can set the register the type mapping. Maybe there
> is a way set the client side type mapping when using the *Stub, but I haven't figured it
> out yet. (It is quite possibly right in front of my eyes...)
>
> Thanks,
> Linus
>
> Anne Thomas Manes wrote:
> > Linus,
> >
> > Try changing your apachesoap:Element type to xsd:anyType, and then
> > define a mapping for anyType to a DOM Element.
> >
> > Anne
> >
> > On 7/14/05, Linus Kamb <li...@iris.washington.edu> wrote:
> >
> >>I get the exception dump below when trying to return an array of
> >>org.w3c.dom.Elements. The XML is fine. The method returns fine.
> >>
> >>Is it an error to try to send or return Element[] in doc/lit wrapped?
> >>
> >>I can send the very same XML to the server as doc lit wrapped no problem. It seems to be
> >>a problem with sending (or returning) Element[].
> >>
> >>
> >>I am pretty sure this worked before I upgraded to 1.2.1, but I haven't tested that feature
> >>in a while. (Yeah, I know, bad regression testing...)
> >>
> >>I have attached the wsdl.
> >>
> >>The server method code looks like:
> >>(I get the same exception when sending Element[] to the server.)
> >>
> >>public org.w3c.dom.Element[] getXml(java.lang.String[] fnames)
> >> throws java.rmi.RemoteException
> >>{
> >> System.out.println("filenames:" + fnames );
> >> Element[] elems = null;
> >> try
> >> {
> >> Vector v = new Vector( fnames.length );
> >> for ( int i = 0; i < fnames.length; i++ )
> >> {
> >> File file = new File( fnames[i] );
> >> System.out.println("file:" + file.getCanonicalPath() +
> >> " exists: " + file.exists());
> >> Document document = getDocument( file );
> >> v.add( document.getDocumentElement()) ;
> >> }
> >> elems = (Element[])v.toArray(new Element[fnames.length]);
> >> }
> >> catch ( Exception ex )
> >> {
> >> ex.printStackTrace();
> >> }
> >> return elems;
> >> }
> >>
> >>
> >>No Exceptions are thrown in this code.
> >>
> >>The exception is:
> >>
> >> WARN 2005-07-13 16:38:20,622: Exception: - AttachmentsImpl:523
> >>AxisFault
> >> faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
> >> faultSubcode: faultString: java.lang.NullPointerException
> >> faultActor:
> >> faultNode:
> >> faultDetail:
> >> {http://xml.apache.org/axis/}stackTrace:java.lang.NullPointerException
> >> at org.apache.axis.utils.ArrayUtil.getArrayComponentPD(ArrayUtil.java:153)
> >> at org.apache.axis.utils.ArrayUtil.internalIsConvertable(ArrayUtil.java:116)
> >> at org.apache.axis.utils.ArrayUtil.isConvertable(ArrayUtil.java:96)
> >> at org.apache.axis.encoding.TypeMappingImpl.getSerializer(TypeMappingImpl.java:334)
> >> at
> >>org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:80)
> >> at
> >>org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:83)
> >> at
> >>org.apache.axis.encoding.SerializationContext.getSerializer(SerializationContext.java:1507)
> >> at
> >>org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1390)
> >> at
> >>org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:914)
> >> at org.apache.axis.message.RPCParam.serialize(RPCParam.java:200) at
> >>org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
> >> at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
> >> at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139) at
> >>org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:477)
> >> at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
> >> at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315) at
> >>org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
> >> at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
> >> at
> >>org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:519)
> >> at org.apache.axis.Message.getContentType(Message.java:475)
> >> at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:775)
> >> 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: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:118)
> >> 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:552)
> >>
> >> {http://xml.apache.org/axis/}hostname:moab.local
> >>
> >>java.lang.NullPointerException
> >> at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
> >> at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:317)
> >> at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
> >> at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
> >> at
> >>org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:519)
> >> at org.apache.axis.Message.getContentType(Message.java:475)
> >> at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:775)
> >> 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: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:118)
> >> 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:552)
> >>
> >>
> >>Caused by: java.lang.NullPointerException
> >> at org.apache.axis.utils.ArrayUtil.getArrayComponentPD(ArrayUtil.java:153)
> >> at org.apache.axis.utils.ArrayUtil.internalIsConvertable(ArrayUtil.java:116)
> >> at org.apache.axis.utils.ArrayUtil.isConvertable(ArrayUtil.java:96)
> >> at org.apache.axis.encoding.TypeMappingImpl.getSerializer(TypeMappingImpl.java:334)
> >> at
> >>org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:80)
> >> at
> >>org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:83)
> >> at
> >>org.apache.axis.encoding.SerializationContext.getSerializer(SerializationContext.java:1507)
> >> at
> >>org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1390)
> >> at
> >>org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:914)
> >> at org.apache.axis.message.RPCParam.serialize(RPCParam.java:200)
> >> at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
> >> at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
> >> at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
> >> at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:477)
> >> at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
> >> at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
> >> ... 32 more
> >>
> >>------------------
> >>
> >>Thanks,
> >>Linus
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >
> >
>
Re: NullPointerException sending array of org.w3c.dom.Elements in
1.2.1
Posted by Linus Kamb <li...@iris.washington.edu>.
This worked. Although I have to invoke the service the "old-fashioned" way, using Service
and Call.invoke() as opposed to using the generated *ServiceLocator and
*ServiceSoapBindingStub classes so I can set the register the type mapping. Maybe there
is a way set the client side type mapping when using the *Stub, but I haven't figured it
out yet. (It is quite possibly right in front of my eyes...)
Thanks,
Linus
Anne Thomas Manes wrote:
> Linus,
>
> Try changing your apachesoap:Element type to xsd:anyType, and then
> define a mapping for anyType to a DOM Element.
>
> Anne
>
> On 7/14/05, Linus Kamb <li...@iris.washington.edu> wrote:
>
>>I get the exception dump below when trying to return an array of
>>org.w3c.dom.Elements. The XML is fine. The method returns fine.
>>
>>Is it an error to try to send or return Element[] in doc/lit wrapped?
>>
>>I can send the very same XML to the server as doc lit wrapped no problem. It seems to be
>>a problem with sending (or returning) Element[].
>>
>>
>>I am pretty sure this worked before I upgraded to 1.2.1, but I haven't tested that feature
>>in a while. (Yeah, I know, bad regression testing...)
>>
>>I have attached the wsdl.
>>
>>The server method code looks like:
>>(I get the same exception when sending Element[] to the server.)
>>
>>public org.w3c.dom.Element[] getXml(java.lang.String[] fnames)
>> throws java.rmi.RemoteException
>>{
>> System.out.println("filenames:" + fnames );
>> Element[] elems = null;
>> try
>> {
>> Vector v = new Vector( fnames.length );
>> for ( int i = 0; i < fnames.length; i++ )
>> {
>> File file = new File( fnames[i] );
>> System.out.println("file:" + file.getCanonicalPath() +
>> " exists: " + file.exists());
>> Document document = getDocument( file );
>> v.add( document.getDocumentElement()) ;
>> }
>> elems = (Element[])v.toArray(new Element[fnames.length]);
>> }
>> catch ( Exception ex )
>> {
>> ex.printStackTrace();
>> }
>> return elems;
>> }
>>
>>
>>No Exceptions are thrown in this code.
>>
>>The exception is:
>>
>> WARN 2005-07-13 16:38:20,622: Exception: - AttachmentsImpl:523
>>AxisFault
>> faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
>> faultSubcode: faultString: java.lang.NullPointerException
>> faultActor:
>> faultNode:
>> faultDetail:
>> {http://xml.apache.org/axis/}stackTrace:java.lang.NullPointerException
>> at org.apache.axis.utils.ArrayUtil.getArrayComponentPD(ArrayUtil.java:153)
>> at org.apache.axis.utils.ArrayUtil.internalIsConvertable(ArrayUtil.java:116)
>> at org.apache.axis.utils.ArrayUtil.isConvertable(ArrayUtil.java:96)
>> at org.apache.axis.encoding.TypeMappingImpl.getSerializer(TypeMappingImpl.java:334)
>> at
>>org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:80)
>> at
>>org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:83)
>> at
>>org.apache.axis.encoding.SerializationContext.getSerializer(SerializationContext.java:1507)
>> at
>>org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1390)
>> at
>>org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:914)
>> at org.apache.axis.message.RPCParam.serialize(RPCParam.java:200) at
>>org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
>> at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>> at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139) at
>>org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:477)
>> at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>> at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315) at
>>org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
>> at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
>> at
>>org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:519)
>> at org.apache.axis.Message.getContentType(Message.java:475)
>> at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:775)
>> 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: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:118)
>> 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:552)
>>
>> {http://xml.apache.org/axis/}hostname:moab.local
>>
>>java.lang.NullPointerException
>> at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
>> at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:317)
>> at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
>> at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
>> at
>>org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:519)
>> at org.apache.axis.Message.getContentType(Message.java:475)
>> at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:775)
>> 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: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:118)
>> 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:552)
>>
>>
>>Caused by: java.lang.NullPointerException
>> at org.apache.axis.utils.ArrayUtil.getArrayComponentPD(ArrayUtil.java:153)
>> at org.apache.axis.utils.ArrayUtil.internalIsConvertable(ArrayUtil.java:116)
>> at org.apache.axis.utils.ArrayUtil.isConvertable(ArrayUtil.java:96)
>> at org.apache.axis.encoding.TypeMappingImpl.getSerializer(TypeMappingImpl.java:334)
>> at
>>org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:80)
>> at
>>org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:83)
>> at
>>org.apache.axis.encoding.SerializationContext.getSerializer(SerializationContext.java:1507)
>> at
>>org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1390)
>> at
>>org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:914)
>> at org.apache.axis.message.RPCParam.serialize(RPCParam.java:200)
>> at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
>> at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>> at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
>> at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:477)
>> at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
>> at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
>> ... 32 more
>>
>>------------------
>>
>>Thanks,
>>Linus
>>
>>
>>
>>
>>
>>
>>
>
>
Re: NullPointerException sending array of org.w3c.dom.Elements in 1.2.1
Posted by Anne Thomas Manes <at...@gmail.com>.
Linus,
Try changing your apachesoap:Element type to xsd:anyType, and then
define a mapping for anyType to a DOM Element.
Anne
On 7/14/05, Linus Kamb <li...@iris.washington.edu> wrote:
> I get the exception dump below when trying to return an array of
> org.w3c.dom.Elements. The XML is fine. The method returns fine.
>
> Is it an error to try to send or return Element[] in doc/lit wrapped?
>
> I can send the very same XML to the server as doc lit wrapped no problem. It seems to be
> a problem with sending (or returning) Element[].
>
>
> I am pretty sure this worked before I upgraded to 1.2.1, but I haven't tested that feature
> in a while. (Yeah, I know, bad regression testing...)
>
> I have attached the wsdl.
>
> The server method code looks like:
> (I get the same exception when sending Element[] to the server.)
>
> public org.w3c.dom.Element[] getXml(java.lang.String[] fnames)
> throws java.rmi.RemoteException
> {
> System.out.println("filenames:" + fnames );
> Element[] elems = null;
> try
> {
> Vector v = new Vector( fnames.length );
> for ( int i = 0; i < fnames.length; i++ )
> {
> File file = new File( fnames[i] );
> System.out.println("file:" + file.getCanonicalPath() +
> " exists: " + file.exists());
> Document document = getDocument( file );
> v.add( document.getDocumentElement()) ;
> }
> elems = (Element[])v.toArray(new Element[fnames.length]);
> }
> catch ( Exception ex )
> {
> ex.printStackTrace();
> }
> return elems;
> }
>
>
> No Exceptions are thrown in this code.
>
> The exception is:
>
> WARN 2005-07-13 16:38:20,622: Exception: - AttachmentsImpl:523
> AxisFault
> faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
> faultSubcode: faultString: java.lang.NullPointerException
> faultActor:
> faultNode:
> faultDetail:
> {http://xml.apache.org/axis/}stackTrace:java.lang.NullPointerException
> at org.apache.axis.utils.ArrayUtil.getArrayComponentPD(ArrayUtil.java:153)
> at org.apache.axis.utils.ArrayUtil.internalIsConvertable(ArrayUtil.java:116)
> at org.apache.axis.utils.ArrayUtil.isConvertable(ArrayUtil.java:96)
> at org.apache.axis.encoding.TypeMappingImpl.getSerializer(TypeMappingImpl.java:334)
> at
> org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:80)
> at
> org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:83)
> at
> org.apache.axis.encoding.SerializationContext.getSerializer(SerializationContext.java:1507)
> at
> org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1390)
> at
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:914)
> at org.apache.axis.message.RPCParam.serialize(RPCParam.java:200) at
> org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
> at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
> at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139) at
> org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:477)
> at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
> at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315) at
> org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
> at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
> at
> org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:519)
> at org.apache.axis.Message.getContentType(Message.java:475)
> at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:775)
> 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: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:118)
> 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:552)
>
> {http://xml.apache.org/axis/}hostname:moab.local
>
> java.lang.NullPointerException
> at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
> at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:317)
> at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
> at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
> at
> org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:519)
> at org.apache.axis.Message.getContentType(Message.java:475)
> at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:775)
> 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: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:118)
> 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:552)
>
>
> Caused by: java.lang.NullPointerException
> at org.apache.axis.utils.ArrayUtil.getArrayComponentPD(ArrayUtil.java:153)
> at org.apache.axis.utils.ArrayUtil.internalIsConvertable(ArrayUtil.java:116)
> at org.apache.axis.utils.ArrayUtil.isConvertable(ArrayUtil.java:96)
> at org.apache.axis.encoding.TypeMappingImpl.getSerializer(TypeMappingImpl.java:334)
> at
> org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:80)
> at
> org.apache.axis.encoding.TypeMappingDelegate.getSerializer(TypeMappingDelegate.java:83)
> at
> org.apache.axis.encoding.SerializationContext.getSerializer(SerializationContext.java:1507)
> at
> org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1390)
> at
> org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:914)
> at org.apache.axis.message.RPCParam.serialize(RPCParam.java:200)
> at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
> at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
> at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
> at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:477)
> at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
> at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
> ... 32 more
>
> ------------------
>
> Thanks,
> Linus
>
>
>
>
>
>
>