gpt4 book ai didi

java - Tomcat 上的虚拟主机

转载 作者:行者123 更新时间:2023-11-28 23:11:07 26 4
gpt4 key购买 nike

我有一个域 test.mydomain.com .我将它放入浏览器地址栏,然后进入 Tomcat 控制面板。

应用部署在tomcat上,地址为localhost/test/开始。该应用程序部署在本地文件夹中 webapps/test

现在我想要访问主机时,test.mydomain.com被重定向到我的应用程序。我在 <Engine> 中添加到 server.xml节

<Host name="test.mydomain.com"  appBase="webapps/test"
unpackWARs="true" autoDeploy="true">
<Alias>www.test.mydomain.com</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="test_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
<Context path="" docBase="${catalina.base}/webapps/test"
debug="0" reloadable="true"/>
</Host>

我可以访问我的应用程序,但有两个 servlet 除外

@WebServlet(name = "Options", urlPatterns = "/js/options.js")
public class Options extends HttpServlet {

@WebServlet(name = "AggregateIconController", urlPatterns = "/images/points/agg.svg")
public class AggregateIconController extends HttpServlet {

web.xml文件,我定义了这样的规则

<web-app version="3.1"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
metadata-complete="false">
<display-name>Test Web Application</display-name>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/images/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/css/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/js/*</url-pattern>
</servlet-mapping>
</web-app>

那些连接点是 web.xml 中定义的掩码的子集。

访问地址时test.mydomain.com/js/options.js我收到错误 404。但是在访问 localhost/test/js/options.js 时页面返回。

将规则添加到 web.xml

<servlet-mapping>
<servlet-name>Options</servlet-name>
<url-pattern>/js/options.js</url-pattern>
</servlet-mapping>

没有变化

最佳答案

一切都对我有用。你做了什么

  1. 在一个单独的文件夹中取出此主机的应用程序,该文件夹位于 ${catalina.base}/webapps 之外,这在 documentation 中有说明的Tomcat

    In order to create virtual hosts, do the following:

    1. Create a separate directory for each host outside of $CATALINA_HOME/webapps
    2. Underneath each directory, create a webapps directory.
  2. server.xml 中只留下行

    <Host name="test.mydomain.com"  appBase="test/webapps"
    unpackWARs="true" autoDeploy="true">
    <Alias>www.test.mydomain.com</Alias>
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    prefix="test_access_log" suffix=".txt"
    pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Host>
  3. 将原来的war重命名为ROOT.war,放在test/webapps文件夹下。 Tomcat自己部署在test/webapps/ROOT

  4. 我不了解 servlet。对于

    @WebServlet(name = "Options", urlPatterns = "/js/options.js")
    public class Options extends HttpServlet {

    明确写在web.xml

    <servlet-mapping>
    <servlet-name>Options</servlet-name>
    <url-pattern>/js/options.js</url-pattern>
    </servlet-mapping>

    (在此之前,这个方法还是行不通)。

    为了

    @WebServlet(name = "AggregateIconController", urlPatterns = "/images/points/agg.svg")
    public class AggregateIconController extends HttpServlet {

    一切独立运作

关于java - Tomcat 上的虚拟主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58060704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com