6

我正在尝试将几个 Web 应用程序部署到 tomcat 6.x,并且我已经关闭了 autoDeploy 和 onDeployStartup,因为我想手动注册这些应用程序并将它们映射到不基于它们的战争文件名称的 URL。

我将以下上下文文件放在 $catalina.home/conf/Catalina/localhost 中:

<Context path="" docBase="web-1.0-SNAPSHOT.war" debug="1">
</Context>

我将战争文件放在 $catalina.home/webapps 下,但是当我启动 tomcat 时,什么都没有部署。我什至没有看到有关我创建的上下文文件的任何错误消息。或者任何打印出来的东西都说错了。

有什么问题?我已经阅读了很多概述自动部署的文档,但是对于如何在自动部署之外执行此操作的细节非常粗略。

4

4 回答 4

3

因此,有关 autoDeploy 工作原理以及替代部署的详细信息仅在此处真正讨论:

http://wiki.apache.org/tomcat/HowTo#How_do_I_make_my_web_application_be_the_Tomcat_default_application.3F

我不知道为什么tomcat让这变得如此复杂。如果您关闭自动部署,您唯一的选择是修改 server.xml 并在那里添加您的上下文。您无法将上下文的定义外部化,这似乎是部署事物的复杂方式。如果我要花时间删除一个 XML 配置文件,我应该能够控制它安装到的 URL 和 docBase。只需直截了当,因为 Jetty 可以。

于 2012-11-08T14:59:23.717 回答
2

尝试以下步骤

关闭tomcat

将 web-1.0-SNAPSHOT.war 复制到 webapps 文件夹。

部署 web 应用程序。

现在 webapps 中有一个名为 web-1.0-SNAPSHOT 的文件夹。

转到 conf/server.xml

添加以下条目

<Context path="/abc" docBase="web-1.0-SNAPSHOT" debug="1"></Context>

文档库没有 .war 扩展名。部署 web-1.0-SNAPSHOT.war 后,webapps 内将有一个目录 web-1.0-SNAPSHOT。文档库应该指向这个目录。

请确保上下文标签在

<Host>  </Host> tag 

<Host>
    <Context path="/abc" docBase="web-1.0-SNAPSHOT" debug="1"></Context>
</Host>

编辑 server.xml 后,您必须重新启动 tomcat 服务器以反映更改。现在您可以在以下位置找到您的 webapp

localhost:8080/abc

希望这可以帮助

于 2012-11-08T04:42:30.323 回答
1

将 deployonstartup 设置为 false 告诉 tomcat 不要在启动时部署应用程序。我认为它足以关闭自动部署。所以也许可以在 server.xml 的主机中尝试以下操作:autoDeploy="false" deployOnStartup="true"。

于 2012-11-07T22:54:06.777 回答
0

示例代码

<Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="false" deployOnStartup="false">


    <Context path="/howto-prepareexam" docBase="howto-prepareexam" debug="1"></Context>

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

  </Host>

然后重启tomcat

于 2019-06-06T03:25:30.500 回答