我可以在同一台机器上运行两个tomcat实例吗?

问题描述 投票:48回答:9

我可以在同一台机器上运行两个具有两个不同端口的Tomcat服务器吗?它会造成任何问题吗?当我运行tomcat时,它将在任务管理器中创建javaw.exe文件。

java tomcat
9个回答
59
投票

除了改变Connector portprotocol="HTTP/1.1"描述在下面的答案之一。

我认为需要更改“关闭”的服务器端口

<Server port="8005" shutdown="SHUTDOWN">

还有AJP港口号。

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

如果要并行运行多个tomcat实例。


29
投票

是的!您可以。您需要将端口更改为另一个实例。

为此,请按照步骤操作。

1.)在{Tomcat安装文件夹} \ conf \中找到server.xml

2.)查找以下类似声明

<!-- Define a non-SSL HTTP/1.1 Connector on port 8180 -->
    <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />

3.)关于Tomcat的server.xml文件引用它在端口8080上运行。将Connector port =“8080”端口更改为任何其他端口号。

例如

<Connector port="8181" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

4)编辑并保存server.xml文件。重启Tomcat。完成


13
投票

是的,这绝对没问题。我已经在很多场合做过了。您需要检查所有用于Tomcat的端口。我不记得它是否仍然有一个特殊的“本地控制”端口,但如果是这样,那些也需要不同。


7
投票

通常我们也设置CATALINA_HOME属性。所以启动脚本首先读取catalina_home,然后从中找出其余的路径。如果设置了此环境变量,并且尝试从任何复制粘贴tomcat安装位置运行tomcat,则将运行CATALINA_HOME指向的tomcat。

因此,在从同一台机器运行两个tomcat时,请删除CATALINA_HOME属性。这样,它将根据您运行启动脚本的目录设置CATALINA_HOME属性。


6
投票

添加一些指向如何实现的详细说明:

  1. Step by step在一台服务器上运行多个Tomcat实例。
  2. 以上的older version
  3. Explanation的各种环境变量和文件夹,在这种设置中发挥作用。

3
投票

这是我在Windows上运行两个Tomcats(Tom1和Tom2)的经验/过程:

  1. 根据http://www.ntu.edu.sg/home/ehchua/programming/howto/Tomcat_HowTo.html设置Tomcat
  2. 但是,Tom1启动正常,但不是Tom2。
  3. 所以除了上面的内容,在server.xml中,make / change以下(在Tomcat 6.0.44,JDK 1.6.0_45上): 第22行:Tom1关闭端口= 9001 第22行:Tom2关闭端口= 9002 第53行:Tom1服务名称=“Catalina1” 第53行:Tom2服务名称=“Catalina2” 第69行:Tom1连接器(http)= 9001 第69行:Tom2连接器(http)= 9002 第71行:Tom1重定向端口= 8443 第71行:Tom2重定向端口= 8444 第90行:Tom1连接器(ajp)= 8009 第90行:Tom1重定向= 8443 第90行:Tom2连接器(ajp)= 8010 第90行:Tom2重定向= 8444 第102行:Tom1引擎名称=“Catalina1” 第102行:Tom2引擎名称=“Catalina2”
  4. 启动每个服务器

瞧!


2
投票

我遇到了类似的情况,答案提到了here,它以清晰简洁的方式解决了这个问题。

假设您在C:\ apache-tomcat-7.0.39中只有一个Tomcat文件夹,并且您希望从中运行两个实例。

确保设置了CATALINA_HOME系统/用户变量,并指向C:\ apache-tomcat-7.0.39

创建文件夹C:\ instance1。从C:\ apache-tomcat-7.0.39复制conf,webapps和临时文件夹,并将它们粘贴到C:\ instance1。您可以从位于instance1下的webapps和临时文件夹中删除内容,但不要触摸conf内容。现在复制>粘贴C:\ instance1并将其重命名为instance2。这样,instance1和instance2都将具有相同的内容。转到C:\ instance2 \ conf,编辑server.xml并更改这些端口的编号(我将其标记为XXXX):

将您想要的任何内容部署到instance1 \ webapps和instance2 \ webapps中在C:\下创建以下4个批处理文件

instance1_startup.bat

@echo off

set CATALINA_BASE=C:\instance1

cd "%CATALINA_HOME%\bin"

set TITLE=My Tomcat Instance 01

call startup.bat %TITLE%

instance1_shutdown.bat

@echo off

set CATALINA_BASE=C:\instance1

cd "%CATALINA_HOME%\bin"

call shutdown.bat

instance2_startup.bat

@echo off

set CATALINA_BASE=C:\instance2

cd "%CATALINA_HOME%\bin"

set TITLE=My Tomcat Instance 02

call startup.bat %TITLE%

instance2_shutdown.bat

@echo off

set CATALINA_BASE=C:\instance2

cd "%CATALINA_HOME%\bin"

call shutdown.bat

运行instance1_startup.bat和instance2_startup.bat,希望它应该可以工作。


1
投票

您可以在服务器/ PC上运行无限的tomcat实例,当然您需要使用不同的端口定义每个实例。


1
投票

如前所述,您可以省略CATALINA_HOME环境变量并使用catalina.sh脚本来管理容器的生命周期,或者您可以定义另一个变量(如CATALINA_HOME1)以指向新的tomcat的安装目录并将其catalina.sh脚本修改为使用CATALINA_HOME1而不是原始的CATALINA_HOME引用。

在任何情况下,您都可以通过省略任何名为CATALINA_HOME引用的环境变量并将其链接到相应的tomcat的catalina.sh脚本来避免这一切。

例:

cd /usr/sbin
ln -s /usr/local/java/apache-tomcat-6.0.37/bin/catalina.sh catalina1
ln -s /usr/share/java/apache-tomcat-6.0.37/bin/catalina.sh catalina2

然后像这样(从任何地方)开始你的tomcats:

catalina1 start
catalina2 start

汤姆

© www.soinside.com 2019 - 2024. All rights reserved.