[exo-jcr-commits] exo-jcr SVN: r1904 - jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Feb 18 10:38:57 EST 2010


Author: sergiykarpenko
Date: 2010-02-18 10:38:57 -0500 (Thu, 18 Feb 2010)
New Revision: 1904

Modified:
   jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/cluster-config.xml
   jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/intro.xml
   jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/jbosscache-configuration-templates.xml
   jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/lock-manager-config.xml
   jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/query-handler-config.xml
Log:
EXOJCR-490: links added

Modified: jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/cluster-config.xml
===================================================================
--- jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/cluster-config.xml	2010-02-18 15:27:16 UTC (rev 1903)
+++ jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/cluster-config.xml	2010-02-18 15:38:57 UTC (rev 1904)
@@ -1,247 +1,262 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter>
-  <?dbhtml filename="cluster-config.html"?>
-
-  <title>Configuring JBoss AS with eXo JCR in cluster</title>
-
-  <section>
-    <title>Launching Cluster</title>
-
-    <section>
-      <title>Deploying eXo JCR to JBoss As</title>
-
-      <para>To deploy eXo JCR to JBoss As follow next steps:</para>
-
-      <orderedlist>
-        <listitem>
-          <para>Dowload the latest version of eXo JCR ear distribution from
-          [LINK THERE]</para>
-        </listitem>
-
-        <listitem>
-          <para>Copy &lt;jcr.ear&gt; into
-          &lt;%jboss_home%/server/default/deploy&gt;</para>
-        </listitem>
-
-        <listitem>
-          <para>Put exo-configuration.xml to the root
-          &lt;%jboss_home%/exo-configuration.xml&gt;</para>
-        </listitem>
-
-        <listitem>
-          <para>Configure JAAS by inserting XML fragment shown below into
-          &lt;%jboss_home%/server/default/conf/login-config.xml&gt;</para>
-
-          <programlisting>&lt;application-policy name="exo-domain"&gt;
-   &lt;authentication&gt;
-      &lt;login-module code="org.exoplatform.services.security.j2ee.JbossLoginModule" flag="required"&gt;&lt;/login-module&gt;
-   &lt;/authentication&gt;
-&lt;/application-policy&gt;</programlisting>
-        </listitem>
-
-        <listitem>
-          <para>Start server:</para>
-
-          <itemizedlist>
-            <listitem>
-              <para>bin/run.sh for Unix</para>
-            </listitem>
-
-            <listitem>
-              <para>bin/run.bat for Windows</para>
-            </listitem>
-          </itemizedlist>
-        </listitem>
-
-        <listitem>
-          <para>Try accessing <ulink
-          url="http://localhost:8080/browser">http://localhost:8080/browser</ulink>
-          with root/exo as login/password if you have done everything right,
-          you'll get access to repository browser.</para>
-        </listitem>
-      </orderedlist>
-    </section>
-
-    <section id="sect_conf_cluster_jcr">
-      <title>Configuring JCR to use external configuration</title>
-
-      <itemizedlist>
-        <listitem>
-          <para>To manually configure repository create a new configuration
-          file (f.e. exo-jcr-configuration.xml). For details see <ulink
-          url="http://wiki.exoplatform.org/xwiki/bin/view/JCR/#HConfiguration">JCR
-          Configuration</ulink>. Your configuration must look like:</para>
-
-          <programlisting>&lt;repository-service default-repository="repository1"&gt;
-   &lt;repositories&gt;
-      &lt;repository name="repository1" system-workspace="ws1" default-workspace="ws1"&gt;
-         &lt;security-domain&gt;exo-domain&lt;/security-domain&gt;
-         &lt;access-control&gt;optional&lt;/access-control&gt;
-         &lt;authentication-policy&gt;org.exoplatform.services.jcr.impl.core.access.JAASAuthenticator&lt;/authentication-policy&gt;
-         &lt;workspaces&gt;
-            &lt;workspace name="ws1"&gt;
-               &lt;container class="org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer"&gt;
-                  &lt;properties&gt;
-                     &lt;property name="source-name" value="jdbcjcr" /&gt;
-                     &lt;property name="dialect" value="oracle" /&gt;
-                     &lt;property name="multi-db" value="false" /&gt;
-                     &lt;property name="update-storage" value="false" /&gt;
-                     &lt;property name="max-buffer-size" value="200k" /&gt;
-                     &lt;property name="swap-directory" value="../temp/swap/production" /&gt;
-                  &lt;/properties&gt;
-                  &lt;value-storages&gt;
-                     see "<link linkend="conf_value_storage">Value storage configuration</link>" part.
-                  &lt;/value-storages&gt;
-               &lt;/container&gt;
-               &lt;initializer class="org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer"&gt;
-                  &lt;properties&gt;
-                     &lt;property name="root-nodetype" value="nt:unstructured" /&gt;
-                  &lt;/properties&gt;
-               &lt;/initializer&gt;
-               &lt;cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache"&gt;
-                     see  "<link linkend="conf_cache">Cache configuration</link>" part.
-               &lt;/cache&gt;
-               &lt;query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex"&gt;
-                  see  "<link linkend="conf_indexer">Indexer configuration</link>" part.
-               &lt;/query-handler&gt;
-               &lt;lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl"&gt;
-                  see  "<link linkend="conf_lock_manager">Lock Manager configuration</link>" part.
-               &lt;/lock-manager&gt;
-            &lt;/workspace&gt;
-            &lt;workspace name="ws2"&gt;
-                        ...
-            &lt;/workspace&gt;
-            &lt;workspace name="wsN"&gt;
-                        ...
-            &lt;/workspace&gt;
-         &lt;/workspaces&gt;
-      &lt;/repository&gt;
-   &lt;/repositories&gt;
-&lt;/repository-service&gt; </programlisting>
-        </listitem>
-
-        <listitem>
-          <para>and update RepositoryServiceConfiguration configuration in
-          exo-configuration.xml to use this file:<programlisting>&lt;component&gt;
-   &lt;key&gt;org.exoplatform.services.jcr.config.RepositoryServiceConfiguration&lt;/key&gt;
-   &lt;type&gt;org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl&lt;/type&gt;
-   &lt;init-params&gt;
-      &lt;value-param&gt;
-         &lt;name&gt;conf-path&lt;/name&gt;
-         &lt;description&gt;JCR configuration file&lt;/description&gt;
-         &lt;value&gt;exo-jcr-configuration.xml&lt;/value&gt;
-      &lt;/value-param&gt;
-   &lt;/init-params&gt;
-&lt;/component&gt;</programlisting></para>
-        </listitem>
-      </itemizedlist>
-    </section>
-  </section>
-
-  <section>
-    <title>Requirements</title>
-
-    <section>
-      <title>Enviorenment requirements</title>
-
-      <itemizedlist>
-        <listitem>
-          <para>Every node of cluster MUST have the same mounted Network File
-          System with read and write permissions on it.</para>
-
-          <para>"/mnt/tornado" - path to the mounted Network File System (all
-          cluster nodes must use the same NFS)</para>
-        </listitem>
-
-        <listitem>
-          <para>Every node of cluster MUST use the same database</para>
-        </listitem>
-
-        <listitem>
-          <para>Same Clusters on different nodes MUST have the same cluster
-          names (f.e if Indexer cluster in workspace production on the first
-          node has name "production_indexer_cluster", then indexer clusters in
-          workspace production on all other nodes MUST have the same name
-          "production_indexer_cluster" )</para>
-        </listitem>
-      </itemizedlist>
-    </section>
-
-    <section>
-      <title>Enviorenment requirements</title>
-
-      <para>Configuration of every workspace in repository must contains of
-      such parts:</para>
-
-      <itemizedlist>
-        <listitem id="conf_value_storage">
-          <para>Value Storage configuration:</para>
-
-          <programlisting>&lt;value-storages&gt;
-   &lt;value-storage id="system" class="org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage"&gt;
-      &lt;properties&gt;
-         &lt;property name="path" value="/mnt/tornado/temp/values/production" /&gt;    &lt;!--path within NFS where ValueStorage will hold it's data--&gt;
-      &lt;/properties&gt;
-      &lt;filters&gt;
-         &lt;filter property-type="Binary" /&gt;
-      &lt;/filters&gt;
-   &lt;/value-storage&gt;
-&lt;/value-storages&gt;</programlisting>
-        </listitem>
-
-        <listitem id="conf_cache">
-          <para>Cache configuration:</para>
-
-          <programlisting>&lt;cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache"&gt;
-   &lt;properties&gt;
-      &lt;property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-data.xml" /&gt;     &lt;!--    path to JBoss Cache configuration for data storage --&gt;
-      &lt;property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" /&gt;                     &lt;!--    path to JGroups configuration --&gt;
-      &lt;property name="jbosscache-cluster-name" value="JCR_Cluster_cache_production" /&gt;                   &lt;!--    JBoss Cache data storage cluster name --&gt;
-      &lt;property name="jgroups-multiplexer-stack" value="true" /&gt;
-   &lt;/properties&gt;
-&lt;/cache&gt; </programlisting>
-        </listitem>
-
-        <listitem id="conf_indexer">
-          <para>Indexer configuration:</para>
-
-          <programlisting>&lt;query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex"&gt;
-   &lt;properties&gt;
-      &lt;property name="changesfilter-class" value="org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter" /&gt;
-      &lt;property name="index-dir" value="/mnt/tornado/temp/jcrlucenedb/production" /&gt;                       &lt;!--    path within NFS where ValueStorage will hold it's data --&gt;
-      &lt;property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-indexer.xml" /&gt;    &lt;!--    path to JBoss Cache configuration for indexer --&gt;
-      &lt;property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" /&gt;                       &lt;!--    path to JGroups configuration --&gt;
-      &lt;property name="jbosscache-cluster-name" value="JCR_Cluster_indexer_production" /&gt;                   &lt;!--    JBoss Cache indexer cluster name --&gt;
-      &lt;property name="jgroups-multiplexer-stack" value="true" /&gt;
-   &lt;/properties&gt;
-&lt;/query-handler&gt; </programlisting>
-        </listitem>
-
-        <listitem id="conf_lock_manager">
-          <para>Lock Manager configuration:</para>
-
-          <programlisting>&lt;lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl"&gt;
-   &lt;properties&gt;
-      &lt;property name="time-out" value="15m" /&gt;
-      &lt;property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-lock.xml" /&gt;       &lt;!--    path to JBoss Cache configuration for lock manager --&gt;
-      &lt;property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" /&gt;                       &lt;!--    path to JGroups configuration --&gt;
-      &lt;property name="jgroups-multiplexer-stack" value="true" /&gt;
-      &lt;property name="jbosscache-cluster-name" value="JCR_Cluster_lock_production" /&gt;                      &lt;!--    JBoss Cache locks cluster name --&gt;
-                     
-      &lt;property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlocks_production"/&gt;                   &lt;!--    the name of the DB table where lock's data will be stored --&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.table.create" value="true"/&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.table.drop" value="false"/&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.table.primarykey" value="jcrlocks_production_pk"/&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.fqn.column" value="fqn"/&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.node.column" value="node"/&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.parent.column" value="parent"/&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.datasource" value="jdbcjcr"/&gt;
-   &lt;/properties&gt;
-&lt;/lock-manager&gt;</programlisting>
-        </listitem>
-      </itemizedlist>
-    </section>
-  </section>
-</chapter>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="ch_cluster_configuration">
+  <?dbhtml filename="cluster-config.html"?>
+
+  <title>Configuring JBoss AS with eXo JCR in cluster</title>
+
+  <section>
+    <title>Launching Cluster</title>
+
+    <section>
+      <title>Deploying eXo JCR to JBoss As</title>
+
+      <para>To deploy eXo JCR to JBoss As follow next steps:</para>
+
+      <orderedlist>
+        <listitem>
+          <para>Dowload the latest version of eXo JCR ear distribution from
+          [LINK THERE]</para>
+        </listitem>
+
+        <listitem>
+          <para>Copy &lt;jcr.ear&gt; into
+          &lt;%jboss_home%/server/default/deploy&gt;</para>
+        </listitem>
+
+        <listitem>
+          <para>Put exo-configuration.xml to the root
+          &lt;%jboss_home%/exo-configuration.xml&gt;</para>
+        </listitem>
+
+        <listitem>
+          <para>Configure JAAS by inserting XML fragment shown below into
+          &lt;%jboss_home%/server/default/conf/login-config.xml&gt;</para>
+
+          <programlisting>&lt;application-policy name="exo-domain"&gt;
+   &lt;authentication&gt;
+      &lt;login-module code="org.exoplatform.services.security.j2ee.JbossLoginModule" flag="required"&gt;&lt;/login-module&gt;
+   &lt;/authentication&gt;
+&lt;/application-policy&gt;</programlisting>
+        </listitem>
+
+        <listitem>
+          <para>Start server:</para>
+
+          <itemizedlist>
+            <listitem>
+              <para>bin/run.sh for Unix</para>
+            </listitem>
+
+            <listitem>
+              <para>bin/run.bat for Windows</para>
+            </listitem>
+          </itemizedlist>
+        </listitem>
+
+        <listitem>
+          <para>Try accessing <uri>http://localhost:8080/browser</uri> with
+          root/exo as login/password if you have done everything right, you'll
+          get access to repository browser.</para>
+        </listitem>
+      </orderedlist>
+    </section>
+
+    <section id="sect_conf_cluster_jcr">
+      <title>Configuring JCR to use external configuration</title>
+
+      <itemizedlist>
+        <listitem>
+          <para>To manually configure repository create a new configuration
+          file (f.e. exo-jcr-configuration.xml). For details see <link
+          linkend="ch_configuration">JCR Configuration</link>. Your
+          configuration must look like:</para>
+
+          <programlisting>&lt;repository-service default-repository="repository1"&gt;
+   &lt;repositories&gt;
+      &lt;repository name="repository1" system-workspace="ws1" default-workspace="ws1"&gt;
+         &lt;security-domain&gt;exo-domain&lt;/security-domain&gt;
+         &lt;access-control&gt;optional&lt;/access-control&gt;
+         &lt;authentication-policy&gt;org.exoplatform.services.jcr.impl.core.access.JAASAuthenticator&lt;/authentication-policy&gt;
+         &lt;workspaces&gt;
+            &lt;workspace name="ws1"&gt;
+               &lt;container class="org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer"&gt;
+                  &lt;properties&gt;
+                     &lt;property name="source-name" value="jdbcjcr" /&gt;
+                     &lt;property name="dialect" value="oracle" /&gt;
+                     &lt;property name="multi-db" value="false" /&gt;
+                     &lt;property name="update-storage" value="false" /&gt;
+                     &lt;property name="max-buffer-size" value="200k" /&gt;
+                     &lt;property name="swap-directory" value="../temp/swap/production" /&gt;
+                  &lt;/properties&gt;
+                  &lt;value-storages&gt;
+                     see "<link linkend="conf_value_storage">Value storage configuration</link>" part.
+                  &lt;/value-storages&gt;
+               &lt;/container&gt;
+               &lt;initializer class="org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer"&gt;
+                  &lt;properties&gt;
+                     &lt;property name="root-nodetype" value="nt:unstructured" /&gt;
+                  &lt;/properties&gt;
+               &lt;/initializer&gt;
+               &lt;cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache"&gt;
+                     see  "<link linkend="conf_cache">Cache configuration</link>" part.
+               &lt;/cache&gt;
+               &lt;query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex"&gt;
+                  see  "<link linkend="conf_indexer">Indexer configuration</link>" part.
+               &lt;/query-handler&gt;
+               &lt;lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl"&gt;
+                  see  "<link linkend="conf_lock_manager">Lock Manager configuration</link>" part.
+               &lt;/lock-manager&gt;
+            &lt;/workspace&gt;
+            &lt;workspace name="ws2"&gt;
+                        ...
+            &lt;/workspace&gt;
+            &lt;workspace name="wsN"&gt;
+                        ...
+            &lt;/workspace&gt;
+         &lt;/workspaces&gt;
+      &lt;/repository&gt;
+   &lt;/repositories&gt;
+&lt;/repository-service&gt; </programlisting>
+        </listitem>
+
+        <listitem>
+          <para>and update RepositoryServiceConfiguration configuration in
+          exo-configuration.xml to use this file:<programlisting>&lt;component&gt;
+   &lt;key&gt;org.exoplatform.services.jcr.config.RepositoryServiceConfiguration&lt;/key&gt;
+   &lt;type&gt;org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl&lt;/type&gt;
+   &lt;init-params&gt;
+      &lt;value-param&gt;
+         &lt;name&gt;conf-path&lt;/name&gt;
+         &lt;description&gt;JCR configuration file&lt;/description&gt;
+         &lt;value&gt;exo-jcr-configuration.xml&lt;/value&gt;
+      &lt;/value-param&gt;
+   &lt;/init-params&gt;
+&lt;/component&gt;</programlisting></para>
+        </listitem>
+      </itemizedlist>
+    </section>
+  </section>
+
+  <section>
+    <title>Requirements</title>
+
+    <section>
+      <title>Enviorenment requirements</title>
+
+      <itemizedlist>
+        <listitem>
+          <para>Every node of cluster MUST have the same mounted Network File
+          System with read and write permissions on it.</para>
+
+          <para>"/mnt/tornado" - path to the mounted Network File System (all
+          cluster nodes must use the same NFS)</para>
+        </listitem>
+
+        <listitem>
+          <para>Every node of cluster MUST use the same database</para>
+        </listitem>
+
+        <listitem>
+          <para>Same Clusters on different nodes MUST have the same cluster
+          names (f.e if Indexer cluster in workspace production on the first
+          node has name "production_indexer_cluster", then indexer clusters in
+          workspace production on all other nodes MUST have the same name
+          "production_indexer_cluster" )</para>
+        </listitem>
+      </itemizedlist>
+    </section>
+
+    <section>
+      <title>Enviorenment requirements</title>
+
+      <para>Configuration of every workspace in repository must contains of
+      such parts:</para>
+
+      <itemizedlist>
+        <listitem id="conf_value_storage">
+          <para>Value Storage configuration:</para>
+
+          <programlisting>&lt;value-storages&gt;
+   &lt;value-storage id="system" class="org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage"&gt;
+      &lt;properties&gt;
+         &lt;property name="path" value="/mnt/tornado/temp/values/production" /&gt;    &lt;!--path within NFS where ValueStorage will hold it's data--&gt;
+      &lt;/properties&gt;
+      &lt;filters&gt;
+         &lt;filter property-type="Binary" /&gt;
+      &lt;/filters&gt;
+   &lt;/value-storage&gt;
+&lt;/value-storages&gt;</programlisting>
+
+          <para>See more about <link
+          linkend="ch_external_value_storages">ValueStorage
+          configuration</link>.</para>
+        </listitem>
+
+        <listitem id="conf_cache">
+          <para>Cache configuration:</para>
+
+          <programlisting>&lt;cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache"&gt;
+   &lt;properties&gt;
+      &lt;property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-data.xml" /&gt;     &lt;!--    path to JBoss Cache configuration for data storage --&gt;
+      &lt;property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" /&gt;                     &lt;!--    path to JGroups configuration --&gt;
+      &lt;property name="jbosscache-cluster-name" value="JCR_Cluster_cache_production" /&gt;                   &lt;!--    JBoss Cache data storage cluster name --&gt;
+      &lt;property name="jgroups-multiplexer-stack" value="true" /&gt;
+   &lt;/properties&gt;
+&lt;/cache&gt; </programlisting>
+
+          <para>See more about <link
+          linkend="ch_jbosscache_config_templates">Cache
+          configuration</link>.</para>
+        </listitem>
+
+        <listitem id="conf_indexer">
+          <para>Indexer configuration:</para>
+
+          <programlisting>&lt;query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex"&gt;
+   &lt;properties&gt;
+      &lt;property name="changesfilter-class" value="org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter" /&gt;
+      &lt;property name="index-dir" value="/mnt/tornado/temp/jcrlucenedb/production" /&gt;                       &lt;!--    path within NFS where ValueStorage will hold it's data --&gt;
+      &lt;property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-indexer.xml" /&gt;    &lt;!--    path to JBoss Cache configuration for indexer --&gt;
+      &lt;property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" /&gt;                       &lt;!--    path to JGroups configuration --&gt;
+      &lt;property name="jbosscache-cluster-name" value="JCR_Cluster_indexer_production" /&gt;                   &lt;!--    JBoss Cache indexer cluster name --&gt;
+      &lt;property name="jgroups-multiplexer-stack" value="true" /&gt;
+   &lt;/properties&gt;
+&lt;/query-handler&gt; </programlisting>
+
+          <para>See more about <link
+          linkend="ch_query_handler_config">QueryHandler
+          configuration</link>.</para>
+        </listitem>
+
+        <listitem id="conf_lock_manager">
+          <para>Lock Manager configuration:</para>
+
+          <programlisting>&lt;lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl"&gt;
+   &lt;properties&gt;
+      &lt;property name="time-out" value="15m" /&gt;
+      &lt;property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-lock.xml" /&gt;       &lt;!--    path to JBoss Cache configuration for lock manager --&gt;
+      &lt;property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" /&gt;                       &lt;!--    path to JGroups configuration --&gt;
+      &lt;property name="jgroups-multiplexer-stack" value="true" /&gt;
+      &lt;property name="jbosscache-cluster-name" value="JCR_Cluster_lock_production" /&gt;                      &lt;!--    JBoss Cache locks cluster name --&gt;
+                     
+      &lt;property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlocks_production"/&gt;                   &lt;!--    the name of the DB table where lock's data will be stored --&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.table.create" value="true"/&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.table.drop" value="false"/&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.table.primarykey" value="jcrlocks_production_pk"/&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.fqn.column" value="fqn"/&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.node.column" value="node"/&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.parent.column" value="parent"/&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.datasource" value="jdbcjcr"/&gt;
+   &lt;/properties&gt;
+&lt;/lock-manager&gt;</programlisting>
+
+          <para>See more about <link
+          linkend="ch_lock_manager_config">LockManager
+          configuration</link>.</para>
+        </listitem>
+      </itemizedlist>
+    </section>
+  </section>
+</chapter>

