Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
1.4, 1.4.1, 1.5
-
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
Attachments
Issue Links
- relates to
-
AXIS2-4465 TransportInDescription and TransportListener instances for AxisServlet are not managed properly
- Resolved