我在部署应用程序时遇到了一些问题。
环境: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 /
这就是自定义主机。
我也尝试通过localhost上的管理器部署应用程序,但它可以工作,我可以在localhost上看到我的“Hello Word”:8080 / siloc /
但是,如果我更改index.jsp中的文本,它将不会影响前端。 “重新部署”按钮对我没用。
正如我所提到的,管理员只需将应用程序文件复制到webapps目录,并且不要对配置文件进行任何更改。
我只需要在文件系统的任何目录中部署应用程序(实际上它都是/home/krasilich/java/
)。
如果我能在像java.dev这样的自定义主机上执行此操作,那就太棒了
我需要答案,为什么$CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
中的上下文对我不起作用,我该怎样做才能使它保持一致?
感谢。
答案 0 :(得分:18)
我能够复制你的问题。
在修补appBase
和docBase
的组合后,我可以建议2种解决方法。看起来两者不能一起运作。
从appBase
移除server.xml
,并在docBase
$CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
中指定网络应用的完整路径
我假设您的值为/home/krasilich/java/siloc/web/siloc
。
注意:仅指定父文件夹/home/krasilich/java/siloc/web/
将显示父文件夹的目录列表
在$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的其他组合,但我提供的任何值都会抛出
警告:已指定主机appBase中的docBase ...,将被忽略
所以我的结论是删除docBase。这不是一个好主意 - 因为父文件夹的完整路径然后在server.xml中进行了硬编码。