【问题标题】:Spring, eclipselink, compass integrationSpring、eclipselink、指南针集成
【发布时间】: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


    【解决方案1】:

    尝试添加这个,

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

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

    【讨论】:

    • 通过我的配置,我能够透明地创建索引,而无需编写任何额外的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 2014-09-25
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多