在同一个ios上运行2个tomcat实例

时间:2012-06-20 15:14:40

标签: tomcat windows-7 tomcat7

我想在同一个Windows上运行2个tomcat实例。

所以我采取了以下步骤:

  1. 将tomcat下载到文件夹tomcat1
  2. 创建了一个新文件夹:tomcat2
  3. 将tomcat1中的conf文件夹复制到tomcat2
  4. 创建空文件夹:logs,temp,work
  5. 创建了一个文件夹bin,在里面我输了2个命令:
  6. 的startup.bat

    set CATALINA_BASE=C:\Programs\apache2
    set CATALINA_HOME=C:\Programs\apache1
    C:\Programs\apache1\bin\startup.bat
    

    shutdown.bat

    set CATALINA_BASE=C:\Programs\apache2
    set CATALINA_HOME=C:\Programs\apache1
    C:\Programs\apache1\bin\shutdown.bat 
    

    我还将 apache2 的server.xml中的以下内容更改为:

    <Server port="8006" shutdown="SHUTDOWN">
    <Connector port="8081" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8444" />
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />
    

    apache1 中,它是:

    <Server port="8005" shutdown="SHUTDOWN">
     <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443" />
     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    

    当我从apache1运行startup.bat时,虽然在其server.xml中配置为端口8080,但它占用端口8081.这样当我想从apache2运行startup.bat时 - 端口很忙!无论哪种方式,如果我第一次尝试apache2然后apache1我不能同时运行。

    有什么问题?

    我正在使用带有tomcat 7的Windows 7

2 个答案:

答案 0 :(得分:1)

默认CATALINA_HOMEcatalina.bat中设置,并且相对于bin子目录的位置。

因此,您可以在c:\tomcat1中解压缩tomcat二进制文件,在c:\tomcat2中解压缩另一个,并且每个二进制文件将自动拥有自己的CATALINA_HOME

至于您使用共享CATALINA_HOME描述的方案,我看不到任何阻止它运行正常的情况。我会双重检查您的startup.bat正在调用正确的实例,并且每个server.xml都配置了正确的端口。

答案 1 :(得分:0)

推荐的解决方案:为第二个tomcat实例选择另一个端口为8081以外的其他端口 备用解决方案:更改McAfee FrameworkService.exe使用的端口。 here是讨论选项的主题

我尝试在端口8080和8081上运行2个tomcat实例时遇到了类似的问题。按照建议的here使用netstat -aon查看打开的连接和关联的进程ID列表。在我的情况下跟踪此id,1988回到使用tasklist /FI "PID eq 1988"的进程,表明McAfee FrameworkService.exe进程正在使用8081。