代码之家  ›  专栏  ›  技术社区  ›  trzczy

在Tomcat 9中使用子文件夹设置URL

  •  0
  • trzczy  · 技术社区  · 5 年前

    我有Tomcat 9。我试图得到这样的URL: http://default.local:8080/default_war/ 但我的网站仍然只能在以下时间访问 http://default.local:8080 . 我要设置的地址也是由Intellij在Run/Configuration中生成的,所以应该可以设置它。当然,我可以在Intellij中编辑它,但我想知道如何在Tomcat 9中实现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 &quot;%r&quot; %s %b" />
          </Host>
    
    
        </Engine>
      </Service>
    </Server>
    u@i3 ~/opt/tomcat
    

    $ 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
    $ 
    
    0 回复  |  直到 5 年前
        1
  •  1
  •   andrewJames Ikram Bashir    5 年前

    发生这种情况是因为您正在使用一个名为 ROOT.xml .

    这个 ROOT 应用程序是从基本URL提供的应用程序——在您的情况下, http://default.local:8080 .

    根据您部署WAR的具体方式,您需要采取以下步骤:

    1-停止Tomcat并更改其名称 ROOT.xml 文件到 default_war.xml .

    上述步骤意味着您不再使用 根 -基于webapp的应用程序(有关更多信息,请参阅下面的最后一条注释)。

    2-因为你已经指定 appBase="default" 在你的 server.xml ,你可能还需要去那里 default 在重新启动Tomcat之前,请删除其中的所有子文件夹。

    我预计会有 根 因为您已经使用了 ROOT.xml 上下文文件。您不需要该文件夹,因为它将继续从基本URL为您的Web应用程序提供服务。

    重新启动Tomcat时,您应该看到一个名为的新文件夹 default_war 在 违约 文件夹-这是您的应用程序将从那里提供服务的地方-它应该只在以下位置可用 http://default.local:8080/default_war/ .

    背景说明 :在Tomcat中, 根 这是一个特例。当您下载并安装新安装的Tomcat时,您将看到一个名为 根 在 webapps 目录。这是提供Tomcat主欢迎/祝贺页面的地方,就像你的 ROOT.xml 内容,它是从基本URL提供的。您可以在中显示的“命名”表中看到一些可能的配置 this Tomcat documentation page .

    推荐文章