我想部署两个应用程序foo.war并部署bar.war到同一个Tomcat实例.他们是否可以在不同的端口上侦听连接,例如foo侦听端口81,bar监听端口82?如果是这样,我该如何配置?我意识到应用程序不必在不同的端口上进行侦听,但这就是我想要实现的目标.
另外,我是否正确地说,如果我重命名foo.war为ROOT.war在根上下文中运行,那么对此Tomcat实例的所有请求都将由foo应用程序处理,因此必须将bar部署到单独的Tomcat实例?
kap*_*pex 68
如果希望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>
Run Code Online (Sandbox Code Playgroud)
webapps您需要foo为端口80和bar端口创建目录,而不是将war文件放在目录中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.
Bas*_*que 29
Java Servlet技术的目的是使用多个运行的Web应用程序中的任何一个来跨多个用户处理多个传入请求和传出响应.所有流量都可以在单个端口上处理.
只需将两个war文件放入Tomcat的webapps文件夹即可.这就是你需要做的.
默认情况下,Tomcat将每次战争(技术上称为zip文件)扩展("爆炸")到一个文件夹中,并自动为您部署应用程序.如果Tomcat已经运行,或者在启动Tomcat时启动时,会发生这种情况.有些人关闭了生产的自动部署功能,以便为Tomcat保存扫描新war文件的工作.
无需多个端口.Servlet容器的工作是检查URL并确定应该调用哪个Servlet.
默认情况下,war文件的名称确定URL.举个例子:
http://www.example.com/foo - > foo.war
http://www.example.com/bar - > bar.war
http://www.example.com/ - > ROOT.war
所有Web应用程序都可以在同一个端口上提供.您唯一关心的是如果您使用Unix风格的操作系统来保护对低编号端口的访问.这包括Mac OS X,BSD,Linux和Solaris.在URL中使用高编号端口(Tomcat默认为8080),或使用端口转发将端口80(Web浏览器的默认)上的传入请求发送到Tomcat的端口(例如8080).
如果您想要使用不同域提供的war文件,请了解Tomcat中的"虚拟主机"设置.
我已成功配置 Tomcat 以在多个端口上运行应用程序。我不知道这是否是最好的方法,但我只是复制了内容
<Service>...</Service>
Run Code Online (Sandbox Code Playgroud)
在conf/server.xml 中,更改了连接器标记的端口并更改了主机标记的appBase属性。您可以根据应用程序部署到的appBase来控制应用程序在哪个端口上运行。
| 归档时间: |
|
| 查看次数: |
55382 次 |
| 最近记录: |