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 <[EMAIL PROTECTED]> 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
