我阅读了几篇文章并配置了以下内容,但我发现事务管理存在一些问题。请让我知道我是否在以下配置中正确使用了指南针:
在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操作都可以在一个单元中使用,正如我在服务层中提到的那样。
如果我做错了什么,请告诉我。
谢谢。
发布于 2012-07-14 05:14:28
试着加上这个,
<!-- Search Manager using Comass abstractions. -->
<bean class="org.compass.spring.support.CompassContextBeanPostProcessor"/>
<bean id="compass" class="org.compass.spring.LocalCompassBean">
<property name="compassSettings">
<props>
<prop key="compass.engine.connection">file://${user.home}/indexes</prop>
<prop key="compass.transaction.factory">org.compass.spring.transaction.SpringSyncTransactionFactory</prop>
</props>
</property>
<property name="classMappings">
<list>
<value>MyEntity</value>
</list>
</property>
<property name="transactionManager">
<ref local="transactionManager" />
</property>
</bean>
<bean id="jpaGpsDevice" class="org.compass.gps.device.jpa.JpaGpsDevice">
<property name="name">
<value>jpaDevice</value>
</property>
<property name="entityManagerFactory">
<ref local="entityManagerFactory" />
</property>
<property name="nativeExtractor">
<bean class="org.compass.gps.device.jpa.extractor.SpringNativeJpaExtractor" />
</property>
</bean>
<bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps" init-method="start" destroy-method="stop">
<property name="compass">
<ref bean="compass" />
</property>
<property name="gpsDevices">
<list>
<ref bean="jpaGpsDevice" />
</list>
</property>
</bean>
<!-- COMPASS END -->如果这有帮助,请告诉我。
https://stackoverflow.com/questions/7951138
复制相似问题