Gel*_*Luo 7 java jboss tomcat servlets jboss6.x
我来自这个SO然而我的情况不是在Tomcat上,而是JBoss EAP 6.所以假设我在JBoss AS 6上运行了两个web应用程序app1和app2:
http://localhost:8080/app1http://localhost:8080/app2但是,我想配置Tomcat,以便它们在不同端口后面的根上下文中运行:
http://localhost:8081http://localhost:8082如何在JBoss EAP 6上实现?请注意,这个答案对我不起作用,因为它针对的是JBoss 5.
编辑:这些说明适用于原始问题中要求的JBoss AS6.AS7具有不同的配置文件语法.
你的问题有两个部分:
这个很容易.
添加这样的行 $JBOSS_HOME/server/default/deploy/jbossweb.sar/server.xml
<!-- A HTTP/1.1 Connector on port 8081 -->
<Connector protocol="HTTP/1.1" port="8081" address="${jboss.bind.address}"
redirectPort="${jboss.web.https.port}" />
<!-- A HTTP/1.1 Connector on port 8082 -->
<Connector protocol="HTTP/1.1" port="8082" address="${jboss.bind.address}"
redirectPort="${jboss.web.https.port}" />
Run Code Online (Sandbox Code Playgroud)
服务器启动时,请在日志中观察以下消息:
11:56:23,639 INFO [org.apache.coyote.http11.Http11Protocol] Starting Coyote HTTP/1.1 on http-127.0.0.1-8081
11:56:23,640 INFO [org.apache.coyote.http11.Http11Protocol] Starting Coyote HTTP/1.1 on http-127.0.0.1-8082
Run Code Online (Sandbox Code Playgroud)
注意:如果要"正确"执行此操作,则应使用占位符而不是硬编码数字并进行编辑$JBOSS_HOME/server/default/conf/bindingservice.beans/META-INF/bindings-jboss-beans.xml以定义它们.但是,除非您需要通过管理UI管理端口,否则将是一种过度杀伤力.
这要困难得多.JBoss使用自己的Tomcat引擎,它不支持多个webapp根(appBase属性不起作用).因此,无法为连接器配置两个不同的目录.可以添加虚拟主机并jboss-web.xml在每个应用程序中使用它来配置它响应的vhost,但这意味着您必须在客户端URL-s中使用不同的名称.
你有两个选择.
将其添加到Host配置元素(在其他阀门定义之前)中$JBOSS_HOME/server/default/deploy/jbossweb.sar/server.xml
<Valve className="org.jboss.web.rewrite.RewriteValve" />
Run Code Online (Sandbox Code Playgroud)
创建$JBOSS_HOME/server/default/conf/jboss.web/localhost/rewrite.properties包含以下内容的文件:
RewriteCond %{SERVER_PORT} =8081
RewriteRule ^/(.*)$ /app1/$1 [L]
RewriteCond %{SERVER_PORT} =8082
RewriteRule ^/(.*)$ /app2/$1 [L]
Run Code Online (Sandbox Code Playgroud)
注意:您可能需要创建$JBOSS_HOME/server/default/conf/jboss.web/localhost/目录,默认情况下它不存在.
注2:位置rewrite.properties取决于Valve标签的位置server.xml.最直观的位置是与其他Valve元素.但它也直接有效Engine.在这种情况下,rewrite.properties文件需要向上移动一个目录.
部署servlet过滤器以$JBOSS_HOME/server/default/deploy/ROOT.war/根据传入端口调度请求.您可以推出自己的自定义过滤器实现,也可以使用UrlRewriteFilter,其配置如下所示:
<rule>
<condition type="port">8081</condition>
<from>/(.*)</from>
<to context="app1">/$1</to>
</rule>
<rule>
<condition type="port">8082</condition>
<from>/(.*)</from>
<to context="app2">/$1</to>
</rule>
Run Code Online (Sandbox Code Playgroud)
也可以看看:
编辑:鉴于JBoss配置的复杂性,您也可以选择位于应用服务器前面的基于Apache的反向代理.
| 归档时间: |
|
| 查看次数: |
7064 次 |
| 最近记录: |