Null pointer in RPCMessageReceiver. invokeBusinessLogic when QName is null for 
outAxisMessage when returning from void web service call.
----------------------------------------------------------------------------------------------------------------------------------------

                 Key: AXIS2-1706
                 URL: http://issues.apache.org/jira/browse/AXIS2-1706
             Project: Apache Axis 2.0 (Axis2)
          Issue Type: Bug
          Components: rpc
    Affects Versions: 1.1
         Environment: Windows XP with Axis2 1.1 running under Tomcat 5.0.28. 
Also, using JDK 1.4.2_10.
            Reporter: David R. Kraus


Issue is logged as Major for now, but soon (1-2 months) we will go into 
production with this so this may become a Blocker for us. We need the ability 
to create web service API methods which do not return a value.

Description:
Simple Logout web service API method simply disconnects an application session 
and then experiences a null pointer exception when returning back through Axis 
layer. The Logout methout has no return value(void).

Exception occurs on outaxismessage.getElementQName().getNamespaceURI() call 
because the element QName is null (RPCMessageReceiver. invokeBusinessLogic ).

 AxisMessage outaxisMessage = 
op.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
 if (inAxisMessage != null) {
         messageNameSpace = outaxisMessage.getElementQName().getNamespaceURI(); 
//null pointer
  }

Earlier in the method, inaxisMessage.getElementQName is checked for a null 
value, leading me to believe that the listed code is in error.

Using Eclipse in debug mode, I skipped the offending code, and the operation 
finished with no error, leading me to believe that a simple check for null 
would work. Also, when I added a String return value to the method everything 
worked fine.

Web Service method signature is: 
public void logout(String sessionState) throws Exception;
...and no value is returned.

WSDL of the full Web Service follows. Logout is the method which causes the 
exception. Logout2 is the the exact same method with a String return value, 
which has no problem.

==============Start WSDL==========================

<wsdl:definitions xmlns:axis2="http://ws.apache.org/axis2"; 
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"; 
xmlns:ns0="http://ws.apache.org/axis2/xsd"; 
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"; 
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"; 
xmlns:ns1="http://org.apache.axis2/xsd"; 
xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
targetNamespace="http://ws.apache.org/axis2";><wsdl:documentation>WusfDemo</wsdl:documentation><wsdl:types><xs:schema
 xmlns:ns="http://ws.apache.org/axis2/xsd"; attributeFormDefault="qualified" 
