我正在为Tomcat创建自定义会话管理器,但需要注意的是,我必须将jar(以及所有关联的jar)放在CATALINA_HOME / lib目录中,否则即使找到类,也无法找到noclassdef在WEB-INF / lib目录中。
在加载会话管理器时,有什么方法可以迫使tomcat在Web应用程序的lib目录中查找?将其放在lib目录中很容易出错(因为您必须记住在新系统上升级和/或安装时将jar复制过来),并使jar的开发更加困难。
从Tomcat 7.0.27开始,文件中的元素META-INF/context.xml由commons- digester处理,有效的ClassLoader设置为加载ContextConfig类的类- 该类牢固地位于Tomcat的服务器ClassLoader中,该类位于可访问Web应用程序类的任何东西的ClassLoading链。
META-INF/context.xml
因此,如果不修改Tomcat源,将无法Manager从Web应用程序中加载您的内容。考虑加入Tomcat用户的邮件列表以讨论此功能。
Manager
编辑2015-067-01
如果要ClassLoader为Web应用程序指定,则需要<Loader>在您的<Context>:http : //tomcat.apache.org/tomcat-8.0-doc/config/loader.html中使用元素。
ClassLoader
<Loader>
<Context>