最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

分布式Hibernate search詳解

 更新時(shí)間:2017年10月20日 11:27:29   作者:liuyazhuang  
這篇文章主要介紹了分布式Hibernate search的相關(guān)內(nèi)容,小編覺(jué)得挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。

分布式Hibernate Search與Apache Tomcat6,ActiveMQ 和Spring.今天我將跟大家分享我的經(jīng)驗(yàn),以master/slave(s)方式配置分布式Hibernate Search并整合Apache ActiveMQ,Spring,應(yīng)用程序額容器是Apache Tomcat 6。

怎么工作:

-Hibernate Search 支持使用JMS back-end 和 master/slave(s) 索引進(jìn)行分布式配置
- mater通過(guò)網(wǎng)絡(luò)共享暴露索引 (例如通過(guò)NFS。。。)
- slave(s) 復(fù)制mater的索引到本地

版本

- Apache Tomcat 6.0.20
- Hibernate Search 3.1.1 GA
- Apache ActiveMQ 5.3.0
- Spring 2.5.6
- XBean-Spring 3.6
${local.index.dir} - directory to store master index
${master.index.dir} - directory to copy master index to, it's shared network location for replication with slave(s)

Mater索引的配置

Mater的配置稍顯復(fù)雜。以下是配置屬性說(shuō)明
$(local.index.dir) - 存儲(chǔ)mater索引的目錄
$(master.index.dir) -拷貝mater索引的目標(biāo)目錄,通過(guò)網(wǎng)絡(luò)定位供slave(s)復(fù)制。

首先,為了簡(jiǎn)單起見(jiàn),我們將ActiveMQ中介運(yùn)行在同一臺(tái)服務(wù)器上。因此,我們?cè)赪EB-INF/activemq.xml文件中使用簡(jiǎn)單的嵌入式中介配置。

<beans 
 xmlns="http://www.springframework.org/schema/beans" 
 xmlns:amq="http://activemq.apache.org/schema/core" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
 http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
 http://activemq.apache.org/schema/core 
 http://activemq.apache.org/schema/core/activemq-core.xsd"> 
 <amq:broker brokerName="HibernateSearchBroker"> 
   <amq:managementContext> 
     <amq:managementContext createConnector="false"/> 
   </amq:managementContext> 
   <amq:transportConnectors> 
     <amq:transportConnector uri="tcp://localhost:61616" />  
   </amq:transportConnectors> 
 </amq:broker> 
 <amq:queue name="queue/hibernatesearch" physicalName="hibernateSearchQueue" /> 
</beans> 

其次,需要在web application MEAT-INF/context.xml(Tocmat)中配置配置JNDI資源(JMS Connection Factory 和 Quene)

<!-- ActiveMQ ConnectionFactory --> 
<Resource 
name="jms/ConnectionFactory" 
auth="Container" 
type="org.apache.activemq.ActiveMQConnectionFactory" 
description="JMS Connection Factory" 
factory="org.apache.activemq.jndi.JNDIReferenceFactory" 
brokerURL="tcp://0.0.0.0:61616?trace=true" 
brokerName="HibernateSearchBroker" /> 
 
<!-- ActiveMQ HibernateSearch queue --> 
<Resource 
name="queue/hibernatesearch" 
auth="Container" type="org.apache.activemq.command.ActiveMQQueue" 
description="Hibernate search queue" 
factory="org.apache.activemq.jndi.JNDIReferenceFactory" 
physicalName="hibernateSearchQueue" /> 

接下來(lái)在Hibernate.cfg.xml文件中配置Hibernate Searc

<property name="hibernate.search.default.directory_provider">org.hibernate.search.store.FSMasterDirectoryProvider</property> 
<property name="hibernate.search.default.indexBase">${local.index.dir}</property> 
<property name="hibernate.search.default.sourceBase">${master.index.dir}</property> 
<property name="hibernate.search.default.refresh">60</property> 

Master和slave之間代碼的一個(gè)重要區(qū)別是:master中必須包含實(shí)現(xiàn) AbstractJMSHibernateSearchController 的子類(lèi)作為監(jiān)聽(tīng)器,例如

import javax.jms.MessageListener; 
import org.hibernate.Session; 
import org.hibernate.search.backend.impl.jms.AbstractJMSHibernateSearchController; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 
@Service 
public class JMSHibernateSearchController 
 extends AbstractJMSHibernateSearchController 
   implements MessageListener { 
 @Override 
 protected void cleanSessionIfNeeded(Session session) { 
  // clean session here ...    
 } 
 @Override 
 protected Session getSession() { 
  // return new session here ...    
 } 
} 

最后在Spring的配置文件applicationContext.xml文件中,加入以下配置

<bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean"> 
 <property name="config" value="WEB-INF/activemq.xml" /> 
 <property name="start" value="true" /> 
