单个 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>