Java 如何使用web xml在不同的子域上进行服务器响应

Java 如何使用web xml在不同的子域上进行服务器响应,java,tomcat,servlets,web.xml,apache-tomee,Java,Tomcat,Servlets,Web.xml,Apache Tomee,比如说我有很多不同的子域 我想将每个请求重定向到服务器,这样它就会对子域的每个请求做出不同的响应 (在服务器上生成文本或html) 我正在使用web.xml在Tomcat7上使用EJB3.1,我只想使用一个webapp 例子: 解决此问题的正确web.xml或server.xml映射是什么 谢谢 您想要的是server.xml,而不是web.xml。为相应主机块中的每个子域添加别名 所以你会有这样的想法: <Host name="mycompany.com" appBase="webapp

比如说我有很多不同的子域

我想将每个请求重定向到服务器,这样它就会对子域的每个请求做出不同的响应 (在服务器上生成文本或html)

我正在使用web.xml在Tomcat7上使用EJB3.1,我只想使用一个webapp

例子: 解决此问题的正确web.xml或server.xml映射是什么


谢谢

您想要的是server.xml,而不是web.xml。为相应主机块中的每个子域添加别名

所以你会有这样的想法:

<Host name="mycompany.com" appBase="webapps" ... >
  <Alias>companyName1.mycompany.com</Alias>
  <Alias>companyName2.mycompany.com</Alias>
  <Alias>companyName3.mycompany.com</Alias>
  ...
</Host>

companyName1.mycompany.com
companyName2.mycompany.com
companyName3.mycompany.com
...

然后使用
request.getServerName()
确定子域。

您想要的是server.xml,而不是web.xml。为相应主机块中的每个子域添加别名

所以你会有这样的想法:

<Host name="mycompany.com" appBase="webapps" ... >
  <Alias>companyName1.mycompany.com</Alias>
  <Alias>companyName2.mycompany.com</Alias>
  <Alias>companyName3.mycompany.com</Alias>
  ...
</Host>

companyName1.mycompany.com
companyName2.mycompany.com
companyName3.mycompany.com
...

然后使用
request.getServerName()
确定子域。

前面关于
server.xml
的回答肯定会起作用,但每次需要添加/修改它时都需要重新启动


另一种方法是保留标准的server.xml,但使用
request.getServerName()
检查用于访问服务器的用户的主机名。

前面关于
server.xml
的回答肯定有效,但每次需要添加/修改时都需要重新启动


另一种方法是保留标准的server.xml,但使用
request.getServerName()
检查用于访问服务器的用户的主机名。

MarkOlsson:谢谢,我会检查它,但是我应该使用什么样的servlet映射呢?如果我想首先在本地测试它,这个server.xml正确吗??localhost facebook.localhost servlet映射独立于主机映射。来自主机的域和别名域将发送到appBase指定的应用程序。换句话说,我不认为您不能将一个webapp中的servlet映射到多个子域。因此,所有对companyName*.mycompany.com的请求都会转到相同的servlet。您必须比较request.getServetName()的返回值来决定处理哪个公司。我不知道
xxxxx.localhost
是否有效,您必须尝试一下。就我个人而言,我使用hosts文件将内部使用的名称重定向到localhost,这样我就可以使用该名称而不是IP地址或“localhost”。正如您所写的“所有对companyName*.mycompany.com的请求都转到同一个servlet”,我怎么知道是哪个servlet呢?我只想打印请求。getServerName(),但不明白如何打印,我有“”,所以所有请求都将映射到根webapp,哪个servlet?:)MarkOlsson:谢谢,我会检查它,但是我应该使用什么样的servlet映射呢?如果我想首先在本地测试它,那么这个server.xml正确吗??localhost facebook.localhost servlet映射独立于主机映射。来自主机的域和别名域将发送到appBase指定的应用程序。换句话说,我不认为您不能将一个webapp中的servlet映射到多个子域。因此,所有对companyName*.mycompany.com的请求都会转到相同的servlet。您必须比较request.getServetName()的返回值来决定处理哪个公司。我不知道
xxxxx.localhost
是否有效,您必须尝试一下。就我个人而言,我使用hosts文件将内部使用的名称重定向到localhost,这样我就可以使用该名称而不是IP地址或“localhost”。正如您所写的“所有对companyName*.mycompany.com的请求都转到同一个servlet”,我怎么知道是哪个servlet呢?我只想打印请求。getServerName(),但不明白如何打印,我有“”,所以所有请求都将映射到根webapp,哪个servlet?:)