【问题标题】:Can we point multiple urls to the same webapp in tomcat我们可以将多个 url 指向 tomcat 中的同一个 webapp
【发布时间】:2011-07-08 13:58:23
【问题描述】:

我正在使用 apache web 服务器和 tomcat 服务器来托管一些 web 应用程序。

这些 web 应用程序彼此没有太大区别,我想将所有这些 web 应用程序整合到一个 web 应用程序中,以最大限度地减少进程开销。

当前正在使用单独的 URL 访问 Web 应用程序,例如:localhost:8080/webapp1、localhost:8080/webapp2。

在不更改 url 的情况下,有没有一种方法可以让我在 tomcat 上托管一个 web 应用程序说“singlewebapp”,这样它就会同时响应 localhost:8080/webapp1 和 localhost:8080/webapp2?

【问题讨论】:

  • 如果 Apache 是您的堆栈的一部分,您可以使用重写规则实现上述目标。
  • @opyate:+1。你是对的。 Kunkunur,相信我,这会导致您的日常运营混乱。如果上下文根后面有命名空间冲突怎么办,例如/wa1/myservlet 和 /wa2/myservlet...进程开销是什么意思?您提出的解决方案不会整合 Web 应用程序,而是会引入更多复杂性。
  • @home: webapp1 和 webapp2 实际上是相同的,唯一的区别是图像、css 文件、配置文件和一些设置。本质上,代码(包括 servlet)是相同的。我可能应该将这个问题命名为多租户/白标。我所说的流程开销是指部署过程中的开销,即团队每天管理这些应用程序的工作量。

标签: apache web-applications tomcat


【解决方案1】:

我的一个团队成员在symlinksjunctions 上提出了一个想法,这引发了关于 apache tomcat 的docbase 功能的讨论,我们在其中找到了一个非常优雅的答案。

假设 web 应用程序是 abc.war。我们在tomcat webapps中部署abc.war作为abc文件夹然后我们需要配置tomcat的server.xml如下并重启tomcat:

<Host ...>
  ...
  <Context path="/webapp1" docBase="/abc" /> 
  <Context path="/webapp2" docBase="/abc" /> 
</Host>

相信这对于支持白标和多租户非常有用。

【讨论】:

  • 您可能需要注意,docBase 也可以相对于包含主机的应用程序库。因此,在默认情况下,Host 的应用程序库将是 webapps - 如果您在那里有 abc.war - 您需要删除 /abc 中的 / 才能使其正常工作。
  • &lt;Context path="/webapp1" docBase="abc" /&gt;(没有/)为我工作(信用@MayankRJain)
【解决方案2】:

我认为你不能那样做。看起来所有应用程序的主机名和端口都相同,但上下文根(webapp1 和 webapp2)不同。我们不能有单个上下文根来访问具有相同主机名和端口的多个应用程序。

每台 Web 服务器都可以在一个端口和主机组合上运行一个应用程序。如果您想在同一主机上运行多个应用程序,显然您需要添加尽可能多的虚拟 IP,并且应该在您的 Web 服务器 .config 文件中进行配置,以使应用程序可以虚拟访问。

我们可以根据IP地址在Web服务器上创建虚拟服务器(有软件和硬件虚拟服务器的概念,你需要学习)。要在单个服务器上拥有多个 IP 地址,您需要添加尽可能多的以太网卡以虚拟扩展 IP 数量。

如果你可以使用虚拟服务器概念,当然你需要稍微改变你的要求。

【讨论】:

    【解决方案3】:

    而不是编辑 server.xml 在 tomcat 的 catalina 的本地主机(或您的主机)中创建 context.xml。因为如果编辑 server.xml 我们需要重新启动服务器。

    创建 context.xml :

    1. xml 文件名必须是你的路径名,即 webapp1/webapp2

    2. xml 中的数据如下(如果您正在为 abc.war 文件创建路径)

      一)。 xml 文件名为 webapp1.xml 乙)。 xml 文件名为 webapp2.xml

      "lessthan symbol" ?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      "lessthan symbol" Context reloadable="true" privileged="true" docBase="${catalina.home}/abc" crossContext="true" antiResourceLocking="false" allowLinks="true"/>
      

    以上xml文件必须放在tomcat/conf/Catalina//

    【讨论】:

      猜你喜欢
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多