У меня есть WAR-файл, настроенный для использования загрузчика классов в JBoss. Это все работает отлично и денди. Конфигурация для него в jboss-web.xml выглядит примерно так:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC
"-//JBoss//DTD Web Application 4.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">
<jboss-web>
<class-loading>
<loader-repository>
com.mycompany:loader='com.mycompany.repository'
<loader-repository-config>java2ParentDelegation=false</loader-repository-config>
</loader-repository>
</class-loading>
</jboss-web>
Теперь клиент хочет развернуть две копии нашего WAR-файла под одним экземпляром JBoss. Они настроены на использование одного и того же хранилища загрузчика классов, что вызывает проблемы.
Если я вручную изменю jboss-web.xml внутри одной копии файла WAR, чтобы указать другой репозиторий, например, изменив соответствующую строку на:
com.mycompany:loader='com.mycompany.repository2'
... обе копии WAR развертываются без проблем.
Однако взлом внутреннего файла WAR не является фантастическим решением для клиента.
Если бы я мог включить, скажем, корень контекста в имя хранилища (или какое-либо другое свойство, которое гарантированно будет отличаться между двумя этими развертываниями), это может быть выполнено автоматически.
Можно ли использовать свойства в jboss-web.xml? Позвольте мне сделать что-то вроде:
com.mycompany:loader='com.mycompany.repository-${jboss.context-root}'
(Примечание: я составил это имя свойства.)
Немного отступив, есть ли лучший способ достичь того, чего я пытаюсь достичь?