【发布时间】:2011-10-31 08:02:37
【问题描述】:
我浏览了几篇文章并配置了以下内容,但我发现事务管理存在一些问题。请让我知道我在以下配置中是否正确使用了指南针:
在 Spring-config 中:
<bean class="org.springframework.orm.jpa.JpaTransactionManager"
id="transactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="jpaDialect" ref="jpaDialect" />
</bean>
<bean class="org.compass.spring.support.CompassContextBeanPostProcessor"/>
<bean id="compass" class="org.compass.spring.LocalCompassBean">
<property name="classMappings">
<list>
<value>......</value>
<value>......</value>
<value>......</value>
</list>
</property>
<property name="compassSettings">
<props>
<prop key="compass.engine.connection">file:///usr/local/lucene</prop>
<prop key="compass.transaction.factory">
org.compass.spring.transaction.SpringSyncTransactionFactory
</prop>
</props>
</property>
<property name="transactionManager" ref="transactionManager"/>
</bean>
在罗盘代码中:
private CompassSession session;
@CompassContext
protected void setCompassSession(CompassSession session) {
this.session = session;
}
public void index(Coupon coupon) throws AppException{
try {
session.save(coupon);
} catch (CompassException exception) {
logger.debug("Error in coupon indexing: "+ exception.getMessage());
}
}
在服务层:
@Transactional
public void saveCoupon(Coupon coupon) throws AppException{
Coupon savedCoupon = dbCouponDAO.saveCoupon(coupon); // saves to db through eclipselink
nonDbCouponDAO.index(savedCoupon); // indexes in compass
}
据我了解,spring中配置为eclipselink的事务管理器也可以作为compass事务管理器使用,eclipselink和compass操作都可以在一个单元中使用,就像我在服务层提到的那样。
如果我在这里做错了什么,请告诉我。
谢谢。
【问题讨论】:
标签: spring transactions integration eclipselink compass-geolocation