JBoss 7.1: Постоянный EjbTimer - как? - PullRequest
2 голосов
/ 02 апреля 2012

Кто-нибудь знает, как сделать EJBTimers постоянными не в файловой системе, а в выбранной таблице базы данных? Как, например, в JBoss 4.x.x с помощью ejb-deployer.xml:

<?xml version="1.0" encoding="UTF-8"?>
<server>
...
  <mbean code="org.jboss.ejb.txtimer.EJBTimerServiceImpl"
    name="jboss.ejb:service=EJBTimerService">
    <attribute name="RetryPolicy">jboss.ejb:service=EJBTimerService,retryPolicy=fixedDelay</attribute>
    <attribute name="PersistencePolicy">jboss.ejb:service=EJBTimerService,persistencePolicy=database</attribute>
    <attribute name="TimerIdGeneratorClassName">org.jboss.ejb.txtimer.BigIntegerTimerIdGenerator</attribute>
    <attribute name="TimedObjectInvokerClassName">org.jboss.ejb.txtimer.TimedObjectInvokerImpl</attribute>
    <depends optional-attribute-name="TransactionManagerFactory" proxy-type="org.jboss.tm.TransactionManagerFactory">
      jboss:service=TransactionManager
    </depends>
  </mbean>

  <!-- A retry policy that uses a fixed interval in milli seconds -->
  <mbean code="org.jboss.ejb.txtimer.FixedDelayRetryPolicy" name="jboss.ejb:service=EJBTimerService,retryPolicy=fixedDelay">
    <attribute name="Delay">100</attribute>
  </mbean>

  <mbean code="org.jboss.ejb.txtimer.DatabasePersistencePolicy" name="jboss.ejb:service=EJBTimerService,persistencePolicy=database">
    <!-- DataSourceBinding ObjectName -->
    <depends optional-attribute-name="DataSource">jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
    <!-- The plugin that handles database persistence -->
    <attribute name="DatabasePersistencePlugin">org.jboss.ejb.txtimer.GeneralPurposeDatabasePersistencePlugin</attribute>
    <!-- The timers table name -->
    <attribute name="TimersTable">TIMERS</attribute>
  </mbean>
</server>

Я ничего не нашел, как заменить это:

<timer-service thread-pool-name="default">
  <data-store path="timer-service-data" relative-to="jboss.server.data.dir"/>
</timer-service>

для принудительного сохранения таймеров в БД.

Заранее спасибо!

1 Ответ

3 голосов
/ 06 апреля 2012

На данный момент постоянные EJBTimers хранятся только в файловой системе. Соответствующая проблема уже существует. К сожалению, оно предназначено только для системы EAP ... Взгляните на модуль Cron из шва 3 . Этот модуль работает с кварцем, который предоставляет хранимые таймеры JDBC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...