java - 主机、上下文和 webapp 双实例的 Tomcat 问题

标签 java tomcat alias server.xml

/...too long and unclear explanation.../

换句话说,我搜索了仅使用(一个或多个)域名(然后是 www.my_domain.it 而不是 www.my_domain.it/appname)的网站的正确方式,所有这些都必须指向webapp 的相同实例(这样从您访问的任何域名,将始终显示相同的运行时数据)。

所以,是的,我已经在 tomcat/webapps 文件夹中部署了 WAR 文件,现在,正确编辑 conf/server.xml 以获得上述结果,对应于以下之一?

1.

<Host name="my_domain.eu" appBase="webapps" unpackWARs="true" autoDeploy="true">
            <Alias>www.my_domain.eu</Alias>
            <Alias>www.my_domain.it</Alias>
            <Alias>www.my_domain_2.it</Alias>
            <Context path="" docBase="appname" debug="0" privileged="true" />
            ...
    </Host>

2.

<Host name="my_domain.eu" appBase="webapps/appname" unpackWARs="true" autoDeploy="true">
                <Alias>www.my_domain.eu</Alias>
                <Alias>www.my_domain.it</Alias>
                <Alias>www.my_domain_2.it</Alias>
                <Context path="" docBase="appname" debug="0" privileged="true" />
                ...
        </Host>

3.

<Host name="my_domain.eu" appBase="webapps/appname" unpackWARs="true" autoDeploy="true">
                <Alias>www.my_domain.eu</Alias>
                <Alias>www.my_domain.it</Alias>
                <Alias>www.my_domain_2.it</Alias>
                <Context path="/appname" docBase="appname" debug="0" privileged="true" />
                ...
        </Host>

4.

<Host name="my_domain.eu" appBase="webapps/appname" unpackWARs="true" autoDeploy="true">
                    <Alias>www.my_domain.eu</Alias>
                    <Alias>www.my_domain.it</Alias>
                    <Alias>www.my_domain_2.it</Alias>
 <!-- without context definition -->
                    ...
            </Host>

否则,正确的解决方案是什么? 感谢大家!

最佳答案

我假设您的应用程序实例之一位于 webapps 目录中,它会自动以其名称从该位置部署。使用 Context 元素,您可以从文件系统中的任何位置部署应用程序。

但是,最好不要使用此信息编辑 server.xml,而是在 conf/hostname 中创建单独的 context.xml 文件,或者只部署到主机的 webapps 目录。如果您想更改任何内容,您在 server.xml 中配置的任何内容都需要重新启动服务器。 server.xml 之外的配置可以在运行时获取,无需重新启动。

编辑:可能我之前回答的要点不清楚:

当您使用 Context 元素进行配置时:我建议不要使用 webapps 目录来部署您的 webapps。只需指向您实际部署 webapp 的目录。这将确保没有上下文将您的应用从 webapps/appname 部署为 /appname,即使您的上下文定义指向 /

另一种方法是在 webapps 中部署名为 ROOT 的应用程序 - 这是将此 webapp 实际部署为 / 的快捷方式(注意:目录全部大写- 或文件名(ROOT.war),如果我没记错的话,甚至在 Windows 上也是如此)。但是恕我直言,如果您决定使用 Context 定义来确定路径(但部署在 appbase (webapps) 之外),或者部署在 appbase(例如 webapps)部署。

模拟 appbase 以指向 webapps 中的某个目录将确保您激怒任何期望 webapps 目录中的应用程序将部署到 Tomcat 的人。这是将大量时间花在调试幻影问题上的简单方法——不要那样做。

关于java - 主机、上下文和 webapp 双实例的 Tomcat 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53780966/

相关文章:

linux - 当前目录中打开最后一个目录的别名

java - 为什么不在此 Java 代码中应用拆箱?

java - 关于 CsrfPreventionFilter 的 tomcat 错误是什么意思?

Bash shell...查找命令...带通配符的名称...别名或函数

c++ - 如何在 C++ 中为模板函数实例创建快捷方式?

apache - 如何配置 Tomcat 将两条路径重定向到另外两个不同的应用程序

java - 使用 Java 更改 Maven 依赖项版本

Java:如何以排序方式迭代 LinkedList?

java - 在多个 if 语句中调用正则表达式检查方法时使用哪种模式或方法?

java - 如何防止Eclipse+Tomcat运行当前类而不是项目(Vaadin)