Modified: jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/intro.xml
===================================================================
--- jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/intro.xml	2010-02-18 15:27:16 UTC (rev 1903)
+++ jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/intro.xml	2010-02-18 15:38:57 UTC (rev 1904)
@@ -1,70 +1,70 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter>
-  <?dbhtml filename="intro.html"?>
-  <title>Introduction in eXoJCR</title>
-  <section>
-    <title>JCR (JSR-170) API main concepts</title>
-
-    <para>Java Content Repository API as well as other Java language related
-    standards is created within the Java Community Process http://jcp.org/ as
-    a result of collaboration of an expert group and the Java community and
-    known as JSR-170 (Java Specification Request)
-    http://www.jcp.org/en/jsr/detail?id=170.</para>
-
-    <para></para>
-
-    <section>
-      <title>Data model</title>
-
-      <para>As the main purpose of content repository is to maintain the data
-      - the heart of CR is the data model:</para>
-
-      <para><itemizedlist>
-          <listitem>
-            <para>The main data storage abstraction of JCR's data model is a
-            workspace</para>
-          </listitem>
-
-          <listitem>
-            <para>Each repository should have one or more workspaces</para>
-          </listitem>
-
-          <listitem>
-            <para>The content is stored in a workspace as a hierarchy of
-            items</para>
-          </listitem>
-
-          <listitem>
-            <para>Each workspace has its own hierarchy of items</para>
-          </listitem>
-        </itemizedlist></para>
-
-      <figure>
-        <title>Item hierarchy</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata fileref="images/item-hierarchy.gif" />
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <para>Node is intended to support the data hierarchy. They are typed
-      using namespaced names which allows the content to be structured
-      according to standardized constraints. A node may be versioned through
-      an associated version graph (optional feature)</para>
-
-      <para>Property stored data are values of predefined types (String,
-      Binary, Long, Boolean, Double, Date, Reference, Path).</para>
-
-      <para>It is important to note that the data model for the interface (the
-      repository model) is rarely the same as the data models used by the
-      repository's underlying storage subsystems. The repository knows how to
-      make the client's changes persistent because that is part of the
-      repository configuration, rather than part of the application
-      programming task.</para>
-    </section>
-  </section>
-</chapter>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter>
+  <?dbhtml filename="intro.html"?>
+
+  <title>Introduction in eXoJCR</title>
+
+  <section>
+    <title>JCR (JSR-170) API main concepts</title>
+
+    <para>Java Content Repository API as well as other Java language related
+    standards is created within the Java Community Process http://jcp.org/ as
+    a result of collaboration of an expert group and the Java community and
+    known as JSR-170 (Java Specification Request)
+    http://www.jcp.org/en/jsr/detail?id=170.</para>
+
+    <section>
+      <title>Data model</title>
+
+      <para>As the main purpose of content repository is to maintain the data
+      - the heart of CR is the data model:</para>
+
+      <para><itemizedlist>
+          <listitem>
+            <para>The main data storage abstraction of JCR's data model is a
+            workspace</para>
+          </listitem>
+
+          <listitem>
+            <para>Each repository should have one or more workspaces</para>
+          </listitem>
+
+          <listitem>
+            <para>The content is stored in a workspace as a hierarchy of
+            items</para>
+          </listitem>
+
+          <listitem>
+            <para>Each workspace has its own hierarchy of items</para>
+          </listitem>
+        </itemizedlist></para>
+
+      <figure>
+        <title>Item hierarchy</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata fileref="images/item-hierarchy.gif" />
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <para>Node is intended to support the data hierarchy. They are typed
+      using namespaced names which allows the content to be structured
+      according to standardized constraints. A node may be versioned through
+      an associated version graph (optional feature)</para>
+
+      <para>Property stored data are values of predefined types (String,
+      Binary, Long, Boolean, Double, Date, Reference, Path).</para>
+
+      <para>It is important to note that the data model for the interface (the
+      repository model) is rarely the same as the data models used by the
+      repository's underlying storage subsystems. The repository knows how to
+      make the client's changes persistent because that is part of the
+      repository configuration, rather than part of the application
+      programming task.</para>
+    </section>
+  </section>
+</chapter>

