首页 文章

如何在不同端口后面的单个Tomcat实例上运行不同的应用程序?

提问于
浏览
54

目前我在Tomcat 6上运行了2个web应用程序app1和app2:

2993064

我想配置Tomcat,以便它们在不同端口后面的根上下文中运行:

http://localhost:8081

需要做什么?

5 回答

  • 0

    使用两个不同的Tomcat实例 .

    编辑:

    或者按照这个问题的答案中的解释配置Tomcat:Tomcat configuration help: multiple ports not responding

  • 0

    我认为您可以在 server.xml 文件中配置它并放置2个服务:

    <Service name="app1">
       <Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol" 
               connectionTimeout="20000" 
               redirectPort="8443" />
       <Engine name="Catalina" defaultHost="localhost">
          <Host name="localhost"  appBase="app1"
            unpackWARs="true" autoDeploy="true">
          </Host>
       </Engine>
    </Service>
    <Service name="app2">
       <Connector port="8082" protocol="org.apache.coyote.http11.Http11NioProtocol" 
               connectionTimeout="20000" 
               redirectPort="8443" />
       <Engine name="Catalina" defaultHost="localhost">
          <Host name="localhost"  appBase="app2"
            unpackWARs="true" autoDeploy="true">
          </Host>
       </Engine>
    </Service>
    
  • 2

    添加连接器的另一个例子:

    <Service name="reciver">
        <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="10" 
                   enableLookups="false" acceptCount="100"
                   connectionTimeout="10000" disableUploadTimeout="true" 
                   useBodyEncodingForURI="true"/>
        <Engine name="reciver" defaultHost="localhost" jvmRoute="host1">
                <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                       resourceName="UserDatabase" />
                <Host name="localhost" appBase="webapps" unpackWARs="true"
                      autoDeploy="false" xmlValidation="false"
                      xmlNamespaceAware="false">
                        <Context docBase="browser" path="/browser" reloadable="false"/>
                </Host>
        </Engine>
    </Service>
    <Service name="reciver2">
        <Connector port="8081" maxHttpHeaderSize="8192" maxThreads="10" 
                   enableLookups="false" acceptCount="1"
                   connectionTimeout="10000" disableUploadTimeout="true" 
                   useBodyEncodingForURI="true" proxyName="example.pt" proxyPort="80"/>
        <Engine name="reciver2" defaultHost="example_app" jvmRoute="host2">
                <Host name="example_app" appBase="test_app/example_app" unpackWARs="true"
                      autoDeploy="false" xmlValidation="false"
                      xmlNamespaceAware="false">
                        <Context docBase="example_app" path="/example_app" reloadable="false"/>
                </Host>
        </Engine>
    </Service>
    (...Repeted 2 more times.)
    

    来自:http://www.coderanch.com/t/84172/Tomcat/listen-multiple-ports

    我建议阅读整个主题,因为它讨论了使用此配置的性能命中,以及可能的竞争条件 .

  • 53

    除了运行两个Tomcat实例并使用ROOT应用程序(已经说过,并且是一个有点差和无效的解决方案),您可以使用Apache Tomcat实现它 . 配置apache以侦听两个端口并通过IP转发:端口到不同的Tomcat应用程序 . 但是你需要一个不同的端口来tomcat!

    Apache配置

    listen 8080,8081
    ...
    <VirtualHost *:8080>
        ServerName localhost
        ProxyPass / http://localhost:8888/app1
        ProxyPassReverse / http://localhost:8080/app1
    </VirtualHost>
    
    <VirtualHost *:8081>
        ServerName localhost
        ProxyPass / http://localhost:8888/app2
        ProxyPassReverse / http://localhost:8080/app2
    </VirtualHost>
    

    要么

    listen 80,81
    ...
    <VirtualHost *:80>
        ServerName localhost
        ProxyPass / http://localhost:8080/app1
        ProxyPassReverse / http://localhost:8080/app1
    </VirtualHost>
    
    <VirtualHost *:81>
        ServerName localhost
        ProxyPass / http://localhost:8080/app2
        ProxyPassReverse / http://localhost:8080/app2
    </VirtualHost>
    
  • 9

    Tomcat在以下指定的端口上运行:

    $CATALINA_HOME/conf/server.xml
    

    正如JB Nizet所写,设置两个不同的tomcat实例,并适当地配置端口值server.xml .

    $ CATALINA_HOME / Tomcat的8081 / conf目录/ server.xml中:

    <?xml version='1.0' encoding='utf-8'?>
     <Server port="8081" ... >
      ...
     </Server>
    

    $ CATALINA_HOME / Tomcat的8082 / conf目录/ server.xml中:

    <?xml version='1.0' encoding='utf-8'?>
     <Server port="8082" ... >
      ...
     </Server>
    

相关问题