从tomcat的context.xml中的ServletContext获取sessionCookieName

时间:2015-07-07 08:47:43

标签: java session tomcat servlet-3.0

我怎样才能获得当前请求的会话名称?

tomcat会话的默认名称是“jsessionid”。鉴于我已经修改了tomcat的context.xml中的sessionCookieName配置,如下所示,在同一台服务器上运行多个tomcat实例

<Context sessionCookieName="appSessionId">

<!-- Default set of monitored resources. If one of these changes, the    -->
<!-- web application will be reloaded.                                   -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->

<!-- Uncomment this to enable Comet connection tacking (provides events
     on session expiration as well as webapp lifecycle) -->
<!--
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
-->
</Context>

我的网络应用需要知道当前请求的会话名称是什么。我尝试过如下:

request.getServletContext().getSessionCookieConfig().getName()
request.getSession().getServletContext().getSessionCookieConfig().getName()

但他们两个都是空的。

我的pom.xml如下

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
</dependency>

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-catalina</artifactId>
    <version>8.0.23</version>
</dependency>

我使用的tomcat也是8.0.23,感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这很令人困惑,因为我可以告诉以下内容总是返回null,所以我不确定它们的意思是什么!

request.getServletContext().getSessionCookieConfig().getName()
request.getSession().getServletContext().getSessionCookieConfig().getName()

你需要这样做:

SessionConfig.getSessionCookieName(request.getContext())