单个 war 部署的多个上下文根 jboss-EAP-6.1
Multiple context root for single war deployment jboss-EAP-6.1
在我的 Jboss-EAP-6.1
中,我部署了一个名为 'myRealWebApp.war'
的 .war
我可以使用此 url - http://mywebsite.com/myRealWebApp
访问我的应用程序
我想用多个上下文根配置我的 webapp 'myRealWebApp'
。
我的意思是如果我访问
http://mywebsite.com/appA
http://mywebsite.com/appB
http://mywebsite.com/appC
这 3 个上下文 'appA'
、'appB'
、'appC'
指向 myRealWebApp.war
(部署了一个 war)
我可以存档吗?
谢谢。
编辑:
找到的解决方案:
我将此代码添加到我的 standalone-full.xml
<subsystem xmlns="urn:jboss:domain:web:1.4" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<virtual-server name="default-host" enable-welcome-root="true">
<alias name="localhost"/>
<alias name="example.com"/>
<rewrite name="rule-1" pattern="^/appA(.*)$" substitution="/myRealWebApp" flags="L"/>
<rewrite name="rule-2" pattern="^/appB(.*)$" substitution="/myRealWebApp" flags="L"/>
<rewrite name="rule-3" pattern="^/appC(.*)$" substitution="/myRealWebApp" flags="L"/>
</virtual-server>
</subsystem>
关键是flags="L"
谢谢
您可以通过在 jboss 前面配置一个 http 服务器(如 Apache 服务器)并使用重定向规则将所有其他 url 转换为您配置应用程序的 url 来实现这一点。
可能 jboss 也有一个用于集成的 apache 模块,但基本原理仍然存在。
通常推荐的方法是不直接公开 jboss 或生产中的其他应用程序服务器,而是在它前面使用 http 服务器(你可以从 http 服务器提供静态内容,你可以平衡请求等)
添加到 OP 共享的解决方案中,这是我为单个部署实现多个上下文所做的。
在app/WEB-INF/jboss-web.xml
中配置了一个上下文根
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>appA</context-root>
<session-config>
<session-timeout>10</session-timeout>
</session-config>
</jboss-web>
在jboss-eap/standalone/configuration/standalone中添加了rewrite
规则。xml:
<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<virtual-server name="default-host" enable-welcome-root="true">
<alias name="localhost"/>
<alias name="example.com"/>
<rewrite name="rule-1" pattern="^/appB(.*)$" substitution="/appA" flags="L"/>
<rewrite name="rule-2" pattern="^/appC(.*)$" substitution="/appA" flags="L"/>
</virtual-server>
</subsystem>
在我的 Jboss-EAP-6.1
中,我部署了一个名为 'myRealWebApp.war'
的 .war
我可以使用此 url - http://mywebsite.com/myRealWebApp
我想用多个上下文根配置我的 webapp 'myRealWebApp'
。
我的意思是如果我访问
http://mywebsite.com/appA
http://mywebsite.com/appB
http://mywebsite.com/appC
这 3 个上下文 'appA'
、'appB'
、'appC'
指向 myRealWebApp.war
(部署了一个 war)
我可以存档吗?
谢谢。
编辑:
找到的解决方案:
我将此代码添加到我的 standalone-full.xml
<subsystem xmlns="urn:jboss:domain:web:1.4" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<virtual-server name="default-host" enable-welcome-root="true">
<alias name="localhost"/>
<alias name="example.com"/>
<rewrite name="rule-1" pattern="^/appA(.*)$" substitution="/myRealWebApp" flags="L"/>
<rewrite name="rule-2" pattern="^/appB(.*)$" substitution="/myRealWebApp" flags="L"/>
<rewrite name="rule-3" pattern="^/appC(.*)$" substitution="/myRealWebApp" flags="L"/>
</virtual-server>
</subsystem>
关键是flags="L"
谢谢
您可以通过在 jboss 前面配置一个 http 服务器(如 Apache 服务器)并使用重定向规则将所有其他 url 转换为您配置应用程序的 url 来实现这一点。 可能 jboss 也有一个用于集成的 apache 模块,但基本原理仍然存在。 通常推荐的方法是不直接公开 jboss 或生产中的其他应用程序服务器,而是在它前面使用 http 服务器(你可以从 http 服务器提供静态内容,你可以平衡请求等)
添加到 OP 共享的解决方案中,这是我为单个部署实现多个上下文所做的。
在app/WEB-INF/jboss-web.xml
中配置了一个上下文根<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>appA</context-root>
<session-config>
<session-timeout>10</session-timeout>
</session-config>
</jboss-web>
在jboss-eap/standalone/configuration/standalone中添加了rewrite
规则。xml:
<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<virtual-server name="default-host" enable-welcome-root="true">
<alias name="localhost"/>
<alias name="example.com"/>
<rewrite name="rule-1" pattern="^/appB(.*)$" substitution="/appA" flags="L"/>
<rewrite name="rule-2" pattern="^/appC(.*)$" substitution="/appA" flags="L"/>
</virtual-server>
</subsystem>