Uploaded image for project: 'Axis2'
  1. Axis2
  2. AXIS2-3876

first SSL POST request to AxisServlet with transportsession scope leads to NPE in DispatchPhase.fillContextsFromSessionContext

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 1.4, 1.4.1, 1.5
    • Fix Version/s: 1.6.0
    • Component/s: transports
    • Labels:
      None
    • Environment:
      WLS8.1, AIX

      Description

      We use Axis 1.4 in an WLS 8.1 environment. There are no TransportReceivers registered in axis2.xml.

      After server start or redeploy it is impossible to get an answer to a POST request via SSL. We see following exception:

      @|27.06.2008 11:01:53|ERROR|org.apache.axis2.transport.http.AxisServlet|
      java.lang.NullPointerException
      at org.apache.axis2.engine.DispatchPhase.fillContextsFromSessionContext(DispatchPhase.java:229)
      at org.apache.axis2.engine.DispatchPhase.loadContexts(DispatchPhase.java:158)
      at org.apache.axis2.engine.DispatchPhase.checkPostConditions(DispatchPhase.java:97)
      at org.apache.axis2.engine.Phase.invoke(Phase.java:333)
      at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264)
      at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:163)
      at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
      at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:131)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:854)
      at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
      at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
      at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:349)
      at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7047)
      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
      at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
      at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3902)
      at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773)
      at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
      at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)

      After the first sent GET there is no problem anymore.

      The NPE is thrown here:

      TransportListener listener = msgContext.getTransportIn().getReceiver();

      Seems that msgContext.getTransportIn() returns null.

      Maybe this is because AxisServlet only resisters itself as TransportListener for HTTP scheme. From AxisServlet.init(ServletConfig config):

      TransportInDescription transportInDescription = new TransportInDescription(Constants.TRANSPORT_HTTP);
      transportInDescription.setReceiver(this);
      listenerManager.addListener(transportInDescription, true);

      Would it be possible to register AxisServlet here also for HTTPS?

      A GET request never fails because doGet() does an agent.initTransportListener(request); but doPost() never does.

      I know, there was already an Jira issue AXIS2-3141 which addresses the same thing. But the attached patch seems to be only a workaround.

        Attachments

        1. AxisServlet.patch
          1 kB
          Matthias Weber

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                matthias.weber Matthias Weber
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: