亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

分布式Hibernate search詳解

2024-09-01 13:53:12
字體:
來源:轉載
供稿:網友

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

怎么工作:

-Hibernate Search 支持使用JMS back-end 和 master/slave(s) 索引進行分布式配置
- mater通過網絡共享暴露索引 (例如通過NFS。。。)
- slave(s) 復制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的配置稍顯復雜。以下是配置屬性說明
$(local.index.dir) - 存儲mater索引的目錄
$(master.index.dir) -拷貝mater索引的目標目錄,通過網絡定位供slave(s)復制。

首先,為了簡單起見,我們將ActiveMQ中介運行在同一臺服務器上。因此,我們在WEB-INF/activemq.xml文件中使用簡單的嵌入式中介配置。

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

接下來在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之間代碼的一個重要區別是:master中必須包含實現 AbstractJMSHibernateSearchController 的子類作為監聽器,例如

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就可以運行了。

Slave 索引配置

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

${server} - 運行ActiveMQ中介服務器
${lcoal.index.dir} - 存儲本地索引的目錄(master的拷貝)
${mater.index.share}-掛載mater索引的網絡共享目錄.

首先,我們需要在網站應用 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" /> ... 

接下來我們需要在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> 

配置到此結束

說些關于JUnit測試的題外話.唯一的問題是需要使用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> 

總結

以上就是本文關于分布式Hibernate search詳解的全部內容,希望對大家有所幫助。有什么問題可以隨時留言,小編會及時回復大家的,感謝朋友們對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线播放视频| 日韩中文字幕在线精品| 国产亚洲视频在线观看| 亚洲欧美中文另类| 亚州av一区二区| 欧亚精品中文字幕| 欧美久久久精品| 欧美精品性视频| 欧美最顶级的aⅴ艳星| 亚洲第一区中文99精品| 欧洲永久精品大片ww免费漫画| 亚洲国产精彩中文乱码av在线播放| 国产精品国产三级国产专播精品人| 亚洲天堂免费观看| 欧美黄色片在线观看| 亚洲精品乱码久久久久久金桔影视| 亚洲成人av在线| 欧美日韩国产一区在线| 欧美激情区在线播放| 久久久久久91| 久久精品成人欧美大片古装| 亚洲一区国产精品| 搡老女人一区二区三区视频tv| 2019亚洲男人天堂| 97人洗澡人人免费公开视频碰碰碰| 亚洲四色影视在线观看| 欧美日韩xxxxx| 亚洲精品中文字幕有码专区| 国产日韩欧美视频| 91精品国产亚洲| 国产一区二区三区在线播放免费观看| 精品久久久久久久久中文字幕| 欧美国产精品日韩| 精品国产一区二区三区久久狼5月| 亚洲第一精品电影| 91精品国产综合久久香蕉922| 日韩精品中文字幕视频在线| 亚洲免费视频观看| 精品偷拍一区二区三区在线看| 欧美激情精品久久久| 亚洲第一区在线| 欧美电影院免费观看| 91国内精品久久| 亚洲性69xxxbbb| 久久久成人av| 日本成人精品在线| 韩国美女主播一区| 久久国产天堂福利天堂| 亲子乱一区二区三区电影| 亚洲一区美女视频在线观看免费| 久久久久久久一| 成人午夜黄色影院| 成人精品视频99在线观看免费| 国产精品视频久久久| 91免费人成网站在线观看18| 在线播放精品一区二区三区| 国产精品久久综合av爱欲tv| 欧美午夜视频一区二区| 精品国内自产拍在线观看| 亚洲免费成人av电影| 疯狂欧美牲乱大交777| 国产欧美日韩高清| 国产精品视频播放| 国产精品亚洲片夜色在线| 国产精品亚洲片夜色在线| 欧美性色视频在线| 精品久久久久国产| 日韩中文视频免费在线观看| 亚洲精品综合久久中文字幕| 在线亚洲国产精品网| 亚洲欧美激情视频| 国产九九精品视频| 欧美成人免费全部观看天天性色| 日韩的一区二区| 欧美日韩美女在线观看| 国产成人精品最新| 欧美日韩人人澡狠狠躁视频| 日韩成人在线视频| 色哟哟网站入口亚洲精品| 国产精品激情av电影在线观看| 亚洲精品国偷自产在线99热| 自拍偷拍亚洲一区| 国产日韩欧美在线视频观看| 精品久久久一区| 亚洲欧美制服综合另类| 欧美成年人视频| 欧美性猛交xxxx富婆弯腰| 亚洲色图美腿丝袜| 成人亲热视频网站| 国产精品夫妻激情| 国产成人亚洲精品| 精品动漫一区二区三区| 2019国产精品自在线拍国产不卡| 在线播放日韩av| 欧美日韩国产黄| 亚洲成人教育av| 久久好看免费视频| 91av网站在线播放| 午夜精品久久17c| 正在播放国产一区| 久久久精品中文字幕| 亚洲国产精品成人av| 久久成人国产精品| 欧美另类老肥妇| 国自在线精品视频| 亚洲伊人成综合成人网| 精品视频在线导航| 91精品国产高清久久久久久91| 国产精品你懂得| 欧美巨乳在线观看| 欧美人在线观看| 久久免费国产视频| 久久精品国产久精国产一老狼| 日韩欧美国产一区二区| 精品动漫一区二区三区| 一本久久综合亚洲鲁鲁| 国产日韩精品综合网站| 欧美黄色免费网站| 欧美高清视频在线播放| 成人免费直播live| 欧美日韩亚洲高清| 久久久久久高潮国产精品视| 欧美成人黑人xx视频免费观看| 欧美日本国产在线| 菠萝蜜影院一区二区免费| 国产成人精品a视频一区www| 国产亚洲a∨片在线观看| 国产精品女人网站| 中文字幕欧美日韩va免费视频| 精品少妇v888av| 91久久精品美女高潮| 欧美多人乱p欧美4p久久| 亚洲美女av网站| 久久6免费高清热精品| 日本欧美在线视频| 91久久久久久久一区二区| 亚洲精品国精品久久99热一| 国产主播欧美精品| 97超视频免费观看| 性色av香蕉一区二区| 91精品成人久久| 69久久夜色精品国产7777| 亚洲精品国产精品乱码不99按摩| 久久久久成人网| 色青青草原桃花久久综合| 在线亚洲午夜片av大片| 久久久精品在线观看| 北条麻妃在线一区二区| 日韩人在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 欧美在线精品免播放器视频| 精品欧美国产一区二区三区| 精品香蕉在线观看视频一| 欧美成人午夜激情视频| 一本色道久久综合亚洲精品小说| 欧美主播福利视频| 午夜免费日韩视频| 国产成人综合精品在线| 国产精品自拍偷拍视频| 日韩精品视频在线观看网址| 国产偷国产偷亚洲清高网站| 亚洲影视中文字幕| 91成人在线视频| 91在线视频免费|