如何在不同端口上运行的tomcat中部署多个Web应用程序?

时间:2010-12-06 13:27:56

标签: java tomcat

如何在不同端口上运行的tomcat中部署多个java Web应用程序? - 如何进行设置,以便不同的Web应用程序将在不同的端口上运行 - 为实现这一目标需要做些什么?

4 个答案:

答案 0 :(得分:7)

您需要在server.xml文件(tomcat_home / conf)中设置另一个服务。如果你没有更改你的服务器文件,你应该已经有一个名为Catalina(我使用的是Tomcat 5.5,根据版本你可能会略有不同)

<Service name="Dev2">
    <Connector port="8090" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />
    <Connector port="8092" 
               enableLookups="false" redirectPort="9443" protocol="AJP/1.3" />

    <Engine name="Dev2" defaultHost="MyDev">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <Host name="MyDev" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
</Service>

请注意,名称已从Catalina更改为Dev2,localhost已更改为MyDev。将这些更改为适合您的应用程序的任何内容。端口和连接器也发生了变化。 设置新服务后,您需要将应用程序部署到正确的服务/端口。您可以通过使用(参见Virtual Hosting

下的XML文件来实现此目的
Tomcat_Home/conf/Catalina/localhost/

Tomcat_Home/conf/Dev2/MyDev/

表示您正在设置的各个端口

此时,您只需添加一些文件即可将服务指向您的应用程序。 作为示例,在Tomcat_Home/conf/Dev2/MyDev/下我有一个名为Another.xml的文件。此文件包含以下内容

<Context path="/" docBase="C:/to_delete" debug="10" crossContext="false">
</Context>

现在我可以使用网址http://127.0.0.1:8090/Another访问新的应用程序了 如果我尝试使用我的默认端口8080访问它,我会收到错误,因为没有为该给定端口部署应用程序。

关于此设置的几点注意事项。如果使用VirtualVM查看应用程序,您会注意到它们共享相同的进程ID。因此,您必须格外小心您的资源。它们将使用相同的Heap空间,并且所有线程将显示在同一列表中。如果您已登录您的应用程序(即Log4j),请确保您可以选择显示哪个线程正在进行工作,因为可能很难确定这将来自哪个端口/应用程序。

正如Bozho已经指出的那样,简单地让两个Tomcat实例运行而不是一个服务器监听多个端口可能更容易。

答案 1 :(得分:4)

你最好有多个tomcat安装。这会更容易。

我猜您可以在<Connector>中注册多个server.xml,然后过滤掉上下文,但这很乏味且听起来不对。

答案 2 :(得分:4)

很抱歉这个答案。在这个问题上我没有看到任何评论能力。 Mabye这个问题太老了,或者我的名声不够高。

但是,我一直在研究同样的问题。您将不得不更多地了解Tomcat,http服务器和Java系统环境如何使用相同的实例。我已经读过它也很慢的地方。

最好的选择是单独的实例。有两种相当简单的方法可以做到这一点: A /对于Ubuntu,您可以使用SVN来获取此脚本:      http://ubuntuforums.org/showthread.php?t=1211517      http://code.google.com/p/tomcat-linux/

B /您自己的每个用户实例。      http://brian.pontarelli.com/2007/09/17/multiple-tomcat-instances-on-ubuntu/

最后一个是为tomcat 5.5编写的,但可能适用于Tomcat 6

但是,Linux上最新Tomcat的多个JVM实例的最佳方向如下: http://www.puschitz.com/InstallingTomcat.html

答案 3 :(得分:2)

您可以在apache中使用mod-proxy将自定义端口重定向到标准端口。

mod proxy