Статьи

Конфигурирование множественного контекстного корня для одного веб-приложения — JBoss

Некоторое время назад мы внесли изменения в наше приложение для поддержки множественного контекста root, используя возможности JBoss , определив его в jboss-web.xm l следующим образом:

WebApp / WEB-INF / JBoss-web.xml:

1
2
3
4
5
6
7
<?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.xml:

1
2
3
4
5
6
7
8
9
<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>

Мы были рады пойти на вышеуказанные изменения конфигурации, а сегодня, продвигая ту же конфигурацию на производственные серверы, команда вернулась к нам, что из-за некоторых политик безопасности они не могут включить «root» на уровне «true» в производственной среде, и если мы сделаем это для « ложный » множественный контекст больше не поддерживается.

Затем мы начали искать различные параметры конфигурации , доступные для виртуального сервера, чтобы решить эту проблему, и обнаружили, что нам нужно настроить JBoss с контекстом «/» для поддержки другого контекста (-ов), и поскольку наше приложение имеет контекст «/ appA» там отсутствует контекст «/», и он не может переписать контекст.

Затем у нас есть два немедленных решения — во-первых, переопределить контекст нашего приложения в «/», что требует изменения файла .war, а во-вторых, удалить другое приложение в развертывании JBoss, которое имеет корневой контекст в виде «/», и в тот момент, когда Команда находится в середине рабочего развертывания, мы не можем вносить изменения в файл .war, поэтому мы выбрали второй вариант вместо первого, развернув другое веб-приложение с context-root как «/» .