0

몇 가지 기사를 살펴본 후 다음을 구성했지만 트랜잭션 관리에 몇 가지 문제점이 있습니다. 내가 아래 구성에서 제대로 나침반을 사용하고 있는지 여부를 알려 주시기 바랍니다 :스프링, eclipselink, 나침반 통합

스프링 설정에

:

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()); 
} 
} 

서비스 계층에서 :

나침반 코드

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

@Transactional 
public void saveCoupon(Coupon coupon) throws AppException{ 
Coupon savedCoupon = dbCouponDAO.saveCoupon(coupon); // saves to db through eclipselink 
nonDbCouponDAO.index(savedCoupon); // indexes in compass 
} 

내 이해에 따르면, 봄에 eclipselink로 구성된 트랜잭션 관리자를 c로 사용할 수 있습니다. ompass 트랜잭션 관리자도 마찬가지입니다. eclipselink와 compass 연산은 모두 서비스 계층에서 언급 한 것처럼 하나의 단위로 사용할 수 있습니다.

내가 여기 뭔가 잘못하고 있는지 알려 주시기 바랍니다.

감사합니다.

답변

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

이 도움이되는지 알려주세요보십시오.

+0

필자의 구성으로 추가 코드를 작성하지 않고도 색인을 투명하게 만들 수있었습니다. – tara