Return-Path: Delivered-To: apmail-xml-axis-dev-archive@xml.apache.org Received: (qmail 28353 invoked by uid 500); 24 Jul 2002 08:04:31 -0000 Mailing-List: contact axis-dev-help@xml.apache.org; run by ezmlm Precedence: bulk Reply-To: axis-dev@xml.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list axis-dev@xml.apache.org Received: (qmail 28344 invoked from network); 24 Jul 2002 08:04:31 -0000 Date: 24 Jul 2002 08:05:00 -0000 Message-ID: <20020724080500.15402.qmail@nagoya.betaversion.org> From: bugzilla@apache.org To: axis-dev@xml.apache.org Cc: Subject: DO NOT REPLY [Bug 11120] New: - SOAPConnection call fails in the doGet() method of an http servlet X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT . ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE. http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11120 SOAPConnection call fails in the doGet() method of an http servlet Summary: SOAPConnection call fails in the doGet() method of an http servlet Product: Axis Version: beta-3 Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Normal Priority: Other Component: Serialization/Deserialization AssignedTo: axis-dev@xml.apache.org ReportedBy: jean.barraud@rd.francetelecom.com I'm trying to make 2 applications communicate via ebXML MS, and I use for this 2 servlets running in the same Tomcat webapp. The request SOAP message is built in the doGet() method of the first servlet called companyA using the javax.xml.soap API (and javax.xml.messaging to specify the endPoint). Here is the code: MessageFactory mf = MessageFactory.newInstance(); SOAPMessage msg = mf.createMessage(); SOAPPart sp = msg.getSOAPPart(); //create the header container SOAPEnvelope envelope = sp.getEnvelope(); SOAPUtil.ebSetup( envelope, "mailto:query@companya.com", "mailto:queryresponse@companyb.com", "123", "20002", "urn:services:QueryTransfers", "QueryAllTransfers"); URLEndpoint endPoint = new URLEndpoint("http://localhost:8000/ebXML-test/companyB"); System.out.println("company a sent: "); msg.writeTo(System.out); SOAPMessage reply = con.call(msg, endPoint); if (reply != null) {... The SOAPConnection object is declared as a private attribute of the request servlet, and initialised in the init method as follows: public void init(ServletConfig servletConfig) throws ServletException { super.init(servletConfig); try { SOAPConnectionFactory scFactory = SOAPConnectionFactory.newInstance(); con = scFactory.createConnection(); } catch (Exception e) { e.printStackTrace(); } } Now this is what happens when I call this servlet in a browser with the GET method: java.lang.NullPointerException at org.apache.axis.encoding.DeserializationContextImpl. (DeserializationContextImpl.java:160) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:451) at org.apache.axis.Message.getSOAPEnvelope(Message.java:362) at org.apache.axis.soap.SOAPConnectionImpl.call (SOAPConnectionImpl.java:88) at CompanyA.SendQueryServlet.doGet(SendQueryServlet.java:78) at javax.servlet.http.HttpServlet.service(HttpServlet.java) at javax.servlet.http.HttpServlet.service(HttpServlet.java) at org.apache.tomcat.facade.ServletHandler.doService(Unknown Source) at org.apache.tomcat.core.Handler.invoke(Unknown Source) at org.apache.tomcat.core.Handler.service(Unknown Source) at org.apache.tomcat.facade.ServletHandler.service(Unknown Source) at org.apache.tomcat.core.ContextManager.internalService(Unknown Source) at org.apache.tomcat.core.ContextManager.service(Unknown Source) at org.apache.tomcat.modules.server.Http10Interceptor.processConnection (Unknown \ Source) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(Unknown Source) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run (Unknown Source) at java.lang.Thread.run(Unknown Source) I downloaded the sources of Axis to have more details. I'm using an IDE called Eclipse. In debug mode, I found out that the null pointer exception is thrown in the constructor of the "DeserializationContextImpl" class. public DeserializationContextImpl(InputSource is, MessageContext ctx, String messageType) { EnvelopeBuilder builder = new EnvelopeBuilder(messageType, ctx.getSOAPConstants()); The ctx object is null when running the method, so the getSOAPConstants() method is called on a null pointer, which results in a nullpointerexception.