2010-12-06 81 views
11

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

+0

为什么你需要不同的端口? – JoseK 2010-12-07 05:03:52

+0

http://stackoverflow.com/questions/8823290/how-to-run-different-apps-on-single-tomcat-instance-behind-different-ports – sab 2013-08-15 14:04:30

回答

4

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

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

+2

我想知道如何在一台tomcat服务器上做到这一点..我不想多个服务器。 – LetsSyncUp 2010-12-06 13:32:08

6

您将需要在server.xml文件(tomcat_home/conf)中设置另一个服务。如果你还没有改变你的服务器上的文件,你应该已经有一个叫卡特琳娜(我使用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> 

注意,名称从卡塔利娜改为DEV2,和本地主机到MyDev。将这些更改为适合您应用程序的任何内容。端口和连接器也发生了变化。 一旦新服务安装完毕,您就需要将应用程序部署到适当的服务/端口。通过使用在XML文件中做到这一点(见Virtual Hosting

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> 

现在,我可以使用Web地址http://127.0.0.1:8090/Another 访问新的应用程序。如果我试图用我的默认端口访问此8080,我得到一个错误,因为应用程序没有被部署到给定的端口。

有关此设置的一些注意事项。如果您使用VirtualVM查看应用程序,您会注意到它们共享相同的进程ID。因此你必须特别小心你的资源。他们将使用相同的堆空间,并且所有线程将显示在同一个列表中。如果您登录了应用程序(例如Log4j),请确保您可以选择显示哪个线程正在进行此项工作,因为可能很难说出其他哪个端口/应用程序。

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

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

然而,对于最新的Tomcat在Linux上多个JVM实例最好的方向是在这里: http://www.puschitz.com/InstallingTomcat.html

2

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

mod proxy

相关问题