axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Martin (JIRA)" <j...@apache.org>
Subject [jira] Updated: (AXIS2-3141) Can't use SSL with scope="transportsession"
Date Tue, 18 Sep 2007 19:10:44 GMT

     [ 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 modified my axis2.xml, uncommenting this section:
<transportReceiver name="https" class="org.apache.axis2.transport.nhttp.HttpCoreNIOSSLListener">...
Is that necessary?  I thought that SSL was controlled entirely by the servlet container in
Axis1.  Has that changed in Axis2?

After that, I got this:
java.lang.UnsupportedClassVersionError: org/apache/http/impl/nio/reactor/SSLIOSessionHandler
(Unsupported major.minor version 49.0)
I tried temporarily switching to jre1.5.0_06.  Is that necessary?  I thought Axis2 was compatible
with Java 1.4.

After that, I no longer get the NullPointerException immediately.

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:
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 modified my axis2.xml, uncommenting this section:
<transportReceiver name="https" class="org.apache.axis2.transport.nhttp.HttpCoreNIOSSLListener">...
Is that necessary?  I thought that SSL was controlled entirely by the servlet container in
Axis1.

After that, I got this:
java.lang.UnsupportedClassVersionError: org/apache/http/impl/nio/reactor/SSLIOSessionHandler
(Unsupported major.minor version 49.0)
I tried temporarily switching to jre1.5.0_06.  Is that necessary?  I thought Axis2 was compatible
with Java 1.4.

After that, I no longer get the NullPointerException immediately.

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();
}


Found a way to get rid of the NullPointerException by changing my axis2.xml instead of changing
the Axis2 code.  I still can't get to the SessionContext when my service is invoked by https,
though.  It still only works by http.

> 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 and 1.5.0_06, 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 modified my axis2.xml, uncommenting this section:
> <transportReceiver name="https" class="org.apache.axis2.transport.nhttp.HttpCoreNIOSSLListener">...
> Is that necessary?  I thought that SSL was controlled entirely by the servlet container
in Axis1.  Has that changed in Axis2?
> After that, I got this:
> java.lang.UnsupportedClassVersionError: org/apache/http/impl/nio/reactor/SSLIOSessionHandler
(Unsupported major.minor version 49.0)
> I tried temporarily switching to jre1.5.0_06.  Is that necessary?  I thought Axis2 was
compatible with Java 1.4.
> After that, I no longer get the NullPointerException immediately.
> 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: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Mime
View raw message