[
https://issues.apache.org/jira/browse/AXIS2-3141?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrew Martin updated AXIS2-3141:
---------------------------------
Description:
When I try to invoke my service via https, Axis2 1.3 throws a
NullPointerException (though it works fine via http):
java.lang.NullPointerException
at
org.apache.axis2.engine.DispatchPhase.fillContextsFromSessionContext(DispatchPhase.java:227)
at
org.apache.axis2.engine.DispatchPhase.loadContexts(DispatchPhase.java:156)
at
org.apache.axis2.engine.DispatchPhase.checkPostConditions(DispatchPhase.java:95)
at org.apache.axis2.engine.Phase.invoke(Phase.java:308)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:212)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:132)
at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
at
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:716)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:199)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Unknown Source)
Here's the stack trace if I use Axis2 1.2:
Caused by: java.lang.NullPointerException
at
org.apache.axis2.engine.InstanceDispatcher.fillContextsFromSessionContext(InstanceDispatcher.java:123)
at
org.apache.axis2.engine.InstanceDispatcher.invoke(InstanceDispatcher.java:70)
at org.apache.axis2.engine.Phase.invoke(Phase.java:383)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:203)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:131)
at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:279)
at
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:116)
... 33 more
I think I found what's causing it. My service is defined like this in
services.xml:
<service name="..." scope="transportsession">...</service>
If I remove 'scope="transportsession"', Axis2 no longer throws this
Exception, and my own code is invoked (though it causes my code to fail,
since mc.getSessionContext() returns null).
Is there any reason why 'scope="transportsession"' would work via http
but not https?
I get the same error with version-1.3.aar in Axis2 1.3 and version.aar in Axis2
1.2 if I change the first line of its services.xml to this:
<service name="Version" scope="transportsession">
I can get rid of the NullPointerException by modifying these lines of
org.apache.axis2.engine.DispatchPhase.fillContextsFromSessionContext:
TransportListener listener = msgContext.getTransportIn().getReceiver();
sessionContext = listener.getSessionContext(msgContext);
I changed them to this:
TransportInDescription description = msgContext.getTransportIn();
TransportListener listener = description == null ? null :
description.getReceiver();
sessionContext = listener == null ? null :
listener.getSessionContext(msgContext);
However, that doesn't fix the real problem. This method for retrieving the
SessionContext ends up returning null when the service is invoked via https
(though it works fine via http):
SessionContext getSession()
{
MessageContext mc = MessageContext.getCurrentMessageContext();
Options o;
o = mc.getOptions();
if (o == null)
{
o = new Options();
mc.setOptions(o);
}
o.setManageSession(true);
return mc.getSessionContext();
}
was:
There is a NullPointerException in
org.apache.axis2.engine.DispatchPhase.fillContextsFromSessionContext at line
227. I was able to fix it by modifying these lines:
TransportListener listener = msgContext.getTransportIn().getReceiver();
sessionContext = listener.getSessionContext(msgContext);
I changed them to this:
TransportInDescription description = msgContext.getTransportIn();
TransportListener listener = description == null ? null :
description.getReceiver();
sessionContext = listener == null ? null :
listener.getSessionContext(msgContext);
When I try to invoke my service via https, Axis2 1.3 throws a
NullPointerException:
java.lang.NullPointerException
at
org.apache.axis2.engine.DispatchPhase.fillContextsFromSessionContext(DispatchPhase.java:227)
at
org.apache.axis2.engine.DispatchPhase.loadContexts(DispatchPhase.java:156)
at
org.apache.axis2.engine.DispatchPhase.checkPostConditions(DispatchPhase.java:95)
at org.apache.axis2.engine.Phase.invoke(Phase.java:308)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:212)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:132)
at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
at
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:716)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:199)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Unknown Source)
Here's the stack trace if I use Axis2 1.2:
Caused by: java.lang.NullPointerException
at
org.apache.axis2.engine.InstanceDispatcher.fillContextsFromSessionContext(InstanceDispatcher.java:123)
at
org.apache.axis2.engine.InstanceDispatcher.invoke(InstanceDispatcher.java:70)
at org.apache.axis2.engine.Phase.invoke(Phase.java:383)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:203)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:131)
at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:279)
at
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:116)
... 33 more
I think I found what's causing it. My service is defined like this in
services.xml:
<service name="..." scope="transportsession">...</service>
If I remove 'scope="transportsession"', Axis2 no longer throws this
Exception, and my own code is invoked (though it causes my code to fail,
since mc.getSessionContext() returns null).
Is there any reason why 'scope="transportsession"' would work via http
but not https?
I get the same error with version-1.3.aar in Axis2 1.3 and version.aar in Axis2
1.2 if I change the first line of its services.xml to this:
<service name="Version" scope="transportsession">
Clarified that my change to the Axis2 source code doesn't fix the real problem.
It only postpones the problem.
> Can't use SSL with scope="transportsession"
> -------------------------------------------
>
> Key: AXIS2-3141
> URL: https://issues.apache.org/jira/browse/AXIS2-3141
> Project: Axis 2.0 (Axis2)
> Issue Type: Bug
> Affects Versions: 1.3, 1.2
> Environment: Windows XP Professional, Java 1.4.2_03, Tomcat 4.1.30,
> Axis2 1.3 and 1.2.
> Reporter: Andrew Martin
> Priority: Blocker
>
> When I try to invoke my service via https, Axis2 1.3 throws a
> NullPointerException (though it works fine via http):
> java.lang.NullPointerException
> at
> org.apache.axis2.engine.DispatchPhase.fillContextsFromSessionContext(DispatchPhase.java:227)
> at
> org.apache.axis2.engine.DispatchPhase.loadContexts(DispatchPhase.java:156)
> at
> org.apache.axis2.engine.DispatchPhase.checkPostConditions(DispatchPhase.java:95)
> at org.apache.axis2.engine.Phase.invoke(Phase.java:308)
> at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:212)
> at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:132)
> at
> org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
> at
> org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:716)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
> at
> org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:199)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
> at
> org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
> at
> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
> at
> org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
> at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
> at java.lang.Thread.run(Unknown Source)
> Here's the stack trace if I use Axis2 1.2:
> Caused by: java.lang.NullPointerException
> at
> org.apache.axis2.engine.InstanceDispatcher.fillContextsFromSessionContext(InstanceDispatcher.java:123)
> at
> org.apache.axis2.engine.InstanceDispatcher.invoke(InstanceDispatcher.java:70)
> at org.apache.axis2.engine.Phase.invoke(Phase.java:383)
> at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:203)
> at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:131)
> at
> org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:279)
> at
> org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:116)
> ... 33 more
> I think I found what's causing it. My service is defined like this in
> services.xml:
> <service name="..." scope="transportsession">...</service>
> If I remove 'scope="transportsession"', Axis2 no longer throws this
> Exception, and my own code is invoked (though it causes my code to fail,
> since mc.getSessionContext() returns null).
> Is there any reason why 'scope="transportsession"' would work via http
> but not https?
> I get the same error with version-1.3.aar in Axis2 1.3 and version.aar in
> Axis2 1.2 if I change the first line of its services.xml to this:
> <service name="Version" scope="transportsession">
> I can get rid of the NullPointerException by modifying these lines of
> org.apache.axis2.engine.DispatchPhase.fillContextsFromSessionContext:
> TransportListener listener = msgContext.getTransportIn().getReceiver();
> sessionContext = listener.getSessionContext(msgContext);
> I changed them to this:
> TransportInDescription description = msgContext.getTransportIn();
> TransportListener listener = description == null ? null :
> description.getReceiver();
> sessionContext = listener == null ? null :
> listener.getSessionContext(msgContext);
> However, that doesn't fix the real problem. This method for retrieving the
> SessionContext ends up returning null when the service is invoked via https
> (though it works fine via http):
> SessionContext getSession()
> {
> MessageContext mc = MessageContext.getCurrentMessageContext();
> Options o;
> o = mc.getOptions();
> if (o == null)
> {
> o = new Options();
> mc.setOptions(o);
> }
> o.setManageSession(true);
> return mc.getSessionContext();
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]