【问题标题】:tomcat 8 common.loader server.loader shared.loadertomcat 8 common.loader server.loader shared.loader
【发布时间】:2018-04-15 02:05:45
【问题描述】:

我使用的是tomcat 8,在

tomcat-home/config/catalina.properties

,有关于

的部分

common.loader、server.loader 和 shared.loader

然而,关于类加载器(https://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html)的tomcat文档中,只有common.loader的描述。

那么这3个加载器有什么区别呢? (我知道common class loader contains additional classes that are made visible to both Tomcat internal classes and to all web applications. Normally, application classes should NOT be placed here. If left blank, server.loader and shared.loader will use common.loader config. Webapp common jar can be placed in shared.loader. 但是还有什么区别呢?比如common.loader和server.loader、server.loader和shared.loader的区别等等?)

【问题讨论】:

    标签: tomcat


    【解决方案1】:

    (可能正是因为这种混淆)默认情况下不再使用它们。服务器类路径用于包含仅可用于服务器而不是任何 Web 应用程序的类。我希望它是正确的:通用加载器包含对每个 Web 应用程序服务器可用的类,而共享加载器包含对所有 Web 应用程序可用的类,但对服务器不可用。

    这里是龙 - 不要去那里。内存很便宜——不要使用这些结构来“更优化地放置一些罐子”。默认值(如果您使用 JNDI 资源,则 JDBC 驱动程序除外)应该是:Jar 在您的 Web 应用程序中。

    它们不再使用是有原因的。原因是安装的可理解性和可维护性。应用程序之间共享的代码有很多意想不到的副作用。

    【讨论】:

    • 感谢您的帮助!也许最好是 tomcat 声明它们不再使用以及其中的原因。我问是因为我们有 7 个 webapp,每个都有非常大的大小,并且大多数都是相同的 jar,因此它们需要很长时间才能部署到生产服务器。
    • 嗯,它们就在那里,“不再使用”是指“不再默认配置”。剩下的就是我的看法。我喜欢尽可能地简化一切,而是在额外的内存上投入一些小改动
    • 您可以在此文档中查看示例 tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html - @OlafKock 是对的 - 您可以看到“服务器”加载程序可能被命名为“catalina”,但我想这将是一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2015-01-14
    • 2016-03-28
    • 2015-04-05
    • 1970-01-01
    相关资源
    最近更新 更多