</bean>  
<bean name="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> 
 <property name="jndiName" value="java:comp/env/jms/ConnectionFactory" /> 
</bean> 
<bean name="jmsHibernateSearchQueue" class="org.springframework.jndi.JndiObjectFactoryBean"> 
 <property name="jndiName" value="java:comp/env/queue/hibernatesearch" /> 
<bean id="hibernateSearchController" class="<your implementation of AbstractJMSHibernateSearchController>" /> 
<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer" depends-on="broker"> 
 <property name="connectionFactory" ref="jmsConnectionFactory"/> 
 <property name="destination" ref="jmsHibernateSearchQueue"/> 
 <property name="messageListener" ref="hibernateSearchController" /> 
</bean> 

With those configurations in place Hibernate Search master is ready to run.
正確配置好之后,Hibernate Search master就可以運(yùn)行了。

Slave 索引配置

Slave(s)的配置要簡(jiǎn)單得多,以下是配置屬性說(shuō)明

${server} - 運(yùn)行ActiveMQ中介服務(wù)器
${lcoal.index.dir} - 存儲(chǔ)本地索引的目錄(master的拷貝)
${mater.index.share}-掛載mater索引的網(wǎng)絡(luò)共享目錄.

首先,我們需要在網(wǎng)站應(yīng)用 MEAT-INF/context.xml(Tocmat)中配置配置JNDI資源(JMS Connection Factory 和 Quene)

... 
<!-- ActiveMQ ConnectionFactory --> 
<Resource 
name="jms/ConnectionFactory" 
auth="Container" 
type="org.apache.activemq.ActiveMQConnectionFactory" 
description="JMS Connection Factory" 
factory="org.apache.activemq.jndi.JNDIReferenceFactory" 
brokerURL="tcp://${server}:61616?trace=true" 
brokerName="HibernateSearchBroker" /> 
 
<!-- ActiveMQ HibernateSearch queue --> 
<Resource 
name="queue/hibernatesearch" 
auth="Container" type="org.apache.activemq.command.ActiveMQQueue" 
description="Hibernate search queue" 
factory="org.apache.activemq.jndi.JNDIReferenceFactory" 
physicalName="hibernateSearchQueue" /> 
... 

接下來(lái)我們需要在hibernate.cfg.xml中配置Hibernate Search

<property name="hibernate.search.default.directory_provider">org.hibernate.search.store.FSSlaveDirectoryProvider</property> 
<property name="hibernate.search.default.indexBase">${local.index.dir}</property> 
<property name="hibernate.search.default.sourceBase">${master.index.share}</property> 
<property name="hibernate.search.default.refresh">60</property> 
<property name="hibernate.search.worker.backend">jms</property> 
<property name="hibernate.search.worker.jms.connection_factory">java:comp/env/jms/ConnectionFactory</property> 
<property name="hibernate.search.worker.jms.queue">java:comp/env/queue/hibernatesearch</property> 
<property name="hibernate.search.worker.jndi.java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</property> 

配置到此結(jié)束

說(shuō)些關(guān)于JUnit測(cè)試的題外話(huà).唯一的問(wèn)題是需要使用Spring JNDI templates模擬JNDI,例如

<bean name="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> 
  <property name="jndiName" value="java:comp/env/jms/ConnectionFactory" /> 
  <property name="jndiTemplate"> 
    <bean class="org.springframework.mock.jndi.ExpectedLookupTemplate"> 
      <constructor-arg index="0" value="java:comp/env/jms/ConnectionFactory" /> 
      <constructor-arg index="1"> 
        <bean class="org.apache.activemq.ActiveMQConnectionFactory"> 
          <property name="brokerURL"> 
            <value>tcp://0.0.0.0:61616</value> 
          </property> 
        </bean> 
      </constructor-arg> 
    </bean> 
  </property> 
</bean> 
 
<bean name="jmsHibernateSearchQueue" class="org.springframework.jndi.JndiObjectFactoryBean"> 
  <property name="jndiName" value="java:comp/env/queue/hibernatesearch" /> 
  <property name="jndiTemplate"> 
    <bean class="org.springframework.mock.jndi.ExpectedLookupTemplate"> 
      <constructor-arg index="0" value="java:comp/env/queue/hibernatesearch" /> 
      <constructor-arg index="1"> 
        <bean id="jmsHibernateSearchQueue"  class="org.apache.activemq.command.ActiveMQQueue"> 
          <constructor-arg value="queue/hibernateSearchQueue"/> 
        </bean>         
      </constructor-arg> 
    </bean> 
  </property> 
</bean> 

總結(jié)