Modified: jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/jbosscache-configuration-templates.xml
===================================================================
--- jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/jbosscache-configuration-templates.xml	2010-02-18 15:27:16 UTC (rev 1903)
+++ jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/jbosscache-configuration-templates.xml	2010-02-18 15:38:57 UTC (rev 1904)
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter>
+<chapter id="ch_jbosscache_config_templates">
+
   <?dbhtml filename="jbosscache-configuration-templates.html"?>
 
   <title>JBoss Cache configuration</title>

Modified: jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/lock-manager-config.xml
===================================================================
--- jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/lock-manager-config.xml	2010-02-18 15:27:16 UTC (rev 1903)
+++ jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/lock-manager-config.xml	2010-02-18 15:38:57 UTC (rev 1904)
@@ -1,440 +1,442 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter>
-  <?dbhtml filename="lock-manager-config.html"?>
-
-  <title>LockManager configuration</title>
-
-  <section>
-    <title>Introduction</title>
-
-    <para>What LockManager does?</para>
-
-    <para>In common words, LockManager stores lock objects, so it can give
-    Lock object or can release it, etc.</para>
-
-    <para>Also LockManager is responsible for removing Locks that live too
-    long. This parameter may be configured with "time-out" property.</para>
-
-    <para>JCR provide two base implementation of LockManager:</para>
-
-    <itemizedlist>
-      <listitem>
-        <para>org.exoplatform.services.jcr.impl.core.lock.LockManagerImpl;</para>
-      </listitem>
-
-      <listitem>
-        <para>org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl;</para>
-      </listitem>
-    </itemizedlist>
-
-    <para>In this article we will talk mostly about
-    CacheableLockManagerImpl.</para>
-
-    <para>You can enable LockManager by adding lock-manager-configuration to
-    workspace-configuration.</para>
-
-    <para>For example:</para>
-
-    <programlisting>&lt;workspace name="ws"&gt;
-   ...
-   &lt;lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl"&gt;
-      &lt;properties&gt;
-         &lt;property name="time-out" value="15m" /&gt;
-         ...
-      &lt;/properties&gt;
-   &lt;/lock-manager&gt;               
-   ...
-&lt;/workspace&gt;</programlisting>
-  </section>
-
-  <section>
-    <title>LockManagerImpl</title>
-
-    <para>LockManagerImpl is simple implementation of LockManager, and also
-    faster than CacheableLockManager. It stores Lock objects in HashMap and
-    may also persist Locks if LockPersister is configured. LockManagerImpl do
-    not support replication in any way.</para>
-
-    <para>See <ulink
-    url="http://wiki.exoplatform.com/xwiki/bin/view/JCR/Configuration#HLockManagerconfiguration3A">LockManagerImpl
-    configuration</ulink></para>
-  </section>
-
-  <section>
-    <title>CacheableLockManagerImpl</title>
-
-    <para>CacheableLockManagerImpl stores Lock object in JBoss-cache, so Locks
-    are replicable and affects on cluster, not only a single node. Also
-    JBoss-cache has JDBCCacheLoader, so locks will be stored to
-    database.</para>
-
-    <para>Both implementation supports Expired Locks removing. There is
-    LockRemover - separate thread, that periodically ask LockManager for Locks
-    that lives to much and must be removed. So, timeout for LockRemover may be
-    set as follows, default value is 30m.</para>
-
-    <programlisting>&lt;properties&gt;
-   &lt;property name="time-out" value="10m" /&gt;
-   ...
-&lt;/properties&gt;</programlisting>
-
-    <section>
-      <title>Configuration</title>
-
-      <para>Replication requirements are same as for Cache</para>
-
-      <para>Full JCR configuration example you can see there <xref
-      linkend="sect_conf_cluster_jcr"/></para>
-
-      <para>Common tips:</para>
-
-      <itemizedlist>
-        <listitem>
-          <para>clusterName ("jbosscache-cluster-name") must be unique;</para>
-        </listitem>
-
-        <listitem>
-          <para>cache.jdbc.table.name must be unique per datasource;</para>
-        </listitem>
-
-        <listitem>
-          <para>cache.jdbc.fqn.type must and cache.jdbc.node.type must be
-          configured according to used database;</para>
-        </listitem>
-      </itemizedlist>
-
-      <para>There is few ways how to configure CacheableLockManagerImpl, and
-      all of them configures JBoss-cache and JDBCCacheLoader.</para>
-
-      <para>See <ulink
-      url="http://community.jboss.org/wiki/JBossCacheJDBCCacheLoader">http://community.jboss.org/wiki/JBossCacheJDBCCacheLoader</ulink></para>
-    </section>
-
-    <section>
-      <title>Simple JbossCache Configuraion</title>
-
-      <para>First one is - put JbossCache configuraion file path to
-      CacheableLockManagerImpl</para>
-
-      <para><note>
-          <para>This configuration is not so good, as you can think. Because
-          repository may contain many workspaces, and each workspace must
-          contain LockManager configuration, and LockManager config may
-          contain JbossCache config file. So total configuration is growing
-          up. But it is usefull if we want a single LockManager with special
-          configuration.</para>
-        </note></para>
-
-      <para>Config is:</para>
-
-      <programlisting>&lt;lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl"&gt;
-   &lt;properties&gt;
-     &lt;property name="time-out" value="15m" /&gt;
-     &lt;property name="jbosscache-configuration" value="conf/standalone/cluster/test-jbosscache-lock-config.xml" /&gt;
-   &lt;/properties&gt;
-&lt;/lock-manager&gt;</programlisting>
-
-      <para>test-jbosscache-lock-config.xml<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.2"&gt;
-
- &lt;locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false" lockAcquisitionTimeout="20000" /&gt;
-
- &lt;clustering mode="replication" clusterName="JBoss-Cache-Lock-Cluster_Name"&gt;
-  &lt;stateRetrieval timeout="20000" fetchInMemoryState="false" nonBlocking="true" /&gt;
-  &lt;jgroupsConfig&gt;
-
-   &lt;TCP bind_addr="127.0.0.1" start_port="9800" loopback="true" recv_buf_size="20000000" send_buf_size="640000" discard_incompatible_packets="true"
-    max_bundle_size="64000" max_bundle_timeout="30" use_incoming_packet_handler="true" enable_bundling="false" use_send_queues="false" sock_conn_timeout="300"
-    skip_suspected_members="true" use_concurrent_stack="true" thread_pool.enabled="true" thread_pool.min_threads="1" thread_pool.max_threads="25"
-    thread_pool.keep_alive_time="5000" thread_pool.queue_enabled="false" thread_pool.queue_max_size="100" thread_pool.rejection_policy="run"
-    oob_thread_pool.enabled="true" oob_thread_pool.min_threads="1" oob_thread_pool.max_threads="8" oob_thread_pool.keep_alive_time="5000"
-    oob_thread_pool.queue_enabled="false" oob_thread_pool.queue_max_size="100" oob_thread_pool.rejection_policy="run" /&gt;
-   &lt;MPING timeout="2000" num_initial_members="2" mcast_port="34540" bind_addr="127.0.0.1" mcast_addr="224.0.0.1" /&gt;
-
-
-   &lt;MERGE2 max_interval="30000" min_interval="10000" /&gt;
-   &lt;FD_SOCK /&gt;
-   &lt;FD max_tries="5" shun="true" timeout="10000" /&gt;
-   &lt;VERIFY_SUSPECT timeout="1500" /&gt;
-   &lt;pbcast.NAKACK discard_delivered_msgs="true" gc_lag="0" retransmit_timeout="300,600,1200,2400,4800" use_mcast_xmit="false" /&gt;
-   &lt;UNICAST timeout="300,600,1200,2400,3600" /&gt;
-   &lt;pbcast.STABLE desired_avg_gossip="50000" max_bytes="400000" stability_delay="1000" /&gt;
-   &lt;pbcast.GMS join_timeout="5000" print_local_addr="true" shun="false" view_ack_collection_timeout="5000" view_bundling="true" /&gt;
-   &lt;FRAG2 frag_size="60000" /&gt;
-   &lt;pbcast.STREAMING_STATE_TRANSFER /&gt;
-  &lt;pbcast.FLUSH timeout="0" /&gt;
-
-  &lt;/jgroupsConfig
-
-  &lt;sync /&gt;
- &lt;/clustering&gt;
-
- &lt;loaders passivation="false" shared="true"&gt;
-  &lt;preload&gt;
-   &lt;node fqn="/" /&gt;
-  &lt;/preload&gt;
-  &lt;loader class="org.jboss.cache.loader.JDBCCacheLoader" async="false" fetchPersistentState="false" ignoreModifications="false" purgeOnStartup="false"&gt;
-   &lt;properties&gt;
-    cache.jdbc.table.name=jcrlocks_ws
-    cache.jdbc.table.create=true
-    cache.jdbc.table.drop=false
-    cache.jdbc.table.primarykey=jcrlocks_ws_pk
-    cache.jdbc.fqn.column=fqn
-    cache.jdbc.fqn.type=VARCHAR(512)
-    cache.jdbc.node.column=node
-    cache.jdbc.node.type=&lt;BLOB&gt;  
-    cache.jdbc.parent.column=parent
-    cache.jdbc.datasource=jdbcjcr
-   &lt;/properties&gt;
-  &lt;/loader&gt;
-
- &lt;/loaders&gt;
-
-&lt;/jbosscache&gt;</programlisting></para>
-
-      <para>Configuration requirements:</para>
-
-      <itemizedlist>
-        <listitem>
-          <para>&lt;clustering mode="replication"
-          clusterName="JBoss-Cache-Lock-Cluster_Name"&gt; - cluster name must
-          be unique;</para>
-        </listitem>
-
-        <listitem>
-          <para><quote>cache.jdbc.table.name</quote> must be unique per
-          datasource;</para>
-        </listitem>
-
-        <listitem>
-          <para><quote>cache.jdbc.node.type</quote> and
-          <quote>cache.jdbc.fqn.type</quote> must be configured according to
-          using database. See <link endterm="datatypes.title"
-          linkend="datatypes"></link> .</para>
-        </listitem>
-      </itemizedlist>
-    </section>
-
-    <section>
-      <title>Template JBossCache Configuration</title>
-
-      <para>Second one is - use template JBoss-cache configuration for all
-      LockManagers</para>
-
-      <para><citetitle>Lock template configuration</citetitle></para>
-
-      <para>test-jbosscache-lock.xml</para>
-
-      <programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1"&gt;
-
-   &lt;locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false"
-      lockAcquisitionTimeout="20000" /&gt;
-
-   &lt;clustering mode="replication" clusterName="${jbosscache-cluster-name}"&gt;
-      &lt;stateRetrieval timeout="20000" fetchInMemoryState="false" /&gt;
-      &lt;jgroupsConfig multiplexerStack="jcr.stack" /&gt;
-      &lt;sync /&gt;
-   &lt;/clustering&gt;
-
-   &lt;loaders passivation="false" shared="true"&gt;
-      &lt;!-- All the data of the JCR locks needs to be loaded at startup --&gt;
-      &lt;preload&gt;
-         &lt;node fqn="/" /&gt;
-      &lt;/preload&gt;  
-      &lt;!--
-      For another cache-loader class you should use another template with
-      cache-loader specific parameters
-      -&gt;
-      &lt;loader class="org.jboss.cache.loader.JDBCCacheLoader" async=q"false" fetchPersistentState="false"
-         ignoreModifications="false" purgeOnStartup="false"&gt;
-         &lt;properties&gt;
-            cache.jdbc.table.name=${jbosscache-cl-cache.jdbc.table.name}
-            cache.jdbc.table.create=${jbosscache-cl-cache.jdbc.table.create}
-            cache.jdbc.table.drop=${jbosscache-cl-cache.jdbc.table.drop}
-            cache.jdbc.table.primarykey=${jbosscache-cl-cache.jdbc.table.primarykey}
-            cache.jdbc.fqn.column=${jbosscache-cl-cache.jdbc.fqn.column}
-            cache.jdbc.fqn.type=${jbosscache-cl-cache.jdbc.fqn.type}
-            cache.jdbc.node.column=${jbosscache-cl-cache.jdbc.node.column}
-            cache.jdbc.node.type=${jbosscache-cl-cache.jdbc.node.type}
-            cache.jdbc.parent.column=${jbosscache-cl-cache.jdbc.parent.column}
-            cache.jdbc.datasource=${jbosscache-cl-cache.jdbc.datasource}
-         &lt;/properties&gt;
-      &lt;/loader&gt;
-   &lt;/loaders&gt;
-&lt;/jbosscache&gt;</programlisting>
-
-      <para>As you see, all configurable paramaters filled by templates and
-      will be replaced by LockManagers conf parameters:</para>
-
-      <programlisting>&lt;lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl"&gt;
-   &lt;properties&gt;
-      &lt;property name="time-out" value="15m" /&gt;
-      &lt;property name="jbosscache-configuration" value="test-jbosscache-lock.xml" /&gt;
-      &lt;property name="jgroups-configuration" value="udp-mux.xml" /&gt;
-      &lt;property name="jgroups-multiplexer-stack" value="true" /&gt;
-      &lt;property name="jbosscache-cluster-name" value="JCR-cluster-locks-ws" /&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlocks_ws" /&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.table.create" value="true" /&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.table.drop" value="false" /&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.table.primarykey" value="jcrlocks_ws_pk" /&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.fqn.column" value="fqn" /&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.fqn.type" value="AUTO"/&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.node.column" value="node" /&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.node.type" value="AUTO"/&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.parent.column" value="parent" /&gt;
-      &lt;property name="jbosscache-cl-cache.jdbc.datasource" value="jdbcjcr" /&gt;
-   &lt;/properties&gt;
-&lt;/lock-manager&gt;</programlisting>
-
-      <para>Configuration requirements:<itemizedlist>
-          <listitem>
-            <para><quote>jbosscache-cl-cache.jdbc.fqn.column</quote> and
-            <quote>jbosscache-cl-cache.jdbc.node.type</quote> is nothing else
-            as cache.jdbc.fqn.type and cache.jdbc.node.type in JBoss-Cache
-            configuration. You can set those data types according to database
-            type (See <link endterm="datatypes.title"
-            linkend="datatypes"></link>) or set it as AUTO (or do not set at
-            all) and data type will by detected automaticaly.</para>
-          </listitem>
-
-          <listitem>
-            <para>as you see, jgroups-configuration moved to separate config
-            file - udp-mux.xml; In our case udp-mux.xml is common JGroup
-            config for all components (QueryHandler, cache, LockManager). But
-            we, still, can create own config.</para>
-          </listitem>
-        </itemizedlist></para>
-
-      <para>our-udp-mux.xml<programlisting>&lt;protocol_stacks&gt;
-   &lt;stack name="jcr.stack"&gt;
-      &lt;config&gt;
-         &lt;UDP mcast_addr="228.10.10.10" mcast_port="45588" tos="8" ucast_recv_buf_size="20000000"
-            ucast_send_buf_size="640000" mcast_recv_buf_size="25000000" mcast_send_buf_size="640000" loopback="false"
-            discard_incompatible_packets="true" max_bundle_size="64000" max_bundle_timeout="30"
-            use_incoming_packet_handler="true" ip_ttl="2" enable_bundling="true" enable_diagnostics="true"
-            thread_naming_pattern="cl" use_concurrent_stack="true" thread_pool.enabled="true" thread_pool.min_threads="2"
-            thread_pool.max_threads="8" thread_pool.keep_alive_time="5000" thread_pool.queue_enabled="true"
-            thread_pool.queue_max_size="1000" thread_pool.rejection_policy="discard" oob_thread_pool.enabled="true"
-            oob_thread_pool.min_threads="1" oob_thread_pool.max_threads="8" oob_thread_pool.keep_alive_time="5000"
-            oob_thread_pool.queue_enabled="false" oob_thread_pool.queue_max_size="100" oob_thread_pool.rejection_policy="Run" /&gt;
-
-         &lt;PING timeout="2000" num_initial_members="3" /&gt;
-         &lt;MERGE2 max_interval="30000" min_interval="10000" /&gt;
-         &lt;FD_SOCK /&gt;
-         &lt;FD timeout="10000" max_tries="5" shun="true" /&gt;
-         &lt;VERIFY_SUSPECT timeout="1500" /&gt;
-         &lt;BARRIER /&gt;
-         &lt;pbcast.NAKACK use_stats_for_retransmission="false" exponential_backoff="150" use_mcast_xmit="true"
-            gc_lag="0" retransmit_timeout="50,300,600,1200" discard_delivered_msgs="true" /&gt;
-         &lt;UNICAST timeout="300,600,1200" /&gt;
-         &lt;pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000" max_bytes="1000000" /&gt;
-         &lt;VIEW_SYNC avg_send_interval="60000" /&gt;
-         &lt;pbcast.GMS print_local_addr="true" join_timeout="3000" shun="false" view_bundling="true" /&gt;
-         &lt;FC max_credits="500000" min_threshold="0.20" /&gt;
-         &lt;FRAG2 frag_size="60000" /&gt;
-         &lt;!--pbcast.STREAMING_STATE_TRANSFER /--&gt;
-         &lt;pbcast.STATE_TRANSFER /&gt;
-         &lt;!-- pbcast.FLUSH  /--&gt;
-      &lt;/config&gt;
-   &lt;/stack&gt;
-&lt;/protocol_stacks&gt; </programlisting></para>
-    </section>
-
-    <section id="datatypes">
-      <title id="datatypes.title">Data Types in Different Databases</title>
-
-      <table>
-        <title>Fqn type and node type in different databases</title>
-
-        <tgroup cols="3">
-          <thead>
-            <row>
-              <entry>DataBase name</entry>
-
-              <entry>Node data type</entry>
-
-              <entry>FQN data type</entry>
-            </row>
-          </thead>
-
-          <tbody>
-            <row>
-              <entry>default</entry>
-
-              <entry>BLOB</entry>
-
-              <entry>VARCHAR(512)</entry>
-            </row>
-
-            <row>
-              <entry>HSSQL</entry>
-
-              <entry>OBJECT</entry>
-
-              <entry>VARCHAR(512)</entry>
-            </row>
-
-            <row>
-              <entry>MySQL</entry>
-
-              <entry>LONGBLOB</entry>
-
-              <entry>VARCHAR(512)</entry>
-            </row>
-
-            <row>
-              <entry>ORACLE</entry>
-
-              <entry>BLOB</entry>
-
-              <entry>VARCHAR2(512)</entry>
-            </row>
-
-            <row>
-              <entry>PostgreSQL</entry>
-
-              <entry>bytea</entry>
-
-              <entry>VARCHAR(512)</entry>
-            </row>
-
-            <row>
-              <entry>MSSQL</entry>
-
-              <entry>VARBINARY(MAX)</entry>
-
-              <entry>VARCHAR(512)</entry>
-            </row>
-
-            <row>
-              <entry>DB2</entry>
-
-              <entry>BLOB</entry>
-
-              <entry>VARCHAR(512)</entry>
-            </row>
-
-            <row>
-              <entry>Sybase</entry>
-
-              <entry>IMAGE</entry>
-
-              <entry>VARCHAR(512)</entry>
-            </row>
-
-            <row>
-              <entry>Ingres</entry>
-
-              <entry>long byte</entry>
-
-              <entry>VARCHAR(512)</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-    </section>
-  </section>
-</chapter>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="ch_lock_manager_config">
+  <?dbhtml filename="lock-manager-config.html"?>
+
+  <title>LockManager configuration</title>
+
+  <section>
+    <title>Introduction</title>
+
+    <para>What LockManager does?</para>
+
+    <para>In common words, LockManager stores lock objects, so it can give
+    Lock object or can release it, etc.</para>
+
+    <para>Also LockManager is responsible for removing Locks that live too
+    long. This parameter may be configured with "time-out" property.</para>
+
+    <para>JCR provide two base implementation of LockManager:</para>
+
+    <itemizedlist>
+      <listitem>
+        <para><classname>org.exoplatform.services.jcr.impl.core.lock.LockManagerImpl</classname>;</para>
+      </listitem>
+
+      <listitem>
+        <para><classname>org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl</classname>;</para>
+      </listitem>
+    </itemizedlist>
+
+    <para>In this article we will talk mostly about
+    CacheableLockManagerImpl.</para>
+
+    <para>You can enable LockManager by adding lock-manager-configuration to
+    workspace-configuration.</para>
+
+    <para>For example:</para>
+
+    <programlisting>&lt;workspace name="ws"&gt;
+   ...
+   &lt;lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl"&gt;
+      &lt;properties&gt;
+         &lt;property name="time-out" value="15m" /&gt;
+         ...
+      &lt;/properties&gt;
+   &lt;/lock-manager&gt;               
+   ...
+&lt;/workspace&gt;</programlisting>
+  </section>
+
+  <section>
+    <title>LockManagerImpl</title>
+
+    <para>LockManagerImpl is simple implementation of LockManager, and also
+    faster than CacheableLockManager. It stores Lock objects in HashMap and
+    may also persist Locks if LockPersister is configured. LockManagerImpl do
+    not support replication in any way.</para>
+
+    <para>See more about LockManager Configuration <link
+    linkend="ch_configuration">here</link>.</para>
+  </section>
+
+  <section>
+    <title>CacheableLockManagerImpl</title>
+
+    <para>CacheableLockManagerImpl stores Lock object in JBoss-cache, so Locks
+    are replicable and affects on cluster, not only a single node. Also
+    JBoss-cache has JDBCCacheLoader, so locks will be stored to
+    database.</para>
+
+    <para>Both implementation supports Expired Locks removing. There is
+    LockRemover - separate thread, that periodically ask LockManager for Locks
+    that lives to much and must be removed. So, timeout for LockRemover may be
+    set as follows, default value is 30m.</para>
+
+    <programlisting>&lt;properties&gt;
+   &lt;property name="time-out" value="10m" /&gt;
+   ...
+&lt;/properties&gt;</programlisting>
+
+    <section>
+      <title>Configuration</title>
+
+      <para>Replication requirements are same as for Cache</para>
+
+      <para>Full JCR configuration example you can see <link
+      linkend="sect_conf_cluster_jcr">here</link>.</para>
+
+      <para>Common tips:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para><parameter>clusterName</parameter> ("jbosscache-cluster-name")
+          must be unique;</para>
+        </listitem>
+
+        <listitem>
+          <para><parameter>cache.jdbc.table.name</parameter> must be unique
+          per datasource;</para>
+        </listitem>
+
+        <listitem>
+          <para><parameter>cache.jdbc.fqn.type</parameter> must and
+          cache.jdbc.node.type must be configured according to used
+          database;</para>
+        </listitem>
+      </itemizedlist>
+
+      <para>There is few ways how to configure CacheableLockManagerImpl, and
+      all of them configures JBoss-cache and JDBCCacheLoader.</para>
+
+      <para>See <ulink
+      url="http://community.jboss.org/wiki/JBossCacheJDBCCacheLoader">http://community.jboss.org/wiki/JBossCacheJDBCCacheLoader</ulink></para>
+    </section>
+
+    <section>
+      <title>Simple JbossCache Configuraion</title>
+
+      <para>First one is - put JbossCache configuraion file path to
+      CacheableLockManagerImpl</para>
+
+      <para><note>
+          <para>This configuration is not so good, as you can think. Because
+          repository may contain many workspaces, and each workspace must
+          contain LockManager configuration, and LockManager config may
+          contain JbossCache config file. So total configuration is growing
+          up. But it is usefull if we want a single LockManager with special
+          configuration.</para>
+        </note></para>
+
+      <para>Config is:</para>
+
+      <programlisting>&lt;lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl"&gt;
+   &lt;properties&gt;
+     &lt;property name="time-out" value="15m" /&gt;
+     &lt;property name="jbosscache-configuration" value="conf/standalone/cluster/test-jbosscache-lock-config.xml" /&gt;
+   &lt;/properties&gt;
+&lt;/lock-manager&gt;</programlisting>
+
+      <para><filename>test-jbosscache-lock-config.xml</filename><programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.2"&gt;
+
+ &lt;locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false" lockAcquisitionTimeout="20000" /&gt;
+
+ &lt;clustering mode="replication" clusterName="JBoss-Cache-Lock-Cluster_Name"&gt;
+  &lt;stateRetrieval timeout="20000" fetchInMemoryState="false" nonBlocking="true" /&gt;
+  &lt;jgroupsConfig&gt;
+
+   &lt;TCP bind_addr="127.0.0.1" start_port="9800" loopback="true" recv_buf_size="20000000" send_buf_size="640000" discard_incompatible_packets="true"
+    max_bundle_size="64000" max_bundle_timeout="30" use_incoming_packet_handler="true" enable_bundling="false" use_send_queues="false" sock_conn_timeout="300"
+    skip_suspected_members="true" use_concurrent_stack="true" thread_pool.enabled="true" thread_pool.min_threads="1" thread_pool.max_threads="25"
+    thread_pool.keep_alive_time="5000" thread_pool.queue_enabled="false" thread_pool.queue_max_size="100" thread_pool.rejection_policy="run"
+    oob_thread_pool.enabled="true" oob_thread_pool.min_threads="1" oob_thread_pool.max_threads="8" oob_thread_pool.keep_alive_time="5000"
+    oob_thread_pool.queue_enabled="false" oob_thread_pool.queue_max_size="100" oob_thread_pool.rejection_policy="run" /&gt;
+   &lt;MPING timeout="2000" num_initial_members="2" mcast_port="34540" bind_addr="127.0.0.1" mcast_addr="224.0.0.1" /&gt;
+
+
+   &lt;MERGE2 max_interval="30000" min_interval="10000" /&gt;
+   &lt;FD_SOCK /&gt;
+   &lt;FD max_tries="5" shun="true" timeout="10000" /&gt;
+   &lt;VERIFY_SUSPECT timeout="1500" /&gt;
+   &lt;pbcast.NAKACK discard_delivered_msgs="true" gc_lag="0" retransmit_timeout="300,600,1200,2400,4800" use_mcast_xmit="false" /&gt;
+   &lt;UNICAST timeout="300,600,1200,2400,3600" /&gt;
+   &lt;pbcast.STABLE desired_avg_gossip="50000" max_bytes="400000" stability_delay="1000" /&gt;
+   &lt;pbcast.GMS join_timeout="5000" print_local_addr="true" shun="false" view_ack_collection_timeout="5000" view_bundling="true" /&gt;
+   &lt;FRAG2 frag_size="60000" /&gt;
+   &lt;pbcast.STREAMING_STATE_TRANSFER /&gt;
+  &lt;pbcast.FLUSH timeout="0" /&gt;
+
+  &lt;/jgroupsConfig
+
+  &lt;sync /&gt;
+ &lt;/clustering&gt;
+
+ &lt;loaders passivation="false" shared="true"&gt;
+  &lt;preload&gt;
+   &lt;node fqn="/" /&gt;
+  &lt;/preload&gt;
+  &lt;loader class="org.jboss.cache.loader.JDBCCacheLoader" async="false" fetchPersistentState="false" ignoreModifications="false" purgeOnStartup="false"&gt;
+   &lt;properties&gt;
+    cache.jdbc.table.name=jcrlocks_ws
+    cache.jdbc.table.create=true
+    cache.jdbc.table.drop=false
+    cache.jdbc.table.primarykey=jcrlocks_ws_pk
+    cache.jdbc.fqn.column=fqn
+    cache.jdbc.fqn.type=VARCHAR(512)
+    cache.jdbc.node.column=node
+    cache.jdbc.node.type=&lt;BLOB&gt;  
+    cache.jdbc.parent.column=parent
+    cache.jdbc.datasource=jdbcjcr
+   &lt;/properties&gt;
+  &lt;/loader&gt;
+
+ &lt;/loaders&gt;
+
+&lt;/jbosscache&gt;</programlisting></para>
+
+      <para>Configuration requirements:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>&lt;clustering mode="replication"
+          clusterName="JBoss-Cache-Lock-Cluster_Name"&gt; - cluster name must
+          be unique;</para>
+        </listitem>
+
+        <listitem>
+          <para><parameter>cache.jdbc.table.name</parameter> must be unique
+          per datasource;</para>
+        </listitem>
+
+        <listitem>
+          <para><parameter>cache.jdbc.node.type</parameter> and
+          <parameter>cache.jdbc.fqn.type</parameter> must be configured
+          according to using database. See <link endterm="datatypes.title"
+          linkend="datatypes"></link> .</para>
+        </listitem>
+      </itemizedlist>
+    </section>
+
+    <section>
+      <title>Template JBossCache Configuration</title>
+
+      <para>Second one is - use template JBoss-cache configuration for all
+      LockManagers</para>
+
+      <para><citetitle>Lock template configuration</citetitle></para>
+
+      <para><filename>test-jbosscache-lock.xml</filename></para>
+
+      <programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1"&gt;
+
+   &lt;locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false"
+      lockAcquisitionTimeout="20000" /&gt;
+
+   &lt;clustering mode="replication" clusterName="${jbosscache-cluster-name}"&gt;
+      &lt;stateRetrieval timeout="20000" fetchInMemoryState="false" /&gt;
+      &lt;jgroupsConfig multiplexerStack="jcr.stack" /&gt;
+      &lt;sync /&gt;
+   &lt;/clustering&gt;
+
+   &lt;loaders passivation="false" shared="true"&gt;
+      &lt;!-- All the data of the JCR locks needs to be loaded at startup --&gt;
+      &lt;preload&gt;
+         &lt;node fqn="/" /&gt;
+      &lt;/preload&gt;  
+      &lt;!--
+      For another cache-loader class you should use another template with
+      cache-loader specific parameters
+      -&gt;
+      &lt;loader class="org.jboss.cache.loader.JDBCCacheLoader" async=q"false" fetchPersistentState="false"
+         ignoreModifications="false" purgeOnStartup="false"&gt;
+         &lt;properties&gt;
+            cache.jdbc.table.name=${jbosscache-cl-cache.jdbc.table.name}
+            cache.jdbc.table.create=${jbosscache-cl-cache.jdbc.table.create}
+            cache.jdbc.table.drop=${jbosscache-cl-cache.jdbc.table.drop}
+            cache.jdbc.table.primarykey=${jbosscache-cl-cache.jdbc.table.primarykey}
+            cache.jdbc.fqn.column=${jbosscache-cl-cache.jdbc.fqn.column}
+            cache.jdbc.fqn.type=${jbosscache-cl-cache.jdbc.fqn.type}
+            cache.jdbc.node.column=${jbosscache-cl-cache.jdbc.node.column}
+            cache.jdbc.node.type=${jbosscache-cl-cache.jdbc.node.type}
+            cache.jdbc.parent.column=${jbosscache-cl-cache.jdbc.parent.column}
+            cache.jdbc.datasource=${jbosscache-cl-cache.jdbc.datasource}
+         &lt;/properties&gt;
+      &lt;/loader&gt;
+   &lt;/loaders&gt;
+&lt;/jbosscache&gt;</programlisting>
+
+      <para>As you see, all configurable paramaters filled by templates and
+      will be replaced by LockManagers conf parameters:</para>
+
+      <programlisting>&lt;lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl"&gt;
+   &lt;properties&gt;
+      &lt;property name="time-out" value="15m" /&gt;
+      &lt;property name="jbosscache-configuration" value="test-jbosscache-lock.xml" /&gt;
+      &lt;property name="jgroups-configuration" value="udp-mux.xml" /&gt;
+      &lt;property name="jgroups-multiplexer-stack" value="true" /&gt;
+      &lt;property name="jbosscache-cluster-name" value="JCR-cluster-locks-ws" /&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlocks_ws" /&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.table.create" value="true" /&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.table.drop" value="false" /&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.table.primarykey" value="jcrlocks_ws_pk" /&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.fqn.column" value="fqn" /&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.fqn.type" value="AUTO"/&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.node.column" value="node" /&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.node.type" value="AUTO"/&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.parent.column" value="parent" /&gt;
+      &lt;property name="jbosscache-cl-cache.jdbc.datasource" value="jdbcjcr" /&gt;
+   &lt;/properties&gt;
+&lt;/lock-manager&gt;</programlisting>
+
+      <para>Configuration requirements:<itemizedlist>
+          <listitem>
+            <para><parameter>jbosscache-cl-cache.jdbc.fqn.column</parameter>
+            and <parameter>jbosscache-cl-cache.jdbc.node.type</parameter> is
+            nothing else as cache.jdbc.fqn.type and cache.jdbc.node.type in
+            JBoss-Cache configuration. You can set those data types according
+            to database type (See <link endterm="datatypes.title"
+            linkend="datatypes"></link>) or set it as AUTO (or do not set at
+            all) and data type will by detected automaticaly.</para>
+          </listitem>
+
+          <listitem>
+            <para>as you see, jgroups-configuration moved to separate config
+            file - udp-mux.xml; In our case udp-mux.xml is common JGroup
+            config for all components (QueryHandler, cache, LockManager). But
+            we, still, can create own config.</para>
+          </listitem>
+        </itemizedlist></para>
+
+      <para><filename>our-udp-mux.xml</filename><programlisting>&lt;protocol_stacks&gt;
+   &lt;stack name="jcr.stack"&gt;
+      &lt;config&gt;
+         &lt;UDP mcast_addr="228.10.10.10" mcast_port="45588" tos="8" ucast_recv_buf_size="20000000"
+            ucast_send_buf_size="640000" mcast_recv_buf_size="25000000" mcast_send_buf_size="640000" loopback="false"
+            discard_incompatible_packets="true" max_bundle_size="64000" max_bundle_timeout="30"
+            use_incoming_packet_handler="true" ip_ttl="2" enable_bundling="true" enable_diagnostics="true"
+            thread_naming_pattern="cl" use_concurrent_stack="true" thread_pool.enabled="true" thread_pool.min_threads="2"
+            thread_pool.max_threads="8" thread_pool.keep_alive_time="5000" thread_pool.queue_enabled="true"
+            thread_pool.queue_max_size="1000" thread_pool.rejection_policy="discard" oob_thread_pool.enabled="true"
+            oob_thread_pool.min_threads="1" oob_thread_pool.max_threads="8" oob_thread_pool.keep_alive_time="5000"
+            oob_thread_pool.queue_enabled="false" oob_thread_pool.queue_max_size="100" oob_thread_pool.rejection_policy="Run" /&gt;
+
+         &lt;PING timeout="2000" num_initial_members="3" /&gt;
+         &lt;MERGE2 max_interval="30000" min_interval="10000" /&gt;
+         &lt;FD_SOCK /&gt;
+         &lt;FD timeout="10000" max_tries="5" shun="true" /&gt;
+         &lt;VERIFY_SUSPECT timeout="1500" /&gt;
+         &lt;BARRIER /&gt;
+         &lt;pbcast.NAKACK use_stats_for_retransmission="false" exponential_backoff="150" use_mcast_xmit="true"
+            gc_lag="0" retransmit_timeout="50,300,600,1200" discard_delivered_msgs="true" /&gt;
+         &lt;UNICAST timeout="300,600,1200" /&gt;
+         &lt;pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000" max_bytes="1000000" /&gt;
+         &lt;VIEW_SYNC avg_send_interval="60000" /&gt;
+         &lt;pbcast.GMS print_local_addr="true" join_timeout="3000" shun="false" view_bundling="true" /&gt;
+         &lt;FC max_credits="500000" min_threshold="0.20" /&gt;
+         &lt;FRAG2 frag_size="60000" /&gt;
+         &lt;!--pbcast.STREAMING_STATE_TRANSFER /--&gt;
+         &lt;pbcast.STATE_TRANSFER /&gt;
+         &lt;!-- pbcast.FLUSH  /--&gt;
+      &lt;/config&gt;
+   &lt;/stack&gt;
+&lt;/protocol_stacks&gt; </programlisting></para>
+    </section>
+
+    <section id="datatypes">
+      <title id="datatypes.title">Data Types in Different Databases</title>
+
+      <table>
+        <title>Fqn type and node type in different databases</title>
+
+        <tgroup cols="3">
+          <thead>
+            <row>
+              <entry>DataBase name</entry>
+
+              <entry>Node data type</entry>
+
+              <entry>FQN data type</entry>
+            </row>
+          </thead>
+
+          <tbody>
+            <row>
+              <entry>default</entry>
+
+              <entry>BLOB</entry>
+
+              <entry>VARCHAR(512)</entry>
+            </row>
+
+            <row>
+              <entry>HSSQL</entry>
+
+              <entry>OBJECT</entry>
+
+              <entry>VARCHAR(512)</entry>
+            </row>
+
+            <row>
+              <entry>MySQL</entry>
+
+              <entry>LONGBLOB</entry>
+
+              <entry>VARCHAR(512)</entry>
+            </row>
+
+            <row>
+              <entry>ORACLE</entry>
+
+              <entry>BLOB</entry>
+
+              <entry>VARCHAR2(512)</entry>
+            </row>
+
+            <row>
+              <entry>PostgreSQL</entry>
+
+              <entry>bytea</entry>
+
+              <entry>VARCHAR(512)</entry>
+            </row>
+
+            <row>
+              <entry>MSSQL</entry>
+
+              <entry>VARBINARY(MAX)</entry>
+
+              <entry>VARCHAR(512)</entry>
+            </row>
+
+            <row>
+              <entry>DB2</entry>
+
+              <entry>BLOB</entry>
+
+              <entry>VARCHAR(512)</entry>
+            </row>
+
+            <row>
+              <entry>Sybase</entry>
+
+              <entry>IMAGE</entry>
+
+              <entry>VARCHAR(512)</entry>
+            </row>
+
+            <row>
+              <entry>Ingres</entry>
+
+              <entry>long byte</entry>
+
+              <entry>VARCHAR(512)</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </table>
+    </section>
+  </section>
+</chapter>

