Jackrabbit集群

http://pingyuan.itpub.net/post/15272/461294

Jackrabbit集群原理

Jackrabbit 的框架本身已经实现了集群部署。它的集群原理图如下:

Jackrabbit的集群原理:每个应用系统拥有各自的内容仓库,每个应用系统对本身的内容仓库做了增加、删除、修改的操作,都会在内容仓库集群汇聚点做个记录,然后其他的内容仓库会同步集群汇聚点上的操作。

比如由上图:应用系统1修改内容仓库1的某个节点信息(第1步骤),应用系统1同时在内容仓库集群汇聚点做了记录(第2步骤),然后内容仓库2会同步集群汇聚点上的操作(3步骤)

集群的必要条件

1. 必须保证每个集群节点的仓库persistence managers 保存数据到同一个地方、所有的集群节点都可以访问。

2. 每个集群节点要有唯一的id

3. 内容仓库集群汇聚点存储类型可以是数据库或者文件。

对于第一个条件,因为在集群汇聚点上只是保存了内容仓库修改项的唯一标识,只有别的集群点同步该修改项时,才会读取内容仓库修改项的实际数据。

对于第二个条件,集群汇聚点为了标识那个集群点做了修改。

对于第三个条件,一定要确保集群汇聚点上的信息能够给所有的集群点访问。

集群配置步骤

1repository.xml文件中增加

<Cluster id="node1" syncDelay="5" >

<Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">

<param name="revision" value="${rep.home}/revision.log"/>

<param name="driver" value="oracle.jdbc.driver.OracleDriver"/>

<param name="url" value="jdbc:oracle:thin:@172.16.14.237:1521:ora10g64" />

<param name="user" value="exkm" />

<param name="password" value="exkm" />

<param name="schema" value="oracle"/>

<param name="schemaObjectPrefix" value="J_C_"/>

</Journal>

</Cluster>

上面表示集群汇聚点存储类型是存在oracle数据库。只要配置正确后,我们将在oracle数据库中找到两个表:J_C_GLOBAL_REVISIONJ_C_JOURNAL

例子:

比如你在应用系统1上的repository.xml增加了以下内容

<Cluster id="node1" syncDelay="5" >

<Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">

<param name="revision" value="${rep.home}/revision.log"/>

<param name="driver" value="oracle.jdbc.driver.OracleDriver"/>

<param name="url" value="jdbc:oracle:thin:@172.16.14.237:1521:ora10g64" />

<param name="user" value="exkm" />

<param name="password" value="exkm" />

<param name="schema" value="oracle"/>

<param name="schemaObjectPrefix" value="J_C_"/>

</Journal>

</Cluster>

另外应用系统2repository.xml可以增加了以下内容

<Cluster id="node2" syncDelay="5" >

<Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">

<param name="revision" value="${rep.home}/revision.log"/>

<param name="driver" value="oracle.jdbc.driver.OracleDriver"/>

<param name="url" value="jdbc:oracle:thin:@172.16.14.237:1521:ora10g64" />

<param name="user" value="exkm" />

<param name="password" value="exkm" />

<param name="schema" value="oracle"/>

<param name="schemaObjectPrefix" value="J_C_"/>

</Journal>

</Cluster>

注意<Cluster >节点上的id不同。

原文地址:https://www.cnblogs.com/SingleCat/p/2169845.html