我知道我可以将我的webapp(或它的WAR文件)重命名为 ROOT 但这是一种可怕的方法,恕我直言 . 现在我查看了tomcat doc并且它说
建议不要将元素直接放在server.xml文件中
所以我尝试了它建议的另一种方法 .
可以显式定义单个Context元素:在应用程序文件内的/META-INF/context.xml中的单个文件中 .
所以我使用以下代码创建了 /META-INF/context.xml
,
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/"/>
但是在我重新启动服务器后部署它仍然无法在"/"加载上下文时,它仍然用 "/<WEB_APP_NAME>"
加载它
任何指针都有帮助 .
12 回答
对我来说,两个答案都有效
注意:在上下文中声明docBase然后忽略主机上的appBase .
ROOT.war
并将其置于webapps下 . 因此,现在来自其他战争(contextpaths)的无与伦比的url请求将进入这场战争 . 这是处理ROOT("/**")上下文路径的更好方法 .第二个选项是(双)加载来自Webapps文件夹的战争 . 此外,它只需要解压缩的war文件夹,这是一个令人头疼的问题 .
你能做的是以下几点;
在
<catalina_home>/conf/Catalina/localhost/
中添加名为ROOT.xml
的文件此ROOT.xml将覆盖该引擎和主机(Catalina和localhost)的tomcat安装的根上下文的默认设置 .
在ROOT.xml文件中输入以下内容;
在这里,
<yourApp>
是你的应用程序的名称.. :)你去了,你的应用程序现在是默认应用程序,将显示在
http://localhost:8080
但是,有一个副作用;您的应用程序将加载两次 . 一次为
localhost:8080
,一次为localhost:8080/yourApp
. 要解决此问题,您可以将应用程序放在外部<catalina_home>/webapps
并在ROOT.xml的docBase标记中使用相对或绝对路径 . 像这样的东西;然后应该一切都好!
以下是适用于我的 the only 解决方案 . 将其添加到conf / server.xml中的Host节点
这个小代码对我有用,使用虚拟主机
在Tomcat 9.0中,我只需要在
server.xml
中更改以下内容至
最快,可能是最好的解决方案是在
<TOMCAT_INSTALL_DIR>/conf/Catalina/localhost/ROOT.xml
中有以下内容您的网络应用程序将在
http://<host>:<port>/
上提供我面临这个问题一个月,在server.xml中放置上下文标签是不安全的,它会影响为所有其他主机部署的上下文元素,对于大型应用程序,它需要连接错误也不是很好的隔离,例如你可以按文件夹名称domain2访问其他网站.com / domain1Folder !!还加载了两次数据库会话连接!另一种方式是将ROOT.xml文件放在具有完整路径的上下文标记中:
在conf / catalina / webappsfoldername中,将war文件部署为webappsfoldername中的ROOT.war,并指定主机等
在这种方法中,同样类型的应用程序用户会话也没有很好的隔离!你可以在app1里面如果app1和app2相同你可以在服务器端会话登录后自动登录到app2吗?因此,您必须将用户会话保留在客户端缓存中,而不是使用jsessionid!我们可以从localhost更改引擎名称来解决它 . 但是让我们说与tomcat一起玩需要比与其他猫玩更多的时间!
<Context docBase="yourAppName" path="" reloadable="true">
Tomcat 8:经过多次搜索后,这只是工作代码:在server.xml中
重启Tomcat,确保当你访问127.0.0.1:8080时,它会在127.0.0.1:8080/apple中显示内容
我的项目是由netbeans创建的java web应用程序,我在项目配置中设置上下文路径,没有其他的东西,甚至我把apple.war放在webapps文件夹中 .
不是建议更新服务器配置,如server.xml或ROOT.xml .
您可以将context.xml配置文件放在Web应用程序META-INF目录下,并包含上下文路径设置 . 这将覆盖默认服务器设置?
即:
在Tomcat 8.X中,在server.xml中的tomcat主目录/ conf /文件夹下,您可以在
<Host>
标记下添加<Context>
标记,如下所示 . 但您必须重新启动服务器才能生效或者,如果您使用的是Tomcat 7.X,则可以在项目的WEB-INF文件夹中添加context.xml文件 . 我使用的文件的内容如图所示 . 它对我来说很好 . 在这种情况下,您不必重新启动服务器 .
以下技巧对我有用 .
1)从tomcat的server.xml文件(conf文件夹内)中注释/删除以下配置 .
2)删除驻留在tomcat webapps文件夹中的现有ROOT文件夹(如果有) . 并将您的战争(例如:test.war)文件重命名为ROOT.war .
请记住,在将war文件重命名为ROOT.war时,“ROOT”应该是大写的 .
限制:您只能在一个tomcat实例中部署一个应用程序 .