首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring,eclipselink,指南针集成

Spring,eclipselink,指南针集成
EN

Stack Overflow用户
提问于 2011-10-31 16:02:37
回答 1查看 387关注 0票数 0

我阅读了几篇文章并配置了以下内容,但我发现事务管理存在一些问题。请让我知道我是否在以下配置中正确使用了指南针:

在Spring-config中:

代码语言:javascript
复制
<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>

在指南针代码中:

代码语言:javascript
复制
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());
}
}

在服务层中:

代码语言:javascript
复制
@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操作都可以在一个单元中使用,正如我在服务层中提到的那样。

如果我做错了什么,请告诉我。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-07-14 05:14:28

试着加上这个,

代码语言:javascript
复制
<!-- 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 -->

如果这有帮助,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7951138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档