Как установить время ожидания транзакции в конфигурации Jetty JNDI Atomikos

Я нахожусь в процессе преобразования различных компонентов Spring в поиск JNDI. В настоящее время я использую Jetty для проверки этого. Я настроил UserTransaction в соответствии с документацией Jetty, и он работает:

<New id="tx" class="org.mortbay.jetty.plus.naming.Transaction">
    <Arg>
        <New class="com.atomikos.icatch.jta.UserTransactionImp">
        </New>
    </Arg>
</New>

Проблема с этой конфигурацией заключается в том, что она не устанавливает время ожидания транзакции, как это сделала моя конфигурация Spring:

<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
    <!-- Number of seconds before transaction timesout. -->
    <property name="transactionTimeout" value="30" />
</bean>

Я попробовал следующее, но это не сработало... по какой-то причине я получил ДВЕ пользовательские транзакции:

<New id="tx" class="org.mortbay.jetty.plus.naming.Transaction">
    <Arg>
        <New class="com.atomikos.icatch.jta.UserTransactionImp">
            <Set name="transactionTimeout">30</Set>
        </New>
    </Arg>
</New>

Любые идеи?


person HDave    schedule 14.10.2010    source источник


Ответы (1)


Вам потребуется настроить менеджер транзакций atomikos с помощью файла jta.properties в контексте вашего причала.
Например, посмотрите на следующий каталог в вашем дистрибутиве Jetty (я использую 6.1.24):

  • /jetty-6.1.24/contexts/test-jndi.d/WEB-INF/classes
    • jta.properties

задайте свойство с именем com.atomikos.icatch.max_timeout, которое закомментировано в образце файла по умолчанию.
Затем убедитесь, что вы запускаете контейнер причала, используя правильно настроенный контекст.

person crowne    schedule 19.10.2010
comment
Спасибо за ответ. У вас есть идеи, можно ли это сделать без файла jta.properties? - person HDave; 22.10.2010
comment
Я предполагаю, что это возможно, но вам придется установить значения в диспетчере транзакций как часть процесса запуска сервера. - person crowne; 22.10.2010
comment
Да, это возможно без jta.properties. Вы можете передать параметры классу com.atomikos.icatch.config.UserTransactionServiceImp.UserTransactionServiceImp. Если вы используете Spring, вы можете сделать это там или вы можете сделать это программно. - person arrehman; 14.11.2012