Jackrabbit Configuration for Document Library in Liferay Clustering environment
·
Jackrabbit is the standards-based (JSR-170) content
repository that ships with Liferay.
·
By default, Liferay is configured to store files on
the local file system.
·
This will not work in a clustered environment, because
all the nodes need to be able to access the repository.
·
For this reason, we will configure jackrabbit on both
nodes to store documents in the Liferay database, and then we will enable its
cluster configuration.
·
Liferay ships with the database and cluster
configuration available, but commented out, so all we will need to do is
comment out the default configuration and uncomment the database / cluster
configuration.
Enabling
Jackrabbit
·
By default Liferay portal 6.1 uses direct file system
storage for the Document Library.
·
To enable Jackrabbit change the DL storage setting the
following property in portal-ext.properties of all the Liferay nodes
dl.store.impl=com.liferay.portlet.documentlibrary.store.JCRStore
·
Copy all the jackrabbit properties from
portal.properties and paste it in portal-ext.properties file for all the Liferay
nodes
jcr.initialize.on.startup=true
(by default its value is false)
jcr.wrap.session=true
jcr.workspace.name=liferay
jcr.node.documentlibrary=documentlibrary
jcr.jackrabbit.repository.root=${liferay.home}/data/jackrabbit
jcr.jackrabbit.config.file.path=${jcr.jackrabbit.repository.root}/repository.xml
jcr.jackrabbit.repository.home=${jcr.jackrabbit.repository.root}/home
jcr.jackrabbit.credentials.username=none
jcr.jackrabbit.credentials.password=none
[Note: Do not change the storage used by the Document Library if
there are documents already loaded. Do it always for empty database.]
Modify
Jackrabbit Configuration
·
Open repository.xml file from Liferay_Home_1/data/repository.xml.
§ Main
Section of the File :
·
<FileSystem /> declaration that points
Jackrabbit to the local file system.
§ Commented out <FileSystem/> section that points
Jackrabbit to the Database.
·
<Security/>: no change will be needed here.
·
<Workspace /> section that has the following
subsections :
§ <FileSystem/>
that points to the local file system.
§ <PersistenceManager/>
for a local file system.
§ Commented
out <FileSystem/> and <PersistenceManager/> for cluster conf.
·
<Versioning/> with a similar structure than the
Work Space section.
·
Commented out <Cluster/> configuration.
·
Go through the file and comment out the
<FileSystem/> sections and <PersistenceManager/> sections that
point to the file system, and uncomment the sections that point to the
database.
·
For each database section, specify
your database username and password like user name root and password root.
·
Please find the sample repository.xml file after modifying
here. Where uncommented portion is in bold and commented portion is in different
highlighted color.
<?xml version="1.0"?>
<Repository>
<!—
<FileSystem
class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path"
value="${rep.home}/repository" />
</FileSystem>-->
<!--
Database File System
(Cluster Configuration)
This is sample configuration
for mysql persistence that can be used for
clustering Jackrabbit.
For other databases, change the connection,
credentials, and
schema settings.
-->
<FileSystem
class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="com.mysql.jdbc.Driver"/>
<param name="url"
value="jdbc:mysql://localhost/jcr" />
<param name="user" value="root"
/>
<param name="password" value="root"
/>
<param name="schema"
value="mysql"/>
<param name="schemaObjectPrefix"
value="J_R_FS_"/>
</FileSystem>
<Security
appName="Jackrabbit">
<AccessManager
class="org.apache.jackrabbit.core.security.SimpleAccessManager" />
<LoginModule
class="org.apache.jackrabbit.core.security.SimpleLoginModule">
<param
name="anonymousId" value="anonymous" />
</LoginModule>
</Security>
<Workspaces
rootPath="${rep.home}/workspaces"
defaultWorkspace="liferay" />
<Workspace
name="${wsp.name}">
<!—
<FileSystem
class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param
name="path" value="${wsp.home}" />
</FileSystem>
<PersistenceManager
class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager"
/>
-->
<!--
Database File
System and Persistence (Cluster Configuration)
This is sample
configuration for mysql persistence that can be used for
clustering
Jackrabbit. For other databases, change the
connection,
credentials, and
schema settings.
-->
<PersistenceManager
class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
<param name="driver"
value="com.mysql.jdbc.Driver" />
<param name="url"
value="jdbc:mysql://localhost/jcr" />
<param name="user" value="root" />
<param name="password" value="root" />
<param name="schema" value="mysql" />
<param name="schemaObjectPrefix"
value="J_PM_${wsp.name}_" />
<param name="externalBLOBs" value="false"
/>
</PersistenceManager>
<FileSystem
class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver"
value="com.mysql.jdbc.Driver"/>
<param name="url"
value="jdbc:mysql://localhost/jcr" />
<param
name="user" value="root" />
<param name="password" value="root" />
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="J_FS_${wsp.name}_"/>
</FileSystem>
</Workspace>
<Versioning rootPath="${rep.home}/version">
<!--
<FileSystem
class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param
name="path" value="${rep.home}/version" />
</FileSystem>
<PersistenceManager
class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager"
/> -->
<!--
Database File
System and Persistence (Cluster Configuration)
This is sample
configuration for mysql persistence that can be used for
clustering
Jackrabbit. For other databases, change the connection,
credentials, and
schema settings.
-->
<FileSystem
class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver"
value="com.mysql.jdbc.Driver"/>
<param name="url"
value="jdbc:mysql://localhost/jcr" />
<param name="user" value="root" />
<param name="password" value="root" />
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix"
value="J_V_FS_"/>
</FileSystem>
<PersistenceManager
class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
<param
name="driver" value="com.mysql.jdbc.Driver" />
<param name="url"
value="jdbc:mysql://localhost/jcr" />
<param name="user" value="root" />
<param name="password" value="root" />
<param name="schema" value="mysql" />
<param name="schemaObjectPrefix"
value="J_V_PM_" />
<param name="externalBLOBs" value="false"
/>
</PersistenceManager>
</Versioning>
<!--
Cluster Configuration
This is sample
configuration for mysql persistence that can be used for
clustering Jackrabbit.
For other databases, change the
connection,
credentials, and
schema settings.
-->
<Cluster
id="node_1" syncDelay="5">
<Journal
class="org.apache.jackrabbit.core.journal.DatabaseJournal">
<param name="revision"
value="${rep.home}/revision"/>
<param name="driver"
value="com.mysql.jdbc.Driver"/>
<param name="url"
value="jdbc:mysql://localhost/jcr"/>
<param name="user" value="root"/>
<param name="password" value="root"/>
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix"
value="J_C_"/>
</Journal>
</Cluster>
</Repository>
·
Repeat the same change in the repository.xml file from
Liferay_Home_2/data/repository.xml
Adding a
Database
·
Note that the database URLs in this file point to a
new database called jcr.
·
You will need to create a database before you start
Liferay.
·
This is easy to do with MySQL. We will do this via the
command line.
Create database jcr;
Test Case
Start both Liferay nodes and upload a new document in Node1. And
try to download from node1 and node2. If it allow to download then you did successful
integration.
Congratulation!
It’s done.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.