【问题标题】:Tomcat shared loader not taken into account未考虑 Tomcat 共享加载程序
【发布时间】:2013-11-15 04:34:35
【问题描述】:

为了明确上下文,我将 Eclipse 及其工作区元数据用于我的 Tomcat 7 的配置。

我的 catalina.properties 中有这一行:

shared.loader=${catalina.home}/shared/conf

其中应该加载 ${catalina.home}/shared/conf 中包含的所有文件我的网络应用程序中包含的所有文件(WEB-INF/classes)。

但这不是我观察到的,我的应用程序中包含的文件总是覆盖我的共享加载器中的文件(即。log4j.xml 等)。

有什么想法吗?

【问题讨论】:

    标签: java eclipse tomcat shared loader


    【解决方案1】:

    首先,Tomcat 4.1 已经 4 年多没有支持了。

    其次,你没有正确阅读页面。查看“类加载器定义”部分的末尾,其中明确描述了搜索顺序。

    如果您想更改委托顺序,请查看 Loader 元素的 delegate 属性。从 4.1.x 到 8.0.x 的所有 Tomcat 版本都支持此功能。

    【讨论】:

    • 确实我的链接不相关。这是个好消息:tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html。我看不到共享加载程序,所以我认为我在这方面弄错了。我将编辑我的帖子以精确我的 tomcat 的版本。
    • 仍然支持共享加载器,但默认情况下只是禁用。查看 $CATALINA_BASE/conf/catalina.properties 以重新启用它。
    • 从我阅读的内容来看,似乎添加我的问题帖子中提到的行足以激活它。我什至试图把它放在通用加载器中没有任何效果。但我在文档中发现了一个有趣的点“当处理从 Web 应用程序的 WebappX 类加载器加载类的请求时,这个类加载器将首先在本地存储库中查找,而不是在查找之前进行委托。”
    • 再次,如果要更改委托顺序,请查看 Loader 元素的委托属性。
    • 确实,在我的 context.xml 中添加<Loader delegate="true" /> 可以解决问题。谢谢马克。
    猜你喜欢
    • 2013-12-31
    • 1970-01-01
    • 2020-03-12
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    相关资源
    最近更新 更多