11

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

环境: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/" />

并得到了错误

主机 appBase 中的 docBase /home/krasilich/java/siloc/web/ 已指定,将被忽略

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

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

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

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

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

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

如果我可以在 java.dev 之类的自定义主机上执行此操作,那就太好$CATALINA_HOME/conf/Catalina/java.dev/siloc.xml

谢谢。

4

1 回答 1

18

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

appBase在修改 和 的组合后,我可以建议两种解决方法docBase。看起来两者并没有一起运行。

选项 1 - 删除 appBase

删除appBasefromserver.xmldocBase$CATALINA_HOME/conf/Catalina/java.dev/siloc.xml

我假设你的价值将是/home/krasilich/java/siloc/web/siloc.

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

选项 2 - 删除 docBase

$CATALINA_HOME/conf/Catalina/java.dev/siloc.xml

删除docBase并仅保留<Context/>

Tomcat 从中推断出 webapp 名称siloc$CATALINA_HOME/conf/Catalina/java.dev/siloc.xml并查找silocappBase 中命名的 webapp。

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

针对为什么manager有效,同样的原因 - manager.xml 中没有 docBase

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

警告:主机 appBase 中的 docBase ... 已指定,将被忽略

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

于 2010-10-13T08:35:12.730 回答