2015-06-03 4 views
3

Для моего приложения JEE 3.1 у меня есть SFSB, для которого я установил определенный тайм-аут. Мне нужно иметь легкий доступ к этому значению, чтобы он легко настраивался.Конфигурирование определенного состояния SFSB stateful-timeout в standalone.xml (JBOSS)

Сначала я имел пометку в своем классе SFSB:

@StatefulTimeout(value = 2, unit = TimeUnit.HOURS) 

Это работает, как ожидалось. Но мне нужно, чтобы это значение было (легко) настраиваемым. Поэтому я удалил аннотацию и поместил следующий xml в свой ejb-jar.xml. Снова это работает так, как ожидалось.

<session> 
    <ejb-name>MyStatefulSessionBeanName</ejb-name> 
    <ejb-class>foo.bar.MyStatefulSessionBean</ejb-class> 
    <session-type>Stateful</session-type> 
    <stateful-timeout> 
     <timeout>2</timeout> 
     <unit>Hours</unit> 
    </stateful-timeout> 
</session> 

Но EJB-jar.xml упакован в .jar, который в моем .ear развертывания приложений. Поэтому мой вопрос: может ли этот параметр быть помещен в файл standalone.xml jboss?

ответ

2

Нет простого способа сделать это без перезапуска приложения.

Если это нормально, вы можете определить системное свойство в своем standalone.xml. Для этой цели я рекомендую использовать CLI или консоль администратора.

Вы можете использовать значение свойств в вашем EJB-jar.xml:

<stateful-timeout> 
    <timeout>${my.session.timeout.value}</timeout> 
    <unit>${my.session.timeout.units}</unit> 
</stateful-timeout> 

Значение свойств может быть обновлено с помощью веб-консоли или CLI и приложение перезапускается.

+3

Обратите внимание, что для этого вам необходимо установить «spec-descriptor-property-replacement» в «true» в файле standalone.xml. Вы также потеряете соответствие Java EE. –

+0

Спасибо Стив и Барри, это решило мою проблему. Перезапуск сервера для меня не проблема. – Bjarne77