Tomcat 7/JBoss7 的自定义会话 ID 生成器
Posted
技术标签:
【中文标题】Tomcat 7/JBoss7 的自定义会话 ID 生成器【英文标题】:Custom session id generator for Tomcat 7/JBoss7 【发布时间】:2011-11-09 23:13:23 【问题描述】:伙计们,
我的 web 应用需要 URL 安全的会话 ID。那些由 JBoss 7 生成的(在 JBoss 中嵌入了 Tomcat 7)有像“+”这样的字符,这让我们有些心痛。我正在探索的途径之一是生成 URL 安全会话 ID。有人知道 J2EE Web 应用程序中的正确挂钩点,我可以在其中插入我的自定义会话 id 生成器吗?
理想情况下,这个挂钩点来自 servlet API 本身。如果没有,我也对 Tomcat/JBoss 特定的解决方案感到满意。
谢谢。
-拉吉
【问题讨论】:
你检查this了吗?刚刚查看了 Servlet 3.0 规范 - 似乎没有标准机制...... 感谢您的指点。很有帮助。 【参考方案1】:我知道这是 10 多年前提出的问题,但我刚刚有机会在自定义会话 ID 生成器上工作,并在我的 RND 中发现了这个悬而未决的问题。
这是一个 Tomcat 特定的解决方案。 (Tomcat 10.0)
您可以按照以下步骤在 Tomcat 中插入自定义会话 ID 生成器:
-
实现org.apache.catalina.SessionIdGenerator接口。
为此实现创建 jar 文件并将其放在 CATALINA_HOME\lib 文件夹中(此步骤很重要,因为如果您不执行此步骤,您将收到 ClassNotFoundException)
在应用程序的 WEB-INF/context.xml 文件中添加会话 ID 生成器的配置。例如
<Context>
<Manager>
<SessionIdGenerator className="com.yourpackage.MySessionIdGenerator"/>
</Manager>
</Context>
【讨论】:
以上是关于Tomcat 7/JBoss7 的自定义会话 ID 生成器的主要内容,如果未能解决你的问题,请参考以下文章
Tomcat SSL - IllegalStateException:SSL 会话 ID 不可用
取消嵌套命中和取消嵌套会话范围的自定义维度 BigQuery 代码过滤器