我在部署应用程序时遇到了一些问题。
环境: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
中的上下文对我不起作用,我该怎么做才能使其保持一致?谢谢。
最佳答案
我已经能够复制你的问题。
在修改 appBase
和 docBase
的组合后,我可以建议两种解决方法。看起来两者不一起操作。
选项 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/