【问题标题】:Apache+Tomcat+jk: serving static resources in a Java EE web appApache+Tomcat+jk:在 Java EE Web 应用程序中提供静态资源
【发布时间】:2013-03-10 17:55:24
【问题描述】:

我最近安装了 Apache w/s + Tomcat 并使用 jk 能够将请求从 apache 路由到 t/c。网上的例子一般是这样的:

JkMount /*.jsp myTC

我们有几个 Java EE 应用程序在单个 tomcat 实例上运行(那么为什么要使用 apache?相信我,我有理由)。我想我们可以将每个应用程序的上下文更改为:

/servlet/application1/
/servlet/application2/
/servlet/application3/

然后有类似的东西:

JkMount /servlet/* myTC

这会正确地将请求路由到 tomcat,但是,问题仍然是如何为标准 Java EE 应用程序提供静态资源:

/webapp-root
    resources/
       css/
       js/
       images/
    WEB-INF/
       /usual-folder-structure

问题是:

  1. 如何从 apache 提供资源/文件夹?所有应用程序都有自己的资源/文件夹。我认为资源/将不得不驻留在战争“之外”和 apache 的 doc-root 某处,但无法弄清楚 JkMount 字符串。

  2. /servlet/ 方案是“正确”的方法吗?我应该遵循哪些模式?

我会很感激任何帮助,任何指向网络资源的指针都会很棒,因为我需要阅读更多关于这方面的内容。

【问题讨论】:

    标签: apache tomcat7 mod-jk


    【解决方案1】:

    (1)以下应该足够了:

    JkMount /* myTC
    JkUnMount /resources/* myTC
    

    (2) 没关系。有很多正确的解决方案。我个人不喜欢 URL 中的 /servlet/。这是垃圾,尤其是在这个 URL 是网站/网络应用程序资产的时代。我使用这个方案:

    JkMount /* myTC
    JkUnMount /*.css myTC
    JkUnMount /*.ico myTC
    JkUnMount /*.jpg myTC
    JkUnMount /*.js myTC
    JkUnMount /*.png myTC
    JkUnMount /*.xml myTC
    JkUnMount /*.zip myTC
    

    【讨论】:

    • 所以如果所有三个应用程序在名为 resources/ 的文件夹中都有各自的静态资源,那么 apache 应该有 docroot/application1/resouces/、docroot/application2/resources/ 和 docroot/application3/resources/?
    • 是的。每个应用程序都应该存在于自己的 DocumentRoot 中。除非是某种设置,其中 3 个不同的应用程序共享相同的静态资源(极不可能)。
    • 您是否可以将我指向基于网络的资源,我可以阅读更多内容。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 2011-07-25
    相关资源
    最近更新 更多