我有我的应用程序的war文件.我需要在根级别部署它.当前的URL是http://localhost:8080/war_name/application_name
.
Rob*_*ska 204
你有几个选择:
ROOT/
从tomcat 中删除开箱即用的目录,并ROOT.war
在部署之前将war文件重命名为.
部署战争(从你的例子)war_name.war
,并配置上下文根在conf/server.xml
使用你的war文件:
<Context path="" docBase="war_name" debug="0" reloadable="true"></Context>
Run Code Online (Sandbox Code Playgroud)第一个更容易,但更多的kludgy.第二个可能是更优雅的方式.
Pet*_*háč 31
在tomcat v.7(香草安装)
在您的conf/server.xml中,在</Host>
结束标记之前向文件末尾添加以下位:
<Context path="" docBase="app_name">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
Run Code Online (Sandbox Code Playgroud)
请注意docBase属性.这是重要的一点.您可以确保在更改根Web应用程序之前部署了app_name,或者只是将解压缩的webapp(app_name)复制到tomcat的webapps文件夹中.启动,访问root,在那里看到你的app_name!
Sud*_*yam 13
在具有这些更改的tomcat 7中,我可以在/ ROOT处的/和ROOT访问myAPP
<Context path="" docBase="myAPP">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="ROOT" docBase="ROOT">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
Run Code Online (Sandbox Code Playgroud)
将上面的<Host>
内容添加到server.xml中的部分
Kim*_*nde 10
我知道我的答案与其他一些答案有些重叠,但这是一个有一些优点的完整解决方案.这适用于Tomcat 8:
这意味着您只需重新启动一次tomcat,并且可以在没有问题的情况下部署更新的war文件.
步骤1:在server.xml文件中,找到连接器条目并将其替换为:
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Run Code Online (Sandbox Code Playgroud)
第2步:在<Host ...>
标记内定义上下文:
<Context path="/" docBase="CAS">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/ROOT" docBase="ROOT">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/manager" docBase="manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/host-manager" docBase="host-manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
Run Code Online (Sandbox Code Playgroud)
请注意,我解决了webapp文件夹中的所有应用.第一个有效地从根位置切换根和主应用程序.ROOT现已开启http://example.com/ROOT
,主要应用程序已开启http://example.com/
.受密码保护的Web应用程序需要该privileged="true"
属性.
部署与根匹配的CAS.war文件时(<Context path="/" docBase="CAS">
必须在管理面板中重新加载该文件,因为它不会随部署一起刷新).
不要<Context path="/CAS" docBase="CAS">
在您的上下文中包含它,因为它禁用了管理器选项来部署war文件.这意味着您可以通过两种方式访问应用程序:http://example.com/
和http://example.com/APP/
步骤3:为了防止对root和manager文件夹的不必要访问,请valve
向这些上下文标记添加如下:
<Context path="/manager" docBase="manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
addConnectorPort="true"
allow="143\.21\.2\.\d+;8080|127\.0\.0\.1;8080|::1;8080|0:0:0:0:0:0:0:1;8080"/>
</Context>
Run Code Online (Sandbox Code Playgroud)
这实质上限制了管理员web应用程序文件夹对我们自己的域(假IP地址)和localhost的访问权限,当他们使用默认端口8080时,并保持通过Web界面动态部署war文件的能力.
如果要将此用于使用不同IP地址的多个应用程序,可以将IP地址添加到连接器(address="143.21.2.1"
).
如果你想从根本上运行多个网络应用程序,您可以复制的服务标签(使用不同的名称为秒),并更改文档库中的<Context path="/" docBase="CAS">
为例子<Context path="/" docBase="ICR">
.
删除$CATALINA_HOME/webapps/ROOT
.更新$CATALINA_HOME/conf/server.xml
,确保Host元素如下所示:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="false" deployOnStartup="false">
<Context path="" docBase="myApp"></Context>
Run Code Online (Sandbox Code Playgroud)
它适用于Tomcat 8. autoDeploy和deployOnStartup需要设置为false以防止tomcat部署myApp
两次.