2012-02-03 18 views
0

Spring ELを使用して、基本的にプロパティファイルからタイムアウト値を取得し、Spring Transactions/AOPを処理するときに整数に変換できますか?Spring AOPトランザクション - プロパティベースのタイムアウト?

はここだから私はデフォルトのトランザクションタイムアウトは60秒、またはタイムアウト(int型の値)は、プロパティプレースホルダファイルから引き出すことができるようにしたいコード

<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> 

です。

しかし、私はこれを展開するときに私が取得:

weblogic.application.ModuleException:org.xml.sax.SAXParseException:CVC-データ型-valid.1.2.1:「$ {service.jta.timeoutを: 60} 'は'整数 '​​の有効な値ではありません。

答えて

0

助けのためにこの

<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:link

+0

感謝を試してみてください。 weblogic.application.ModuleException :: org.xml.sax.SAXParseException:cvc-datatype-valid.1.2.1: '#{T(Integer).valueOf(contextProperties [' timeout ')]を展開すると、同じタイプのエラーが発生します。 ] ?: 60)} 'は'整数 '​​の有効な値ではありません。 –

+0

例外をもう一度読むと、Spring Contextファイルの解析中にSpring TX Schemaに対する検証を使用する必要があり、タイムアウト属性がxs:integerとして定義され、非数値ではないため、このように見えます。 –

+0

SpELが3で導入され、SpelParseExceptionのようなものが得られるので、Spring 3.0+を使用していますか? – Ravi

関連する問題