[ http://issues.apache.org/jira/browse/AXIS2-1124?page=all ]
Eran Chinthaka resolved AXIS2-1124. ----------------------------------- Resolution: Fixed > Axis servlet throws null pointer when SOAPAction is "" > ------------------------------------------------------ > > Key: AXIS2-1124 > URL: http://issues.apache.org/jira/browse/AXIS2-1124 > Project: Apache Axis 2.0 (Axis2) > Issue Type: Bug > Components: core > Environment: Java 1.4.2, Tomcat 4, Axis 2 nightly build from 9/7/2006 > Reporter: Todd Doolittle > Assigned To: Eran Chinthaka > Priority: Blocker > > This problem occurs with the latest nightly build. > In issue 1103 a bug was fixed that was causing a SOAP client to set the > SOAPAction header to the operation name even though the WSDL used to create > the stub specified that the SOAPAction was to be "" (empy string). This > worked and now when the WSDL specifies a SOAPAction of "", the client sets > the header appropriately. > However now an Axis 2 service generated from the same WSDL receiving a > message with a SOAPAction of "" throws a null pointer exception. To > illustrate the problem I created some simple WSDL for an "echo" service that > specifies a soapaction="". If you use the latest nightly build to generate a > service and client from the WSDL and don't change anything else you should > receive an UnsupportedOperationException thrown by the skeleton since you > never implemented the business logic. Instead when the service receives the > SOAP message, it will puke on the empty SOAPAction header and throw a > NullPointerException. Below is the WSDL. Below that is a stack trace. > <?xml version="1.0" encoding="UTF-8" standalone="no" ?> > <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > name="Echo" targetNamespace="http://tempuri.org/" > xmlns:fjs="http://tempuri.org/" > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > <wsdl:types> > <xsd:schema elementFormDefault="qualified" > targetNamespace="http://tempuri.org/" > xmlns:s1="http://tempuri.org/"> > <xsd:element name="StringToEcho" type="xsd:string" /> > <xsd:element name="EchoedString" type="xsd:string" /> > </xsd:schema> > </wsdl:types> > <wsdl:message name="echoStringIn"> > <wsdl:part element="fjs:StringToEcho" name="parameters" /> > </wsdl:message> > <wsdl:message name="echoStringOut"> > <wsdl:part element="fjs:EchoedString" name="parameters" /> > </wsdl:message> > <wsdl:portType name="EchoPortType"> > <wsdl:operation name="echoString"> > <wsdl:input message="fjs:echoStringIn" name="StringToEcho" /> > <wsdl:output message="fjs:echoStringOut" name="EchoedString" /> > </wsdl:operation> > </wsdl:portType> > <wsdl:binding name="EchoBinding" type="fjs:EchoPortType"> > <soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> > <wsdl:operation name="echoString"> > <soap:operation soapAction="" style="document" /> > <wsdl:input name="StringToEcho"> > <soap:body use="literal" /> > </wsdl:input> > <wsdl:output name="EchoedString"> > <soap:body use="literal" /> > </wsdl:output> > </wsdl:operation> > </wsdl:binding> > <wsdl:service name="Echo"> > <wsdl:port binding="fjs:EchoBinding" name="EchoPortType"> > <soap:address location="http://localhost:8080/axis2/services/Echo" /> > </wsdl:port> > </wsdl:service> > </wsdl:definitions> > INFO: Received Error Message with id urn:uuid:ADD3D958422E63BE8411577144782181 > Exception in thread "main" org.apache.axis2.AxisFault: > java.lang.NullPointerException > at > org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:298) > at org.tempuri.EchoStub.echoString(EchoStub.java:138) > at Axis2ClientTest.main(Axis2ClientTest.java:20) > ^^^^^^^^^^^^^^^^^^^^^^^ The above part of the stack trace is my client > reporting the returned AxisFault, below is the service portion of the stack > track. > Caused by: java.lang.Exception: org.apache.axis2.AxisFault: > java.lang.NullPointerException; nested exception is: > java.lang.NullPointerException > at > org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:241) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:716) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:809) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948) > at > org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) > at > org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948) > at > org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152) > 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) > Caused by: java.lang.NullPointerException > at > org.apache.axis2.addressing.AddressingHelper.getAnonymousParameterValue(AddressingHelper.java:78) > at > org.apache.axis2.handlers.addressing.AddressingWSDLValidationHandler.checkAnonymous(AddressingWSDLValidationHandler.java:71) > at > org.apache.axis2.handlers.addressing.AddressingWSDLValidationHandler.invoke(AddressingWSDLValidationHandler.java:43) > at org.apache.axis2.engine.Phase.invoke(Phase.java:377) > at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:517) > at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:488) > at > org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:309) > at > org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:201) > ... 31 more > at org.apache.axis2.AxisFault.<init>(AxisFault.java:159) > ... 3 more -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]