有时,我们通过在jboss-web.xm l中定义一个来对应用程序进行更改,以支持利用JBoss功能的多个上下文根,如下所示:
webapp / 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>
并在standalone.xml中的子系统之一的虚拟服务器中定义重写规则以支持其他上下文根,如下所示:
jboss-eap / standalone / configuration / standalone.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$1" flags="L"/>
<rewrite name="rule-2" pattern="^/appC(.*)$" substitution="/appA$1" flags="L"/>
</virtual-server>
</subsystem>
我们很高兴进行上述配置更改,然后在今天将相同的配置推广到生产服务器的同时,团队又回到我们的手中,由于某些安全策略,它们无法在生产中使欢迎使用根目录成为“ true” ,如果我们将其设为“ false”不再支持多个上下文。
然后,我们开始寻找可用于虚拟服务器的不同配置选项来解决此问题,并发现我们必须使用“ /”上下文配置JBoss以支持其他上下文,并且由于我们的应用程序的上下文为“ / appA”没有可用的“ /”上下文,并且无法重写上下文。
然后,我们有两个立即修复方法:首先是将应用程序上下文重新定义为“ /” ,这需要更改.war文件;其次是在JBoss部署中删除另一个上下文上下文为“ /”的应用程序,并在团队处于生产部署的中间,我们无法在.war文件中进行更改,因此我们首先通过部署另一个上下文上下文为“ /”的 webapp选择了第二个选项。
翻译自: https://www.javacodegeeks.com/2017/05/configuring-multiple-context-root-single-webapp-jboss.html