我有我的申请文件。我需要在根级别进行部署。当前网址为http://localhost:8080/war_name/application_name
。
ROOT.war
应该可以工作。我建议询问有关您的另一个问题OutOfMemoryException
,提供堆栈跟踪和详细信息。您可能可以通过配置-Xmx
JVM 来解决它。
我有我的申请文件。我需要在根级别进行部署。当前网址为http://localhost:8080/war_name/application_name
。
ROOT.war
应该可以工作。我建议询问有关您的另一个问题OutOfMemoryException
,提供堆栈跟踪和详细信息。您可能可以通过配置-Xmx
JVM 来解决它。
Answers:
您有两种选择:
ROOT/
从tomcat 中删除现成的目录,并ROOT.war
在部署它之前将war文件重命名为。
部署战争(从你的例子)war_name.war
,并配置上下文根在conf/server.xml
使用你的war文件:
<Context path="" docBase="war_name" debug="0" reloadable="true"></Context>
第一个比较容易,但是有点混乱。第二种可能是更优雅的方法。
在tomcat v.7(香草安装)上
在conf / server.xml文件的结尾处,在</Host>
结束标记之前添加以下位:
<Context path="" docBase="app_name">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
注意docBase属性。这很重要。您可以先确定已部署app_name,然后再更改根Web应用程序,或者只是将解压缩的Webapp(app_name)复制到tomcat的webapps文件夹中。启动,访问root,在那里查看您的app_name!
在具有这些更改的tomcat 7中,我能够在/处访问myAPP并在/ ROOT处访问ROOT
<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>
将以上内容添加到<Host>
server.xml中的部分
我知道我的答案与其他答案有些重叠,但这是一个完整的解决方案,具有一些优点。这适用于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" />
步骤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>
请注意,我处理了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:为了防止不必要地访问根目录和管理器文件夹,请valve
向这些上下文标记添加a ,如下所示:
<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>
当他们使用默认端口8080时,这实际上限制了来自我自己的域(伪IP地址)和本地主机的人对admin Web应用程序文件夹的访问,并保持了通过Web界面动态部署war文件的能力。
如果要将它用于使用不同IP地址的多个应用程序,则可以将IP地址添加到连接器(address="143.21.2.1"
)。
如果要从根目录运行多个Web应用程序,则可以复制Service标记(第二个使用不同的名称),然后将的文档库更改<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>
它与Tomcat 8一起使用。autoDeploy和deployOnStartup需要设置为false,以防止tomcat部署myApp
两次。
$CATALINA_HOME/webapps/ROOT
需要删除的内容。请删除它,然后重试。
添加到@Rob Hruska的sol上,在server.xml内部的此设置有效:
<Context path="" docBase="gateway" reloadable="true" override="true"> </Context>
注意:在某些情况下可能需要override =“ true”。
打开tomact管理器url:-http:// localhost:8080 / manager / html /,
然后在应用程序中看到部署路径为“ /”的应用程序,
只需取消部署即可。将应用程序的war文件重命名为ROOT.war,然后将其放置在路径中:-
启动Tomcat。不需要任何额外的配置。
现在我们可以在http:// localhost:8080看到我们的应用程序主页或配置的url
C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps
在我的服务器上,我正在使用它,root自动部署工作正常:
<Host name="mysite" autoDeploy="true" appBase="webapps" unpackWARs="true" deployOnStartup="true">
<Alias>www.mysite.com</Alias>
<Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeader="X-Forwarded-Proto"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="mysite_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"/>
<Context path="/mysite" docBase="mysite" reloadable="true"/>
</Host>