以上就是本文關(guān)于分布式Hibernate search詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Hibernate實(shí)現(xiàn)悲觀鎖和樂(lè)觀鎖代碼介紹、Hibernate核心思想與接口簡(jiǎn)介等,有什么問(wèn)題可以隨時(shí)留言,小編會(huì)及時(shí)回復(fù)大家的,感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • 阿里云負(fù)載均衡SLB安裝SSL證書(shū)的方法

    阿里云負(fù)載均衡SLB安裝SSL證書(shū)的方法

    這篇文章主要介紹了阿里云負(fù)載均衡SLB安裝SSL證書(shū)的方法,需要的朋友可以參考下
    2018-05-05
  • win2003或linux服務(wù)器一般多久重啟一次

    win2003或linux服務(wù)器一般多久重啟一次

    得根據(jù)服務(wù)器的負(fù)載量來(lái)確定,數(shù)據(jù)量大的話(huà),每次啟動(dòng)時(shí)間間隔就需要短些,反之就可以長(zhǎng)一些.如果機(jī)器維護(hù)的比較好,啟動(dòng)時(shí)間間隔也可以延長(zhǎng)些,只要客戶(hù)訪問(wèn)速度不慢就好
    2012-03-03
  • windows系統(tǒng)搭建zookeeper服務(wù)器的教程

    windows系統(tǒng)搭建zookeeper服務(wù)器的教程

    這篇文章主要介紹了windows系統(tǒng)搭建zookeeper服務(wù)器的教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 虛擬主機(jī)應(yīng)該如何解決電信網(wǎng)通間互聯(lián)互通

    虛擬主機(jī)應(yīng)該如何解決電信網(wǎng)通間互聯(lián)互通

    電信和網(wǎng)通兩大基礎(chǔ)網(wǎng)絡(luò),人為地割裂了整個(gè)中國(guó)的網(wǎng)絡(luò)。無(wú)論是選擇把網(wǎng)站托管在電信、還是網(wǎng)通,都等于是在拒絕處于另外一個(gè)網(wǎng)絡(luò)中的客戶(hù),因?yàn)閷?shí)在太慢了
    2011-10-10
  • 基于Nexus實(shí)現(xiàn)配置阿里云代理倉(cāng)庫(kù)過(guò)程解析

    基于Nexus實(shí)現(xiàn)配置阿里云代理倉(cāng)庫(kù)過(guò)程解析

    這篇文章主要介紹了基于Nexus實(shí)現(xiàn)配置阿里云代理倉(cāng)庫(kù)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 搭建RocketMQ在本地IDEA開(kāi)發(fā)調(diào)試環(huán)境教程

    搭建RocketMQ在本地IDEA開(kāi)發(fā)調(diào)試環(huán)境教程

    這篇文章主要為大家介紹了搭建RocketMQ在本地IDEA開(kāi)發(fā)調(diào)試環(huán)境的步驟教程詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • imail8.22安裝激活實(shí)例[圖文]

    imail8.22安裝激活實(shí)例[圖文]

    今天制作此實(shí)例的目的是因?yàn)榍皫滋煳姨峁┝薎MAIL8.22中文模板和算號(hào)器,這幾天問(wèn)我怎么注冊(cè)的人還挺多,一句話(huà)又講不清,不講吧,又覺(jué)得對(duì)不起朋友們,所以花了點(diǎn)時(shí)間,做了此實(shí)例,方便朋友們使用,高手就不用看了
    2011-09-09
  • k8s入門(mén)集群組件介紹及概念理解

    k8s入門(mén)集群組件介紹及概念理解

    這篇文章主要為大家介紹了k8s入門(mén)集群組件的介紹及概念理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • 磁盤(pán)陣列初步了解圖文教程

    磁盤(pán)陣列初步了解圖文教程

    閑來(lái)無(wú)事,組了個(gè)raid 0,感覺(jué)還不錯(cuò),速度有明顯提高,加載游戲和啟動(dòng)程序速度有所改善,一般服務(wù)器用的多
    2013-06-06
  • win10同網(wǎng)段/跨網(wǎng)段訪問(wèn)虛擬機(jī)samba服務(wù)器的過(guò)程記錄

    win10同網(wǎng)段/跨網(wǎng)段訪問(wèn)虛擬機(jī)samba服務(wù)器的過(guò)程記錄

    這篇文章主要介紹了win10同網(wǎng)段/跨網(wǎng)段訪問(wèn)虛擬機(jī)samba服務(wù)器,主要包括環(huán)境搭建和ubuntu端的安裝配置過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06

最新評(píng)論

新蔡县| 惠安县| 视频| 阜康市| 慈溪市| 靖西县| 沽源县| 神池县| 洞头县| 宁城县| 伊吾县| 雷波县| 望谟县| 江油市| 长丰县| 临西县| 崇州市| 江陵县| 江西省| 西吉县| 隆回县| 东阿县| 卢氏县| 周至县| 澄迈县| 广元市| 阿瓦提县| 陆良县| 青铜峡市| 长宁区| 泽州县| 太保市| 林甸县| 宽甸| 汾阳市| 双牌县| 无极县| 广饶县| 化州市| 隆德县| 枣强县|