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 Matthias Howell <ma...@gmail.com> on 2009/01/20 18:15:04 UTC

NPE Adding Headers

I'm trying to add a header to a soap message.

I'm using (although perhaps incorrectly) the code from
https://wso2.org/library/3156#soapheaderblock

Here is the code and below it is the stack trace.  The code was originally
generated with the Axis2 code generation plugin for 1.4.1 in Eclipse.  I
modified the signature adding the userData object - which I need to populate
the header.  If I don't call _serviceClient.addHeader(header); then I get no
error, but also no header.

Any ideas as to what I'm doing wrong?

Thanks

Matthias

public void publishALE(ALEMessage aLEMessage21, UserData_type0 userData)
throws java.rmi.RemoteException
   {
log.debug("Starting publish");

        org.apache.axis2.context.MessageContext _messageContext = null;

        org.apache.axis2.client.OperationClient _operationClient =
_serviceClient.createClient(_operations[0].getName());
        _operationClient.getOptions().setAction("
http://oculusinfo.com/ncompass/als/3.0/publishALE");

_operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);


addPropertyToOperationClient(_operationClient,org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR,"&");

        org.apache.axiom.soap.SOAPEnvelope env = null;
        _messageContext = new org.apache.axis2.context.MessageContext();

        SOAPFactory sf =
getFactory(_operationClient.getOptions().getSoapVersionURI());
        OMNamespace ns = sf.createOMNamespace("
http://oculusinfo.com/ncompass/user", "onBehalfOf");
        SOAPHeaderBlock header = sf.createSOAPHeaderBlock("user", ns);
        header.setText("HeaderInfo");
        log.debug("About to set header info from userdata");
        header.addAttribute("userId", userData.getUserName(), null);
        header.addAttribute("SsessionToken",userData.getToken(),null);
        _serviceClient.addHeader(header);
        log.debug("Added header info");

        // Style is Doc.

        env = toEnvelope(sf,aLEMessage21,optimizeContent(new
javax.xml.namespace.QName("http://oculusinfo.com/ncompass/als/3.0",
"publishALE")));

        // adding SOAP soap_headers
        _serviceClient.addHeadersToEnvelope(env);
        // create message context with that soap envelope

        _messageContext.setEnvelope(env);

        // add the message contxt to the operation client
        _operationClient.addMessageContext(_messageContext);

        _operationClient.execute(true);


_messageContext.getTransportOut().getSender().cleanup(_messageContext);

        return;

And here is the stack trace:
java.lang.NullPointerException
    at
com.ctc.wstx.sw.BaseNsStreamWriter.doWriteAttr(BaseNsStreamWriter.java:468)
    at
com.ctc.wstx.sw.BaseNsStreamWriter.writeAttribute(BaseNsStreamWriter.java:230)
    at
org.apache.axiom.om.impl.MTOMXMLStreamWriter.writeAttribute(MTOMXMLStreamWriter.java:178)
    at
org.apache.axiom.om.impl.util.OMSerializerUtil.serializeStartpart(OMSerializerUtil.java:443)
    at
org.apache.axiom.om.impl.util.OMSerializerUtil.serializeStartpart(OMSerializerUtil.java:197)
    at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:913)
    at
org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:641)
    at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:947)
    at
org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerializeAndConsume(OMSourcedElementImpl.java:662)
    at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:918)
    at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:947)
    at
org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:240)
    at
org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:224)
    at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:947)
    at
org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeImpl.java:471)
    at
org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:79)
    at
org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)
    at
org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
    at
org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
    at
org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
    at
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
    at
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
    at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
    at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
    at
org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:542)
    at
org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:189)
    at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
    at
org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:371)
    at
org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:209)
    at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:448)
    at
org.apache.axis2.description.OutOnlyAxisOperationClient.executeImpl(OutOnlyAxisOperation.java:272)
    at
org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
    at
com.hotgrinds.oculus.bridge.axis.ALSServiceStub.publishALE(ALSServiceStub.java:208)
<-- This is the _operationClient.execute(true); line in the code above.
    at
com.hotgrinds.mgmt.services.DNILogService.logDNIEvent(DNILogService.java:119)
    at
com.hotgrinds.debate.gui.servlets.MainServlet.doPost(MainServlet.java:63)
    at
com.hotgrinds.debate.gui.servlets.MainServlet.doGet(MainServlet.java:51)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at
com.hotgrinds.mgmt.filters.MasterFilter.doFilter(MasterFilter.java:203)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at
com.hotgrinds.gui.filters.SessionFilter.doFilter(SessionFilter.java:182)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at
com.hotgrinds.mgmt.filters.DNIAuthFilter.doFilter(DNIAuthFilter.java:226)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at com.hotgrinds.mgmt.filters.ErrorFilter.doFilter(ErrorFilter.java:84)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
    at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:595)