我在部署应用程序时遇到了一些问题。

环境:Ubuntu 10.04、Tomcat 7.02(从 tomcat 站点的存档安装,而不是从存储库安装),服务器手动运行和停止,不使用任何 IDE。

首先,我在 $CATALINA_HOME/conf/server.xml 中创建了主机:

<Host name="java.dev"
      appBase="/home/krasilich/java/"
      autoDeploy="true" >
    <Alias>www.java.dev</Alias>
</Host>

然后在 $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml 中创建一个上下文:
<Context docBase="siloc/web/" />

并得到了错误



但是,如果我将 manager.xml 复制到 $CATALINA_HOME/conf/Catalina/java.dev/ 我可以运行管理器应用程序。
如果我通过管理器部署我的应用程序 - 它说一切顺利,但我仍然在 java.dev:8080/siloc/上看到 404

这就是自定义主机的全部内容。

我也尝试通过 localhost 上的管理器部署应用程序并且它有效,我可以在 localhost:8080/siloc/上看到我的“Hello Word”

但是,如果我更改 index.jsp 中的文本,它不会影响前端。 “重新部署”按钮对我没有帮助。

正如我提到的 manager 只是将应用程序文件复制到 webapps 目录,并且不要对配置文件进行任何更改。

我只需要在我的文件系统中的任何目录中部署应用程序(实际上它将是 /home/krasilich/java/ )。

如果我可以在像 java.dev 这样的自定义主机上执行此操作,那就太好了
我需要答案,为什么 $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml 中的上下文对我不起作用,我该怎么做才能使其保持一致?

谢谢。

最佳答案

我已经能够复制你的问题。

在修改 appBasedocBase 的组合后,我可以建议两种解决方法。看起来两者不一起操作。

选项 1 - 删除 appBase

appBase 中删除 server.xml 并在 docBase 中的 $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml 中指定 Web 应用程序的完整路径

我假设您的值将是 /home/krasilich/java/siloc/web/siloc

注意:最多只指定父文件夹 /home/krasilich/java/siloc/web/ 将显示父文件夹的目录列表

选项 2 - 删除 docBase

$CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
删除 docBase 并只保留 <Context/>
Tomcat 从 siloc 推断 webapp 名称 $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml,并在 appBase 中查找名为 siloc 的 webapp。

这允许 java.dev:8080/siloc/工作,前提是您还将 appBase 中的 server.xml 更改为您的 webapp 的父文件夹 siloc

为了回应为什么 manager 起作用,同样的原因 - manager.xml 中没有 docBase

我正在尝试 docBase 的其他组合,但我给出的任何值都会引发



所以我的结论是删除docBase。这不是一个好主意 - 因为父文件夹的完整路径是在 server.xml 中硬编码的。

关于tomcat - 在 Tomcat 的自定义主机上部署应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3914888/

10-15 13:19