如何在不同端口上运行的tomcat中部署多个java Web应用程序? - 如何进行设置,以便不同的Web应用程序可以在不同的端口上运行 - 为实现这一目标需要做些什么?
您需要在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>
Run Code Online (Sandbox Code Playgroud)
请注意,名称已从Catalina更改为Dev2,localhost更改为MyDev.将这些更改为适合您的应用程序的任何内容.端口和连接器也发生了变化.设置新服务后,您需要将应用程序部署到正确的服务/端口.您可以通过使用XML文件来完成此任务(请参阅虚拟主机)
Tomcat_Home/conf/Catalina/localhost/
Run Code Online (Sandbox Code Playgroud)
和
Tomcat_Home/conf/Dev2/MyDev/
Run Code Online (Sandbox Code Playgroud)
对于您正在设置的相应端口
此时,您只需添加一些文件即可将服务指向您的应用程序.作为一个例子,在Tomcat_Home/conf/Dev2/MyDev/我有一个名为Another.xml的文件下这个文件包含以下内容
<Context path="/" docBase="C:/to_delete" debug="10" crossContext="false">
</Context>
Run Code Online (Sandbox Code Playgroud)
现在我可以使用Web地址访问新应用程序http://127.0.0.1:8090/Another
如果我尝试使用我的默认端口8080访问它,我会收到一个错误,因为没有为该给定端口部署应用程序.
有关此设置的几点注意事项.如果使用VirtualVM查看应用程序,您会注意到它们共享相同的进程ID.因此,您必须格外小心您的资源.它们将使用相同的Heap空间,并且所有线程将显示在同一列表中.如果您已登录您的应用程序(即Log4j),请确保您可以选择显示哪个线程正在执行该工作,因为可能很难告诉其将来自哪个端口/应用程序.
正如Bozho已经指出的那样,简单地让两个Tomcat实例运行而不是一个服务器监听多个端口可能更容易.
你最好安装多个tomcat。这样会更容易。
我想你可以在 中注册多个<Connector>s server.xml,然后过滤掉上下文,但这很乏味而且听起来是错误的。
| 归档时间: |
|
| 查看次数: |
39043 次 |
| 最近记录: |