Modified: jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/query-handler-config.xml
===================================================================
--- jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/query-handler-config.xml	2010-02-18 15:27:16 UTC (rev 1903)
+++ jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/query-handler-config.xml	2010-02-18 15:38:57 UTC (rev 1904)
@@ -1,187 +1,194 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter>
-  <?dbhtml filename="query-handler-config.html"?>
-  <title>QueryHandler configuration</title>
-
-  <section>
-    <title>How does it work?</title>
-
-    <para>Lets talk about indexing content in cluster.</para>
-
-    <para>For couple of reasons, we can't replicate index. That's means, some
-    data added and indexed on one cluster node, will be replicated to another
-    cluster node, but will not be indexed on that node.</para>
-
-    <para><citetitle>So, how do the indexing works in cluster
-    environment?</citetitle></para>
-
-    <para>As, we can not index same data on all nodes of cluster, we must
-    index it on one node. Node, that can index data and do changes on lucene
-    index, is called "coordinator". Coordinator-node is choosen automaticaly,
-    so we do not need special configuration for coordinator.</para>
-
-    <para>But, how can another nodes save their changes to lucene
-    index?</para>
-
-    <para>First of all, data is already saved and replicated to another
-    cluster-nodes, so we need only deliver message like "we need to index this
-    data" to coordinator. Thats why Jboss-cache is used.</para>
-
-    <para>All nodes of cluster writes messages into JBoss-cache but only
-    coordinator takes those messages and makes changes Lucene index.</para>
-
-    <para><citetitle>How do the search works in cluster
-    environment?</citetitle></para>
-
-    <para>Search engine do not works with indexer, coordinator, etc. Search
-    needs only lucene index. But only one cluster node can change lucene index
-    - asking you. Yes - lucene index is shared. So, all cluster nodes must be
-    configured to use lucene index from shared directory.</para>
-
-    <para>A little bit about indexing process (no matter, cluster or not)
-    Indexer do not writes changes to FS lucene index immediately. At first,
-    Indexer writes changes to Volatile index. If Volatile index size become
-    1Mb or more it is flushed to FS. Also there is timer, that flushes
-    volatile index by timeout. Volatile index timeout configured by
-    "max-volatile-time" paremeter.</para>
-
-    <para>Common scheme of Shared Index<mediaobject>
-        <imageobject>
-          <imagedata fileref="images/diagram-shared-index.png" />
-        </imageobject>
-      </mediaobject></para>
-  </section>
-
-  <section>
-    <title>Configuration</title>
-
-    <section>
-      <title>Common requirements</title>
-
-      <para>Now, lets see what we need to run Search engine in cluster
-      environment.<itemizedlist>
-          <listitem>
-            <para>shared directory for storing Lucene index (i.e. NFS);</para>
-          </listitem>
-
-          <listitem>
-            <para>changes filter configured as
-            org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter;</para>
-
-            <note>
-              <para>This filter ignore changes on non-coordinator nodes, and
-              index changes on coordinator node.</para>
-            </note>
-          </listitem>
-
-          <listitem>
-            <para>configure JBoss-cache, course;</para>
-          </listitem>
-        </itemizedlist></para>
-    </section>
-
-    <section>
-      <title>Query-handler configuration</title>
-
-      <para>Configuration example:<programlisting>&lt;workspace name="ws"&gt;
-   &lt;query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex"&gt;
-      &lt;properties&gt;
-         &lt;property name="index-dir" value="shareddir/index/db1/ws" /&gt;
-         &lt;property name="changesfilter-class"
-            value="org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter" /&gt;
-         &lt;property name="jbosscache-configuration" value="jbosscache-indexer.xml" /&gt;
-         &lt;property name="jgroups-configuration" value="udp-mux.xml" /&gt;
-         &lt;property name="jgroups-multiplexer-stack" value="true" /&gt;
-         &lt;property name="jbosscache-cluster-name" value="JCR-cluster-indexer-ws" /&gt;
-         &lt;property name="max-volatile-time" value="60" /&gt;
-      &lt;/properties&gt;
-   &lt;/query-handler&gt;
-&lt;/workspace&gt;</programlisting> <table>
-          <title>Config properties description</title>
-
-          <tgroup cols="2">
-            <thead>
-              <row>
-                <entry>Property name</entry>
-
-                <entry>Description</entry>
-              </row>
-            </thead>
-
-            <tbody>
-              <row>
-                <entry>index-dir</entry>
-
-                <entry>path to index</entry>
-              </row>
-
-              <row>
-                <entry>jbosscache-configuration</entry>
-
-                <entry>template of JBoss-cache configuration for all
-                query-handlers in repository</entry>
-              </row>
-
-              <row>
-                <entry>jgroups-configuration</entry>
-
-                <entry>jgroups-configuration is template configuration for all
-                components (search, cache, locks) [Add link to document
-                describing template configurations]</entry>
-              </row>
-
-              <row>
-                <entry>jgroups-multiplexer-stack</entry>
-
-                <entry>[TODO about jgroups-multiplexer-stack - add link to
-                JBoss doc]</entry>
-              </row>
-
-              <row>
-                <entry>jbosscache-cluster-name</entry>
-
-                <entry>cluster name (must be unique)</entry>
-              </row>
-
-              <row>
-                <entry>max-volatile-time</entry>
-
-                <entry>max time to live for Volatile Index</entry>
-              </row>
-            </tbody>
-          </tgroup>
-        </table></para>
-    </section>
-
-    <section>
-      <title>JBoss-Cache template configuration</title>
-
-      <para>JBoss-Cache template configuration for query handler.</para>
-
-      <para>jbosscache-indexer.xml<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1"&gt;
-
-   &lt;locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false"
-      lockAcquisitionTimeout="20000" /&gt;
-   &lt;!-- Configure the TransactionManager --&gt;
-   &lt;transaction transactionManagerLookupClass="org.jboss.cache.transaction.JBossStandaloneJTAManagerLookup" /&gt;
-
-   &lt;clustering mode="replication" clusterName="${jbosscache-cluster-name}"&gt;
-      &lt;stateRetrieval timeout="20000" fetchInMemoryState="false" /&gt;
-      &lt;jgroupsConfig multiplexerStack="jcr.stack" /&gt;
-      &lt;sync /&gt;
-   &lt;/clustering&gt;
-   &lt;!-- Eviction configuration --&gt;
-   &lt;eviction wakeUpInterval="5000"&gt;
-      &lt;default algorithmClass="org.jboss.cache.eviction.FIFOAlgorithm" eventQueueSize="1000000"&gt;
-         &lt;property name="maxNodes" value="10000" /&gt;
-         &lt;property name="minTimeToLive" value="60000" /&gt;
-      &lt;/default&gt;
-   &lt;/eviction&gt;
-
-&lt;/jbosscache&gt;</programlisting></para>
-    </section>
-  </section>
-</chapter>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="ch_query_handler_config">
+  <?dbhtml filename="query-handler-config.html"?>
+
+  <title>QueryHandler configuration</title>
+
+  <section>
+    <title>How does it work?</title>
+
+    <para>Lets talk about indexing content in cluster.</para>
+
+    <para>For couple of reasons, we can't replicate index. That's means, some
+    data added and indexed on one cluster node, will be replicated to another
+    cluster node, but will not be indexed on that node.</para>
+
+    <para><citetitle>So, how do the indexing works in cluster
+    environment?</citetitle></para>
+
+    <para>As, we can not index same data on all nodes of cluster, we must
+    index it on one node. Node, that can index data and do changes on lucene
+    index, is called "coordinator". Coordinator-node is choosen automaticaly,
+    so we do not need special configuration for coordinator.</para>
+
+    <para>But, how can another nodes save their changes to lucene
+    index?</para>
+
+    <para>First of all, data is already saved and replicated to another
+    cluster-nodes, so we need only deliver message like "we need to index this
+    data" to coordinator. Thats why Jboss-cache is used.</para>
+
+    <para>All nodes of cluster writes messages into JBoss-cache but only
+    coordinator takes those messages and makes changes Lucene index.</para>
+
+    <para><citetitle>How do the search works in cluster
+    environment?</citetitle></para>
+
+    <para>Search engine do not works with indexer, coordinator, etc. Search
+    needs only lucene index. But only one cluster node can change lucene index
+    - asking you. Yes - lucene index is shared. So, all cluster nodes must be
+    configured to use lucene index from shared directory.</para>
+
+    <para>A little bit about indexing process (no matter, cluster or not)
+    Indexer do not writes changes to FS lucene index immediately. At first,
+    Indexer writes changes to Volatile index. If Volatile index size become
+    1Mb or more it is flushed to FS. Also there is timer, that flushes
+    volatile index by timeout. Volatile index timeout configured by
+    "max-volatile-time" paremeter.</para>
+
+    <para>See more about <link linkend="ch_search_configuration">Search
+    Configuration</link>.</para>
+
+    <para>Common scheme of Shared Index<mediaobject>
+        <imageobject>
+          <imagedata fileref="images/diagram-shared-index.png" />
+        </imageobject>
+      </mediaobject></para>
+  </section>
+
+  <section>
+    <title>Configuration</title>
+
+    <section>
+      <title>Common requirements</title>
+
+      <para>Now, lets see what we need to run Search engine in cluster
+      environment.<itemizedlist>
+          <listitem>
+            <para>shared directory for storing Lucene index (i.e. NFS);</para>
+          </listitem>
+
+          <listitem>
+            <para>changes filter configured as
+            org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter;</para>
+
+            <note>
+              <para>This filter ignore changes on non-coordinator nodes, and
+              index changes on coordinator node.</para>
+            </note>
+          </listitem>
+
+          <listitem>
+            <para>configure JBoss-cache, course;</para>
+          </listitem>
+        </itemizedlist></para>
+    </section>
+
+    <section>
+      <title>Query-handler configuration</title>
+
+      <para>Configuration example:<programlisting>&lt;workspace name="ws"&gt;
+   &lt;query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex"&gt;
+      &lt;properties&gt;
+         &lt;property name="index-dir" value="shareddir/index/db1/ws" /&gt;
+         &lt;property name="changesfilter-class"
+            value="org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter" /&gt;
+         &lt;property name="jbosscache-configuration" value="jbosscache-indexer.xml" /&gt;
+         &lt;property name="jgroups-configuration" value="udp-mux.xml" /&gt;
+         &lt;property name="jgroups-multiplexer-stack" value="true" /&gt;
+         &lt;property name="jbosscache-cluster-name" value="JCR-cluster-indexer-ws" /&gt;
+         &lt;property name="max-volatile-time" value="60" /&gt;
+      &lt;/properties&gt;
+   &lt;/query-handler&gt;
+&lt;/workspace&gt;</programlisting> <table>
+          <title>Config properties description</title>
+
+          <tgroup cols="2">
+            <thead>
+              <row>
+                <entry>Property name</entry>
+
+                <entry>Description</entry>
+              </row>
+            </thead>
+
+            <tbody>
+              <row>
+                <entry>index-dir</entry>
+
+                <entry>path to index</entry>
+              </row>
+
+              <row>
+                <entry>jbosscache-configuration</entry>
+
+                <entry>template of JBoss-cache configuration for all
+                query-handlers in repository</entry>
+              </row>
+
+              <row>
+                <entry>jgroups-configuration</entry>
+
+                <entry>jgroups-configuration is template configuration for all
+                components (search, cache, locks) [Add link to document
+                describing template configurations]</entry>
+              </row>
+
+              <row>
+                <entry>jgroups-multiplexer-stack</entry>
+
+                <entry>[TODO about jgroups-multiplexer-stack - add link to
+                JBoss doc]</entry>
+              </row>
+
+              <row>
+                <entry>jbosscache-cluster-name</entry>
+
+                <entry>cluster name (must be unique)</entry>
+              </row>
+
+              <row>
+                <entry>max-volatile-time</entry>
+
+                <entry>max time to live for Volatile Index</entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </table></para>
+    </section>
+
+    <section>
+      <title>JBoss-Cache template configuration</title>
+
+      <para>JBoss-Cache template configuration for query handler.</para>
+
+      <para>jbosscache-indexer.xml<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1"&gt;
+
+   &lt;locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false"
+      lockAcquisitionTimeout="20000" /&gt;
+   &lt;!-- Configure the TransactionManager --&gt;
+   &lt;transaction transactionManagerLookupClass="org.jboss.cache.transaction.JBossStandaloneJTAManagerLookup" /&gt;
+
+   &lt;clustering mode="replication" clusterName="${jbosscache-cluster-name}"&gt;
+      &lt;stateRetrieval timeout="20000" fetchInMemoryState="false" /&gt;
+      &lt;jgroupsConfig multiplexerStack="jcr.stack" /&gt;
+      &lt;sync /&gt;
+   &lt;/clustering&gt;
+   &lt;!-- Eviction configuration --&gt;
+   &lt;eviction wakeUpInterval="5000"&gt;
+      &lt;default algorithmClass="org.jboss.cache.eviction.FIFOAlgorithm" eventQueueSize="1000000"&gt;
+         &lt;property name="maxNodes" value="10000" /&gt;
+         &lt;property name="minTimeToLive" value="60000" /&gt;
+      &lt;/default&gt;
+   &lt;/eviction&gt;
+
+&lt;/jbosscache&gt;</programlisting></para>
+
+      <para>See more about template configurations <link
+      linkend="ch_jbosscache_config_templates">here</link>.</para>
+    </section>
+  </section>
+</chapter>



More information about the exo-jcr-commits mailing list