Java 在Tomcat 9中设置带有子文件夹的URL
我有雄猫9。我正在尝试像这样获取URL:Java 在Tomcat 9中设置带有子文件夹的URL,java,url,subdirectory,tomcat9,Java,Url,Subdirectory,Tomcat9,我有雄猫9。我正在尝试像这样获取URL:http://default.local:8080/default_war/但我的网站仍然只有http://default.local:8080。 我要设置的地址也是由Intellij在Run/Configuration中生成的,所以应该可以设置它。当然我可以在Intellij中编辑它,但我想知道如何在Tomcat9中实现URL子目录 我应该在代码中更改什么?以下是我的设置文件: $ cat /home/u/opt/tomcat/conf/server.x
http://default.local:8080/default_war/
但我的网站仍然只有http://default.local:8080
。
我要设置的地址也是由Intellij在Run/Configuration中生成的,所以应该可以设置它。当然我可以在Intellij中编辑它,但我想知道如何在Tomcat9中实现URL子目录
我应该在代码中更改什么?以下是我的设置文件:
$ cat /home/u/opt/tomcat/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="default.local" appBase="default"
unpackWARs="true" autoDeploy="true">
<Context path="/default_war" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
u@i3 ~/opt/tomcat
$cat/home/u/opt/tomcat/conf/server.xml
u@i3~/opt/tomcat
$cat conf/Catalina/default.local/ROOT.xml
u@i3~/opt/tomcat
$
发生这种情况是因为您正在使用名为ROOT.xml的上下文文件
ROOT
应用程序是从基本URL提供服务的应用程序-在您的例子中,http://default.local:8080
根据您部署战争的具体方式,您需要采取以下步骤:
1-停止Tomcat并将ROOT.xml
文件的名称更改为default\u war.xml
上述步骤意味着您不再使用基于根目录的webapp(有关详细信息,请参阅下面的最后一条注释)
2-因为您已经在server.xml
中指定了appBase=“default”
,所以在重新启动Tomcat之前,您可能还需要转到该default
文件夹并删除其中的任何子文件夹
我希望那里会有一个ROOT
文件夹,因为您已经使用了ROOT.xml
上下文文件。您不需要该文件夹,因为它将继续从基本URL为您的webapp提供服务
当您重新启动Tomcat时,您应该会在default
文件夹中看到一个名为default\u war
的新文件夹,这是您的应用程序将从中提供服务的地方,它应该只在http://default.local:8080/default_war/
背景说明:在Tomcat中,ROOT
是一种特殊情况。下载并安装Tomcat的新安装时,您将在webapps
目录中看到名为ROOT
的文件夹。这就是Tomcat欢迎/祝贺页面的主要来源,就像您的ROOT.xml
内容一样,它也是从基本URL提供的。您可以在中所示的“命名”表中看到一些可能的配置。这是一个很好的答案,它让我向前迈出了一大步。谢谢
$ cat conf/Catalina/default.local/ROOT.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="${catalina.base}/deploy/default_war.war">
</Context>
u@i3 ~/opt/tomcat
$