【问题标题】:How to configure Tomcat7 `server.xml` for non-standard war-file location如何为非标准战争文件位置配置 Tomcat7 `server.xml`
【发布时间】:2015-02-14 00:47:00
【问题描述】:

我希望 Tomcat7 应用程序有这个目录结构:

/var/lib/tomcat7/webapps
    /foo
        /current -> /var/lib/tomcat7/webapps/foo/releases/1.1
        /releases
            /1.0
            /1.1
        /shared ...

current 是指向应用程序当前实际版本的符号链接。因此,我认为我需要在我的 server.xml 文件中添加一个上下文,如下所示:

<Context path="/foo/app" docbase="/var/lib/tomcat7/webapps/foo/current" />

foo/app 的 URL 将是

http://localhost:8080/foo/app

但是我得到的只是 404 错误。我安装了tomcat-admin,它显示foo/app,但并没有真正帮助我查看我错误地接线的地方。我还尝试了/etc/tomcat7/Catalina/localhost 中指定路径和文档库的foo.xml 文件,但这也不起作用。

如何配置上下文以支持上面显示的目录结构?

【问题讨论】:

    标签: xml tomcat tomcat7 server.xml context.xml


    【解决方案1】:

    您似乎不能在 appbase 中拥有备用上下文。如果您想要一个在应用程序库之外的应用程序库,那么使用上下文路径和上下文文档库是可行的方法。

    最终我放弃了强制使用 docbase 并导致我的 Tomcat 错误的文件结构。

    【讨论】:

    • 我不知道你的完整配置,但你可能想检查它是否部署了两次,即尝试这两个 URL 的 localhost:8080/foo/applocalhost:8080/foo/current ,如果是,那么你有风险.
    • 您也许可以使该文件夹结构正常工作。不过这会很棘手,因为您要与 Tomcat 通常遵循的约定作斗争。我的建议是将您的 /foo 目录放在磁盘上的其他位置,而不是在 appBase 下。然后只需将 docBase 指向您想要的版本,不需要符号链接。
    • 您也不应该将 标签放在 server.xml 中。这是一个现在不赞成的配置选项。它在技术上是可行的,但不太灵活,因为它需要重新启动服务器才能激活更改。也就是说,首选选项是使用通常位于conf/Catalina/localhost 目录中的app.xml,但在您的系统上使用/etc/tomcat7/Catalina/localhost。这样做的另一个优点是您可以使用 Tomcat 7 的应用程序版本控制,这在这里可能会有所帮助。 tomcat.apache.org/tomcat-7.0-doc/config/context.html#Naming
    猜你喜欢
    • 2013-09-14
    • 1970-01-01
    • 2012-06-12
    • 2015-08-20
    • 1970-01-01
    • 2014-08-18
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多