Ldap遇到了事務管理問題
阿新 • • 發佈:2017-11-25
border ack pro 標註 aso not rop work and
JDBC 和 LDAP 的事務管理
參考:http://www.linuxidc.com/Linux/2016-10/135718.htm
事務在項目中是必須考慮的一部分,這節討論兩種事務的分別處理和結合,通過註解來完成。 典型的JDBC事務配置如下:
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /></bean> <tx:annotation-driven transaction-manager="txManager" />
我們配置了jdbc的默認事務管理為txManager,在服務層我們可以使用註解@Transcational來標註事務。
在單獨需要ldap事務管理時,我們可以配置ldap的事務,起了個別名ldapTx:
<bean id="ldapTxManager" class="org.springframework.ldap.transaction.compensating.manager.ContextSourceTransactionManager"> <property name="contextSource" ref="contextSource" /><qualifier value="ldapTx"/></bean>
我們可以使用註解@Transactional("ldapTx")來標註ldap的事務,如果不想每次引用別名,使用@LdapTransactional,則可以創建註解:
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.transaction.annotation.Transactional; @Target({ ElementType.METHOD, ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) @Transactional("ldapTx") public @interface LdapTransactional { }
在ldap和jdbc同時都有操作的服務中,我們可以配置ContextSourceAndDataSourceTransactionManager來實現事務管理:
<beanid="ldapJdbcTxManager"class="org.springframework.ldap.transaction.compensating.manager.ContextSourceAndDataSourceTransactionManager"> <property name="contextSource" ref="contextSource"/> <property name="dataSource" ref="dataSource" /> <qualifiervalue="ldapJdbcTx"/> </bean>
Ldap遇到了事務管理問題