如何在 tomcat 中部署多个运行在不同端口上的 java 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>
请注意,名称已从 Catalina 更改为 Dev2,localhost 更改为 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>
现在我可以使用网址 http://127.0.0.1:8090/Another
访问新应用程序
如果我尝试使用我的默认端口 8080 访问它,我会收到错误消息,因为该应用程序未部署到该给定端口。
有关此设置的一些注意事项。如果您使用 VirtualVM 查看应用程序,您会注意到它们共享相同的进程 ID。因此,您必须格外小心您的资源。它们将使用相同的堆空间,并且所有线程都将显示在同一个列表中。如果您已登录您的应用程序(即 Log4j),请确保您可以选择显示哪个线程正在执行工作,否则可能很难判断这将来自哪个端口/应用程序。
正如 Bozho 已经指出的,简单地运行两个 Tomcat 实例而不是一个服务器监听多个端口可能更容易。
关于java - 如何在将在不同端口上运行的tomcat中部署多个Web应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4366843/