Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

23.2.5.3. マスターノード

すべてのインデックス更新操作は JMS キューから取得され、実行されます。マスターインデックスは定期的にコピーされます。

例23.7 JMS マスターの設定

### master configuration

## DirectoryProvider
# (remote) master location where information is copied to
hibernate.search.default.sourceBase = /mnt/mastervolume/lucenedirs/mastercopy

# local master location
hibernate.search.default.indexBase = /Users/prod/lucenedirs

# refresh every half hour
hibernate.search.default.refresh = 1800

# appropriate directory provider
hibernate.search.default.directory_provider = filesystem-master

## Backend configuration
#Backend is the default lucene one
Hibernate Search フレームワーク設定の他に、JMS を介してインデックスが動作するよう、メッセージ駆動 Bean を作成および設定する必要があります。

例23.8 インデクシングキューの処理中のメッセージ駆動型 Bean

@MessageDriven(activationConfig = {
      @ActivationConfigProperty(propertyName="destinationType", 
                                propertyValue="javax.jms.Queue"),
      @ActivationConfigProperty(propertyName="destination", 
                                propertyValue="queue/hibernatesearch"),
      @ActivationConfigProperty(propertyName="DLQMaxResent", propertyValue="1")
   } )
public class MDBSearchController extends AbstractJMSHibernateSearchController 
                                 implements MessageListener {
    @PersistenceContext EntityManager em;
    
    //method retrieving the appropriate session
    protected Session getSession() {
        return (Session) em.getDelegate();
    }

    //potentially close the session opened in #getSession(), not needed here
    protected void cleanSessionIfNeeded(Session session) 
    }
}
この例では、Hibernate Search ソースコードで利用可能な抽象 JMS コントローラークラスを継承し、MDB を実装します。この実装は例として提供され、Java EE 以外のメッセージ駆動型 Bean を使用するよう調整できます。getSession() および cleanSessionIfNeeded() の詳細は、「 AbstractJMSHibernateSearchController 's javadoc」を参照してください。