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

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • 1.4, 1.4.1, 1.5
    • 1.6.0
    • transports
    • None
    • 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

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

              Dates

                Created:
                Updated:
                Resolved: