Spring AOP Transaction - Тайм-аут на основе свойств? - PullRequest
0 голосов
/ 04 февраля 2012

Можно ли использовать Spring EL для извлечения значения тайм-аута из файла свойств и преобразования его в целое число при работе с Spring Transactions / AOP?

Вот код

<tx:advice id="GlobalDataTxAdvice" transaction-manager="GlobalDataTransactionManager">
    <tx:attributes>
        <tx:method name="get*" no-rollback-for="javax.persistence.NoResultException,javax.persistence.NonUniqueResultException,org.springframework.dao.EmptyResultDataAccessException"/>
        <tx:method name="find*" no-rollback-for="javax.persistence.NoResultException,javax.persistence.NonUniqueResultException,org.springframework.dao.EmptyResultDataAccessException"/>
        <tx:method name="search*" read-only="true" no-rollback-for="javax.persistence.NoResultException,javax.persistence.NonUniqueResultException,org.springframework.dao.EmptyResultDataAccessException"/>
        <tx:method name="*" timeout="${service.jta.timeout:60}"/>
    </tx:attributes>
</tx:advice>

Поэтому я хочу, чтобы время ожидания транзакции по умолчанию составляло 60 секунд, или разрешить извлечение времени ожидания (целое значение) из файла-заполнителя свойства.

Но когда я разверну это, я получу:

weblogic.application.ModuleException:: org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: '$ {service.jta.timeout: 60}' не является допустимым значением для 'integer'.

1 Ответ

0 голосов
/ 04 февраля 2012

Попробуйте это

<util:properties id="contextProperties" location="classpath:context.properties"/>

<tx:advice id="GlobalDataTxAdvice" transaction-manager="GlobalDataTransactionManager">
  <tx:attributes>
    <tx:method name="get*" no-rollback-for="javax.persistence.NoResultException,javax.persistence.NonUniqueResultException,org.springframework.dao.EmptyResultDataAccessException"/>
    <tx:method name="find*" no-rollback-for="javax.persistence.NoResultException,javax.persistence.NonUniqueResultException,org.springframework.dao.EmptyResultDataAccessException"/>
    <tx:method name="search*" read-only="true" no-rollback-for="javax.persistence.NoResultException,javax.persistence.NonUniqueResultException,org.springframework.dao.EmptyResultDataAccessException"/>
    <tx:method name="*" timeout="#{ T(Integer).valueOf(contextProperties['timeout']?: 60)}"/>
  </tx:attributes>
</tx:advice>

MOREINFO: ссылка

...