如果希望Tomcat侦听多个端口,则需要为每个端口设置一个 连接器 。为了将每个端口映射到不同的应用程序,您需要将每个连接器包装在 服务中
并使用其自己的 主机 创建一个 主机
appbase。
中的服务定义示例
server.xml:
<Service name="foo"> <Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol" /> <Engine name="Catalina80" defaultHost="localhost"> <Host name="localhost" appbase="foo" unpackWARs="true" autoDeploy="true" /> </Engine></Service><Service name="bar"> <Connector port="81" protocol="org.apache.coyote.http11.Http11NioProtocol" /> <Engine name="Catalina81" defaultHost="localhost"> <Host name="localhost" appbase="bar" unpackWARs="true" autoDeploy="true" /> </Engine></Service>
无需将war文件拖放到
webapps目录中,您需要
foo为port
80和
barport
创建目录
81。命名两个war文件
ROOT.war并将它们放在自己的基本目录中。当然,如果需要,您可以在每个目录中有多个应用程序。
中定义的目录
appbase是相对于tomcat目录的。通过使用绝对路径,它可以在系统上的任何位置。从文档中:
appbase
此虚拟主机的 Application base
目录。这是目录的路径名,该目录可能包含要在此虚拟主机上部署的Web应用程序。您可以指定绝对路径名,也可以指定相对于$CATALINA_base目录的路径名。[…]如果未指定,webapps将使用默认值。
另一个选择是保留默认的tomcat配置,并使用另一个http服务器(apache,nginx,lighttpd等)将端口映射到tomcat应用程序的内部路径。
根应用程序不会收到与其他应用程序匹配的请求,例如
/foo/example将转到
foo.war,
/example/example将转到
ROOT.war。



