session - 在不将 jar 放入 CATALINA_HOME 目录的情况下创建自定义 tomcat session 管理器?

标签 session tomcat context.xml

我正在为 Tomcat 开发一个自定义 session 管理器,我让它工作时有一个警告,我必须将 jar(和所有相关的 jar)放在 CATALINA_HOME/lib 目录中,否则我会得到一个 noclassdef found 异常,即使尽管这些类位于 WEB-INF/lib 目录中。

有什么方法可以强制 tomcat 在加载 session 管理器时查看 Web 应用程序库目录?将它放在 lib 目录中很容易出错(因为在升级和/或在新系统上安装时必须记住将 jar 复制过来)并且使 jar 的开发更加困难。

最佳答案

从 Tomcat 7.0.27 开始,您的 META-INF/context.xml 中的 元素文件由 commons-digester 处理,有效的 ClassLoader 设置为加载 ContextConfig 类的那个——一个牢固地驻留在 Tomcat 的服务器 ClassLoader 中的类加载器,它在任何可以访问 webapp 类的类加载链之外。

因此,如果不修改 Tomcat 源代码,将无法加载您的 Manager从您的网络应用程序中。考虑加入 Tomcat 用户的邮件列表来讨论此类功能。

编辑 2015-067-01

如果你想指定一个ClassLoader对于您的 Web 应用程序,您需要使用 <Loader> <Context> 中的元素: http://tomcat.apache.org/tomcat-8.0-doc/config/loader.html

关于session - 在不将 jar 放入 CATALINA_HOME 目录的情况下创建自定义 tomcat session 管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10924715/

相关文章:

php - 为什么 session 在 Laravel 5.x 刷新时消失?

tomcat - Grails/Tomcat/MySQL 过时连接错误,即使在使用 JNDI 时也是如此?

通过 WebApp 进行 Java 数据源管理

tomcat - Liferay portlet 上的内存泄漏

java - Tomcat context.xml 文件,是否有层次结构?

tomcat - tomcat 中特定于应用程序的访问日志?

c# - Session Per Request 模式是如何工作的?

ios - AFNetworking 自动保存 Cookie

java - hibernate ,Java : no session or session was closed

spring - 如何保护个人金融网络应用程序?