Ссылка на системное свойство в jboss-web.xml не разрешается при запуске сервера

Я использую JBoss 5 и службу системных свойств, чтобы установить некоторые системные свойства, которые нужны моему приложению (ear with war). Одним из них является имя виртуального хоста, на которое ссылается jboss-web.xml:

<jboss-web>
  <context-root>/</context-root>
  <virtual-host>${my.host.system.prop}</virtual-host>
  ...
  <depends>jboss:type=Service,name=SystemProperties</depends>
</jboss-web> 

Обратите внимание на зависимость от службы SystemProperties.

Однако при запуске сервера мое приложение загружается до того, как будут установлены системные свойства. Перераспределение, касаясь уха, решает проблему. Интересно, что из журнала видно, что служба SystemProperties действительно загружается до развертывания моего приложения.

У кого-нибудь есть идеи? Я не хочу прибегать к установке реквизита в JAVA_OPTS, если смогу помочь.

2 ответа

Решение

Где вы определили свои SystemProperties? У меня была похожая проблема с JBoss 4.2, и моя проблема была решена путем помещения определения mbean в файл conf/jboss-service.xml вместо его размещения в каталоге развертывания. Это приводит к тому, что SystemProperties mbean загружается при запуске jboss.

Единственным недостатком этого решения является то, что вы теряете возможность горячего развертывания SystemProperties mbean.

Разверните свои Systemproperties как собственный SystempropertiesService, например, в виде файла "myapp-properties-service.xml"

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE server>
<server>
<mbean code="org.jboss.varia.property.SystemPropertiesService"
    name="jboss:type=Service,name=myAppSystemProperties">

            <!-- relative path of server profile, 
                 comma separated list of propertyfiles-->
    <attribute name="URLList">
        ./conf/props/myapp-system.properties,./conf/props/myapp-otherstuff.properties
    </attribute>
</mbean>

Теперь убедитесь, что myAppSystemPropertiesService включается до того, как это сделает ваше приложение. Мы решили эту проблему, поместив ее объявление в каталог "deployers" вместо каталога "deploy". Службы, объявленные в папке "deployers", развертываются раньше, чем в "deploys". Например:

jboss-5.1.0.GA/server/default/deployers/myapp-properties-service.xml
jboss-5.1.0.GA/server/default/props/myapp-system.properties
jboss-5.1.0.GA/server/default/props/myapp-otherstuff.properties
Другие вопросы по тегам