elementFormDefault="qualified" targetNamespace="http://ws.apache.org/axis2/xsd";>
<xs:element name="executeReportAsGraphFault">
<xs:complexType>
<xs:sequence>
<xs:element name="executeReportAsGraphFault" type="xs:anyType" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="executeReportAsGraph">
<xs:complexType>
<xs:sequence>
<xs:element name="sessionState" nillable="true" type="xs:string" />
<xs:element name="reportName" nillable="true" type="xs:string" />
<xs:element name="reportID" nillable="true" type="xs:string" />
<xs:element name="resultFlags" nillable="true" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="executeReportAsGraphResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="executeReportAsGridFault">
<xs:complexType>
<xs:sequence>
<xs:element name="executeReportAsGridFault" type="xs:anyType" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="executeReportAsGrid">
<xs:complexType>
<xs:sequence>
<xs:element name="sessionState" nillable="true" type="xs:string" />
<xs:element name="reportName" nillable="true" type="xs:string" />
<xs:element name="reportID" nillable="true" type="xs:string" />
<xs:element name="resultFlags" nillable="true" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="executeReportAsGridResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="loginFault">
<xs:complexType>
<xs:sequence>
<xs:element name="loginFault" type="xs:anyType" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="login">
<xs:complexType>
<xs:sequence>
<xs:element name="serverName" nillable="true" type="xs:string" />
<xs:element name="projectName" nillable="true" type="xs:string" />
<xs:element name="userName" nillable="true" type="xs:string" />
<xs:element name="password" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="loginResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="logout2Fault">
<xs:complexType>
<xs:sequence>
<xs:element name="logout2Fault" type="xs:anyType" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="logout2">
<xs:complexType>
<xs:sequence>
<xs:element name="sessionState" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="logout2Response">
<xs:complexType>
<xs:sequence>
<xs:element name="return" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="logoutFault">
<xs:complexType>
<xs:sequence>
<xs:element name="logoutFault" type="xs:anyType" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="logout">
<xs:complexType>
<xs:sequence>
<xs:element name="sessionState" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema></wsdl:types><wsdl:message 
name="executeReportAsGridMessage"><wsdl:part name="part1" 
element="ns0:executeReportAsGrid" /></wsdl:message><wsdl:message 
name="executeReportAsGridResponse"><wsdl:part name="part1" 
element="ns0:executeReportAsGridResponse" /></wsdl:message><wsdl:message 
name="executeReportAsGridFault"><wsdl:part name="part1" 
element="ns0:executeReportAsGridFault" /></wsdl:message><wsdl:message 
name="loginMessage"><wsdl:part name="part1" element="ns0:login" 
/></wsdl:message><wsdl:message name="loginResponse"><wsdl:part name="part1" 
element="ns0:loginResponse" /></wsdl:message><wsdl:message 
name="loginFault"><wsdl:part name="part1" element="ns0:loginFault" 
/></wsdl:message><wsdl:message name="logout2Message"><wsdl:part name="part1" 
element="ns0:logout2" /></wsdl:message><wsdl:message 
name="logout2Response"><wsdl:part name="part1" element="ns0:logout2Response" 
/></wsdl:message><wsdl:message name="logout2Fault"><wsdl:part name="part1" 
element="ns0:logout2Fault" /></wsdl:message><wsdl:message 
name="executeReportAsGraphMessage"><wsdl:part name="part1" 
element="ns0:executeReportAsGraph" /></wsdl:message><wsdl:message 
name="executeReportAsGraphResponse"><wsdl:part name="part1" 
element="ns0:executeReportAsGraphResponse" /></wsdl:message><wsdl:message 
name="executeReportAsGraphFault"><wsdl:part name="part1" 
element="ns0:executeReportAsGraphFault" /></wsdl:message><wsdl:message 
name="logoutMessage"><wsdl:part name="part1" element="ns0:logout" 
/></wsdl:message><wsdl:message name="logoutResponse" /><wsdl:message 
name="logoutFault"><wsdl:part name="part1" element="ns0:logoutFault" 
/></wsdl:message><wsdl:portType name="WusfDemoPortType"><wsdl:operation 
name="executeReportAsGrid"><wsdl:input 
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"; 
message="axis2:executeReportAsGridMessage" 
wsaw:Action="urn:executeReportAsGrid" /><wsdl:output 
message="axis2:executeReportAsGridResponse" /><wsdl:fault 
message="axis2:executeReportAsGridFault" name="executeReportAsGridFault" 
/></wsdl:operation><wsdl:operation name="login"><wsdl:input 
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"; 
message="axis2:loginMessage" wsaw:Action="urn:login" /><wsdl:output 
message="axis2:loginResponse" /><wsdl:fault message="axis2:loginFault" 
name="loginFault" /></wsdl:operation><wsdl:operation name="logout2"><wsdl:input 
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"; 
message="axis2:logout2Message" wsaw:Action="urn:logout2" /><wsdl:output 
message="axis2:logout2Response" /><wsdl:fault message="axis2:logout2Fault" 
name="logout2Fault" /></wsdl:operation><wsdl:operation 
name="executeReportAsGraph"><wsdl:input 
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"; 
message="axis2:executeReportAsGraphMessage" 
wsaw:Action="urn:executeReportAsGraph" /><wsdl:output 
message="axis2:executeReportAsGraphResponse" /><wsdl:fault 
message="axis2:executeReportAsGraphFault" name="executeReportAsGraphFault" 
/></wsdl:operation><wsdl:operation name="logout"><wsdl:input 
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"; 
message="axis2:logoutMessage" wsaw:Action="urn:logout" /><wsdl:output 
message="axis2:logoutResponse" /><wsdl:fault message="axis2:logoutFault" 
name="logoutFault" /></wsdl:operation></wsdl:portType><wsdl:binding 
name="WusfDemoSOAP11Binding" type="axis2:WusfDemoPortType"><soap:binding 
transport="http://schemas.xmlsoap.org/soap/http"; style="document" 
/><wsdl:operation name="executeReportAsGrid"><soap:operation 
soapAction="urn:executeReportAsGrid" style="document" /><wsdl:input><soap:body 
use="literal" /></wsdl:input><wsdl:output><soap:body use="literal" 
/></wsdl:output><wsdl:fault name="executeReportAsGridFault"><soap:body 
use="literal" /></wsdl:fault></wsdl:operation><wsdl:operation 
name="login"><soap:operation soapAction="urn:login" style="document" 
/><wsdl:input><soap:body use="literal" /></wsdl:input><wsdl:output><soap:body 
use="literal" /></wsdl:output><wsdl:fault name="loginFault"><soap:body 
use="literal" /></wsdl:fault></wsdl:operation><wsdl:operation 
name="logout2"><soap:operation soapAction="urn:logout2" style="document" 
/><wsdl:input><soap:body use="literal" /></wsdl:input><wsdl:output><soap:body 
use="literal" /></wsdl:output><wsdl:fault name="logout2Fault"><soap:body 
use="literal" /></wsdl:fault></wsdl:operation><wsdl:operation 
name="executeReportAsGraph"><soap:operation 
soapAction="urn:executeReportAsGraph" style="document" /><wsdl:input><soap:body 
use="literal" /></wsdl:input><wsdl:output><soap:body use="literal" 
/></wsdl:output><wsdl:fault name="executeReportAsGraphFault"><soap:body 
use="literal" /></wsdl:fault></wsdl:operation><wsdl:operation 
name="logout"><soap:operation soapAction="urn:logout" style="document" 
/><wsdl:input><soap:body use="literal" /></wsdl:input><wsdl:output><soap:body 
use="literal" /></wsdl:output><wsdl:fault name="logoutFault"><soap:body 
use="literal" /></wsdl:fault></wsdl:operation></wsdl:binding><wsdl:binding 
name="WusfDemoSOAP12Binding" type="axis2:WusfDemoPortType"><soap12:binding 
transport="http://schemas.xmlsoap.org/soap/http"; style="document" 
/><wsdl:operation name="executeReportAsGrid"><soap12:operation 
soapAction="urn:executeReportAsGrid" style="document" 
/><wsdl:input><soap12:body use="literal" 
/></wsdl:input><wsdl:output><soap12:body use="literal" 
/></wsdl:output><wsdl:fault name="executeReportAsGridFault"><soap12:fault 
use="literal" name="executeReportAsGridFault" 
/></wsdl:fault></wsdl:operation><wsdl:operation name="login"><soap12:operation 
soapAction="urn:login" style="document" /><wsdl:input><soap12:body 
use="literal" /></wsdl:input><wsdl:output><soap12:body use="literal" 
/></wsdl:output><wsdl:fault name="loginFault"><soap12:fault use="literal" 
name="loginFault" /></wsdl:fault></wsdl:operation><wsdl:operation 
name="logout2"><soap12:operation soapAction="urn:logout2" style="document" 
/><wsdl:input><soap12:body use="literal" 
/></wsdl:input><wsdl:output><soap12:body use="literal" 
/></wsdl:output><wsdl:fault name="logout2Fault"><soap12:fault use="literal" 
name="logout2Fault" /></wsdl:fault></wsdl:operation><wsdl:operation 
name="executeReportAsGraph"><soap12:operation 
soapAction="urn:executeReportAsGraph" style="document" 
/><wsdl:input><soap12:body use="literal" 
/></wsdl:input><wsdl:output><soap12:body use="literal" 
/></wsdl:output><wsdl:fault name="executeReportAsGraphFault"><soap12:fault 
use="literal" name="executeReportAsGraphFault" 
/></wsdl:fault></wsdl:operation><wsdl:operation name="logout"><soap12:operation 
soapAction="urn:logout" style="document" /><wsdl:input><soap12:body 
use="literal" /></wsdl:input><wsdl:output><soap12:body use="literal" 
/></wsdl:output><wsdl:fault name="logoutFault"><soap12:fault use="literal" 
name="logoutFault" /></wsdl:fault></wsdl:operation></wsdl:binding><wsdl:binding 
name="WusfDemoHttpBinding" type="axis2:WusfDemoPortType"><http:binding 
verb="POST" /><wsdl:operation name="executeReportAsGrid"><http:operation 
location="executeReportAsGrid" /><wsdl:input><mime:content type="text/xml" 
/></wsdl:input><wsdl:output><mime:content type="text/xml" 
/></wsdl:output></wsdl:operation><wsdl:operation name="login"><http:operation 
location="login" /><wsdl:input><mime:content type="text/xml" 
/></wsdl:input><wsdl:output><mime:content type="text/xml" 
/></wsdl:output></wsdl:operation><wsdl:operation name="logout2"><http:operation 
location="logout2" /><wsdl:input><mime:content type="text/xml" 
/></wsdl:input><wsdl:output><mime:content type="text/xml" 
/></wsdl:output></wsdl:operation><wsdl:operation 
name="executeReportAsGraph"><http:operation location="executeReportAsGraph" 
/><wsdl:input><mime:content type="text/xml" 
/></wsdl:input><wsdl:output><mime:content type="text/xml" 
/></wsdl:output></wsdl:operation><wsdl:operation name="logout"><http:operation 
location="logout" /><wsdl:input><mime:content type="text/xml" 
/></wsdl:input><wsdl:output><mime:content type="text/xml" 
/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service 
name="WusfDemo"><wsdl:port name="WusfDemoSOAP11port_http" 
binding="axis2:WusfDemoSOAP11Binding"><soap:address 
location="http://localhost:8080/axis2/services/WusfDemo"; 
/></wsdl:port><wsdl:port name="WusfDemoSOAP12port_http" 
binding="axis2:WusfDemoSOAP12Binding"><soap12:address 
location="http://localhost:8080/axis2/services/WusfDemo"; 
/></wsdl:port><wsdl:port name="WusfDemoHttpport1" 
binding="axis2:WusfDemoHttpBinding"><http:address 
location="http://localhost:8080/axis2/rest/WusfDemo"; 
/></wsdl:port></wsdl:service></wsdl:definitions>

=====================end WSDL==================





-- 
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]

Reply via email to