gatein SVN: r7876 - portal/trunk/web/eXoResources/src/main/webapp/skin/DefaultSkin/webui/component/UIWizard.
by do-not-reply@jboss.org
Author: haint
Date: 2011-10-25 22:46:46 -0400 (Tue, 25 Oct 2011)
New Revision: 7876
Modified:
portal/trunk/web/eXoResources/src/main/webapp/skin/DefaultSkin/webui/component/UIWizard/Stylesheet.css
Log:
GTNPORTAL-2223 Can't select Invitation Space in UIWizardPageSetInfo
Modified: portal/trunk/web/eXoResources/src/main/webapp/skin/DefaultSkin/webui/component/UIWizard/Stylesheet.css
===================================================================
--- portal/trunk/web/eXoResources/src/main/webapp/skin/DefaultSkin/webui/component/UIWizard/Stylesheet.css 2011-10-26 00:44:57 UTC (rev 7875)
+++ portal/trunk/web/eXoResources/src/main/webapp/skin/DefaultSkin/webui/component/UIWizard/Stylesheet.css 2011-10-26 02:46:46 UTC (rev 7876)
@@ -308,4 +308,6 @@
.UIWizard .TreeContainer {
height: 259px;
-}
\ No newline at end of file
+ overflow-x: hidden;
+ overflow-y: auto;
+}
13 years, 2 months
gatein SVN: r7875 - in epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr: backup and 3 other directories.
by do-not-reply@jboss.org
Author: smumford
Date: 2011-10-25 20:44:57 -0400 (Tue, 25 Oct 2011)
New Revision: 7875
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/backup-client.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/backup-clonsole-dist.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/exojcr-backup-service.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/use-external-backup-tool.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-exo-implementation.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-extensions.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-namespace-altering.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-usage.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/nodetype-registration.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/configuration/jdbc-data-container-config.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/data-container.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/acl-ext.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/acl.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/link-producer.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/repository-creation-service.xml
Log:
Updates from edit sweep of JCR 1.14 content
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/backup-client.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/backup-client.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/backup-client.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -4,174 +4,174 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client">
- <title><literal>HTTPBackupAgent</literal> and Backup Client</title>
- <warning>
- <title>Configuration Persistance</title>
- <para>
- To use this service, you should configure the <literal>org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister</literal> in order to save the changes of the repository configuration.
- </para>
+ <title><literal>HTTPBackupAgent</literal> and Backup Client</title>
+ <warning>
+ <title>Configuration Persistance</title>
+ <para>
+ To use this service, you should configure the <literal>org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister</literal> in order to save the changes of the repository configuration.
+ </para>
- </warning>
- <note>
- <title>URI Context</title>
- <para>
- JBoss Enterprise Portal Platform uses context <uri>/portal/rest</uri>, therefore you need to use <uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/portal/rest/</uri> instread of <uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/rest/</uri>
- </para>
- <para>
- JBoss Enterprise Portal Platform uses form authentication, so first you need to login (<uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/portal/login</uri>) and then perform requests.
- </para>
+ </warning>
+ <note>
+ <title>URI Context</title>
+ <para>
+ JBoss Enterprise Portal Platform uses context <uri>/portal/rest</uri>, therefore you need to use <uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/portal/rest/</uri> instread of <uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/rest/</uri>
+ </para>
+ <para>
+ JBoss Enterprise Portal Platform uses form authentication, so first you need to login (<uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/portal/login</uri>) and then perform requests.
+ </para>
- </note>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Introduction">
- <title>Introduction</title>
- <para>
- The <literal>org.exoplatform.services.jcr.ext.backup.server.HTTPBackupAgent</literal> service is REST-based front-end to <literal>rg.exoplatform.services.jcr.ext.backup.BackupManager</literal>.
- </para>
- <para>
- <literal>HTTPBackupAgent</literal> is representation <literal>BackupManager</literal> to create backups, restore and/or fetch status of current or completed backup/restore, etc.
- </para>
- <para>
- The backup client is an <literal>http</literal> client for <literal>HTTPBackupAgent</literal>.
- </para>
+ </note>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Introduction">
+ <title>Introduction</title>
+ <para>
+ The <literal>org.exoplatform.services.jcr.ext.backup.server.HTTPBackupAgent</literal> service is REST-based front-end to <literal>rg.exoplatform.services.jcr.ext.backup.BackupManager</literal>.
+ </para>
+ <para>
+ <literal>HTTPBackupAgent</literal> is representation <literal>BackupManager</literal> to create backups, restore and/or fetch status of current or completed backup/restore, etc.
+ </para>
+ <para>
+ The backup client is an <literal>HTTP</literal> client for <literal>HTTPBackupAgent</literal>.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-HTTPBackupAgent_">
- <title><literal>HTTPBackupAgent</literal> </title>
- <para>
- The <literal>HTTPBackupAgent</literal> is based on REST and uses POST and GET methods for request.
- </para>
- <para>
- The <literal>HTTPBackupAgent</literal> allows you to:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Start a backup.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-HTTPBackupAgent_">
+ <title><literal>HTTPBackupAgent</literal> </title>
+ <para>
+ The <literal>HTTPBackupAgent</literal> is based on REST and uses <literal>POST</literal> and <literal>GET</literal> methods for request.
+ </para>
+ <para>
+ The <literal>HTTPBackupAgent</literal> allows you to:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Start a backup.
+ </para>
- </listitem>
- <listitem>
- <para>
- Stop a backup.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Stop a backup.
+ </para>
- </listitem>
- <listitem>
- <para>
- Restore from a backup.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Restore from a backup.
+ </para>
- </listitem>
- <listitem>
- <para>
- Delete the workspace.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Delete the workspace.
+ </para>
- </listitem>
- <listitem>
- <para>
- Get information about backup service (via <application>BackupManager</application>)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Get information about backup service (via <application>BackupManager</application>)
+ </para>
- </listitem>
- <listitem>
- <para>
- Get information about current backup or restore processes as well as information about completed backups
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Get information about current backup or restore processes as well as information about completed backups
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_-Methods">
- <title>Methods</title>
- <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Starting_Backup_Service">
- <title>Starting Backup Service</title>
- <varlistentry>
- <term>/rest/jcr-backup/start/{repo}/{ws}</term>
- <listitem>
- <para>
- Start backup on specific workspace
- </para>
+ </itemizedlist>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_-Methods">
+ <title>Methods</title>
+ <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Starting_Backup_Service">
+ <title>Starting Backup Service</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/start/{repo}/{ws}</term>
+ <listitem>
+ <para>
+ Start backup on specific workspace
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>URL:</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/start/{repo}/{ws}</uri>
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>URL:</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/start/{repo}/{ws}</uri>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Formats:</term>
- <listitem>
- <para>
- json.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats:</term>
+ <listitem>
+ <para>
+ json.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Method:</term>
- <listitem>
- <para>
- Post.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Method:</term>
+ <listitem>
+ <para>
+ Post.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Parameters:</term>
- <listitem>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>{repo}</term>
- <listitem>
- <para>
- The repository name;
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters:</term>
+ <listitem>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>{repo}</term>
+ <listitem>
+ <para>
+ The repository name;
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>{ws}</term>
- <listitem>
- <para>
- The workspace name;
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>{ws}</term>
+ <listitem>
+ <para>
+ The workspace name;
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>BackupConfigBean</term>
- <listitem>
- <para>
- The JSON to <literal>BackupConfigBean</literal>.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>BackupConfigBean</term>
+ <listitem>
+ <para>
+ The JSON to <literal>BackupConfigBean</literal>.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
+ </variablelist>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>The BackupConfigBean</term>
- <listitem>
-
+ </varlistentry>
+ <varlistentry>
+ <term>The BackupConfigBean</term>
+ <listitem>
+
<programlisting language="Java" role="java">header :
"Content-Type" = "application/json; charset=UTF-8"
@@ -179,21 +179,21 @@
<JSON to BackupConfigBean>
</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.BackupConfigBean</literal>:</term>
- <listitem>
-
+ </varlistentry>
+ <varlistentry>
+ <term>JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.BackupConfigBean</literal>:</term>
+ <listitem>
+
<programlisting language="Java" role="java">{"incrementalRepetitionNumber":<Integer>,"incrementalBackupJobConfig":<JSON to BackupJobConfig>,
"backupType":<Integer>,"fullBackupJobConfig":<JSON to BackupJobConfig>,
"incrementalJobPeriod":<Long>,"backupDir":"<String>"}
</programlisting>
- <para>
- As explained by the following help output:
- </para>
-
+ <para>
+ As explained by the following help output:
+ </para>
+
<programlisting>backupType - the type of backup:
0 - full backup only;
1 - full and incremental backup.
@@ -203,368 +203,368 @@
fullBackupJobConfig - the configuration to full backup, JSON to BackupJobConfig;
incrementalJobPeriod - the configuration to incremental backup, JSON to BackupJobConfig.</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.BackupJobConfig</literal></term>
- <listitem>
-
+ </varlistentry>
+ <varlistentry>
+ <term>JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.BackupJobConfig</literal></term>
+ <listitem>
+
<programlisting>{"parameters":[<JSON to Pair>, ..., <JSON to pair> ],"backupJob":"<String>"}</programlisting>
- <para>
- Where:
- </para>
-
+ <para>
+ Where:
+ </para>
+
<programlisting>backupJob - the FQN (fully qualified name) to BackupJob class;
parameters - the list of JSON of Pair.</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.Pair</literal></term>
- <listitem>
-
+ </varlistentry>
+ <varlistentry>
+ <term>The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.Pair</literal></term>
+ <listitem>
+
<programlisting language="Java">{"name":"<String>","value":"<String>"}</programlisting>
- <para>
- Where:
- </para>
-
+ <para>
+ Where:
+ </para>
+
<programlisting>name - the name of parameter;
value - the value of parameter.</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Returns:</term>
- <listitem>
- <para>
- When successful:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Returns:</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+
<programlisting>status code = 200</programlisting>
- <para>
- When unsuccessful:
- </para>
-
+ <para>
+ When unsuccessful:
+ </para>
+
<programlisting>status code = 404 - the not found repositry '{repo}' or workspace '{ws}'
status code = 500 - the other unknown errors
failure message in response - the description of failure</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Stopping_Backup_Service">
- <title>Stopping Backup Service</title>
- <varlistentry>
- <term>/rest/jcr-backup/stop/{id}</term>
- <listitem>
- <para>
- Stop backup with identifier {id}.
- </para>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Stopping_Backup_Service">
+ <title>Stopping Backup Service</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/stop/{id}</term>
+ <listitem>
+ <para>
+ Stop backup with identifier {id}.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>URL:</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/stop/{id}</uri>
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>URL:</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/stop/{id}</uri>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- Plain text.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ Plain text.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Method</term>
- <listitem>
- <para>
- GET
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Method</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- {id} - the identifier of backup
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ {id} - the identifier of backup
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+
<programlisting>status code = 200</programlisting>
- <para>
- When unsuccessful:
- </para>
-
+ <para>
+ When unsuccessful:
+ </para>
+
<programlisting>status code = 404 - the no active backup with identifier {id}
status code = 500 - the other unknown errors
failure message in response - the description of failure</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Backup_Info_Service">
- <title>Backup Info Service</title>
- <varlistentry>
- <term>/rest/jcr-backup/info</term>
- <listitem>
- <para>
- Information about the backup service.
- </para>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Backup_Info_Service">
+ <title>Backup Info Service</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info</term>
+ <listitem>
+ <para>
+ Information about the backup service.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info</uri>
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info</uri>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Method</term>
- <listitem>
- <para>
- GET
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Method</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- None
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ None
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- Return the JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.BackupServiceInfoBean</literal>
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ Return the JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.BackupServiceInfoBean</literal>
+ </para>
+
<programlisting>{"backupLogDir":"<String>","defaultIncrementalJobPeriod":<Long>,"fullBackupType":"<String>","incrementalBackupType":"<String>"}</programlisting>
- <para>
- Where:
- </para>
-
+ <para>
+ Where:
+ </para>
+
<programlisting>fullBackupType - the FQN (fully qualified name) of BackupJob class for full backup type;
incrementalBackupType - the FQN (fully qualified name) of BackupJob class for incremental backup type;
backupLogDir - path to backup folder;
defaultIncrementalJobPeriod - the default incremental job period.</programlisting>
- <para>
- When unsuccessful:
- </para>
-
+ <para>
+ When unsuccessful:
+ </para>
+
<programlisting>status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Dropping_Workspace_Service">
- <title>Dropping Workspace Service</title>
- <varlistentry>
- <term>/rest/jcr-backup/drop-workspace/{repo}/{ws}/{force-session-close}</term>
- <listitem>
- <para>
- Delete the workspace from repository /{repo}/{ws}. With this service, you can delete any workspaces regardless of whether the workspace is a backup or has been copied to a backup.
- </para>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Dropping_Workspace_Service">
+ <title>Dropping Workspace Service</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/drop-workspace/{repo}/{ws}/{force-session-close}</term>
+ <listitem>
+ <para>
+ Delete the workspace from repository /{repo}/{ws}. With this service, you can delete any workspaces regardless of whether the workspace is a backup or has been copied to a backup.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/drop-workspace/{repo}/{ws}/{force-sessio...</uri>
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/drop-workspace/{repo}/{ws}/{force-sessio...</uri>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- Plain text.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ Plain text.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Methods</term>
- <listitem>
- <para>
- GET
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Methods</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- {repo} - the repository name;
- </para>
- <para>
- {ws} - the workspace name
- </para>
- <para>
- {force-session-close} - the boolean value : <emphasis role="bold">true</emphasis> - the open sessions on workspace will be closed; <emphasis role="bold">false</emphasis> - will not close open sessions.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ {repo} - the repository name;
+ </para>
+ <para>
+ {ws} - the workspace name
+ </para>
+ <para>
+ {force-session-close} - the boolean value : <emphasis role="bold">true</emphasis> - the open sessions on workspace will be closed; <emphasis role="bold">false</emphasis> - will not close open sessions.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+
<programlisting>status code = 200</programlisting>
- <para>
- When unsuccessful:
- </para>
-
+ <para>
+ When unsuccessful:
+ </para>
+
<programlisting>status code = 500 - the other unknown errors;
- not found repositry '{repo}' or workspace '{ws}'
failure message in response - the description of failure</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Backup_Info">
- <title>Backup Info</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/backup</term>
- <listitem>
- <para>
- Information about the current and completed backups.
- </para>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Backup_Info">
+ <title>Backup Info</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/backup</term>
+ <listitem>
+ <para>
+ Information about the current and completed backups.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/backup</uri>
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/backup</uri>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Method</term>
- <listitem>
- <para>
- GET
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Method</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- None.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ None.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal>:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal>:
+ </para>
+
<programlisting>{"backups":[<JSON to ShortInfo>,<JSON to ShortInfo>,...,<JSON to ShortInfo>]}</programlisting>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfo</literal>:
- </para>
-
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfo</literal>:
+ </para>
+
<programlisting>{"startedTime":"<String>","backupId":"<String>","type":<Integer>,"state":<Integer>,"backupType":<Integer>,
"workspaceName":"<String>","finishedTime":"<String>","repositoryName":"<String>"}</programlisting>
- <para>
- Where:
- </para>
-
+ <para>
+ Where:
+ </para>
+
<programlisting>type - the type of ShortInfo :
0 - the ShorInfo to completed backup;
-1 - the ShorInfo to current (active) backup.
@@ -596,309 +596,309 @@
2 - successful;
3 - failure;
4 - initialized.</programlisting>
- <para>
- When unsuccessful:
- </para>
-
+ <para>
+ When unsuccessful:
+ </para>
+
<programlisting>status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Current_Backups_Information">
- <title>Current Backups Information</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/backup/current</term>
- <listitem>
- <para>
- Information about the current backups.
- </para>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Current_Backups_Information">
+ <title>Current Backups Information</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/backup/current</term>
+ <listitem>
+ <para>
+ Information about the current backups.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/backup/current</uri>
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/backup/current</uri>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Method</term>
- <listitem>
- <para>
- GET
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Method</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- None.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ None.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see the <emphasis>role="bold">/rest/jcr-backup/info/backup</emphasis> item)
- </para>
- <para>
- When unsuccessful:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see the <emphasis>role="bold">/rest/jcr-backup/info/backup</emphasis> item)
+ </para>
+ <para>
+ When unsuccessful:
+ </para>
+
<programlisting>status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Completed_Backups_Information">
- <title>Completed Backups Information</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/backup/completed</term>
- <listitem>
- <para>
- Information about the completed backups.
- </para>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Completed_Backups_Information">
+ <title>Completed Backups Information</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/backup/completed</term>
+ <listitem>
+ <para>
+ Information about the completed backups.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/backup/completed</uri>
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/backup/completed</uri>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Method</term>
- <listitem>
- <para>
- GET
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Method</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- None
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ None
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>).
- </para>
- <para>
- When unsuccessful:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>).
+ </para>
+ <para>
+ When unsuccessful:
+ </para>
+
<programlisting>status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Workspace_specific_Backup_Information">
- <title>Workspace-specific Backup Information</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/backup/{repo}/{ws}</term>
- <listitem>
- <para>
- Information about the current and completed backups for specific workspace.
- </para>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Workspace_specific_Backup_Information">
+ <title>Workspace-specific Backup Information</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/backup/{repo}/{ws}</term>
+ <listitem>
+ <para>
+ Information about the current and completed backups for specific workspace.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>URI</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/backup/{repo}/{ws}</uri>
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>URI</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/backup/{repo}/{ws}</uri>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Method</term>
- <listitem>
- <para>
- GET
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Method</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- {repo} - the repository name
- </para>
- <para>
- {ws} - the workspace name
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ {repo} - the repository name
+ </para>
+ <para>
+ {ws} - the workspace name
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>).
- </para>
- <para>
- When unsuccessful:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>).
+ </para>
+ <para>
+ When unsuccessful:
+ </para>
+
<programlisting>status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Single_Backup_Information">
- <title>Single Backup Information</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/backup/{id}</term>
- <listitem>
- <para>
- Detailed information about a current or completed backup with identifier '{id}'.
- </para>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Single_Backup_Information">
+ <title>Single Backup Information</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/backup/{id}</term>
+ <listitem>
+ <para>
+ Detailed information about a current or completed backup with identifier '{id}'.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/backup/{id}</uri>
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/backup/{id}</uri>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Method</term>
- <listitem>
- <para>
- GET
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Method</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- {id} - the identifier of backup.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ {id} - the identifier of backup.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.DetailedInfo</literal>:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.DetailedInfo</literal>:
+ </para>
+
<programlisting>{"backupConfig":<JSON to BackupConfigBean>,"startedTime":"<String>","backupId":"<String>","type":<Integer>,
"state":<Integer>,"backupType":<Integer>,"workspaceName":"<String>","finishedTime":"<String>",
"repositoryName":"<String>"}</programlisting>
- <para>
- Where:
- </para>
-
+ <para>
+ Where:
+ </para>
+
<programlisting>type - the type of DetailedInfo :
0 - the DetailedInfo to completed backup;
-1 - the DetailedInfo to current (active) backup;
@@ -932,236 +932,236 @@
2 - successful;
3 - failure;
4 - initialized.</programlisting>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.BackupConfigBean</literal> (see item <emphasis role="bold">/rest/jcr-backup/start/{repo}/{ws}</emphasis>).
- </para>
- <para>
- When unsuccessful:
- </para>
-
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.BackupConfigBean</literal> (see item <emphasis role="bold">/rest/jcr-backup/start/{repo}/{ws}</emphasis>).
+ </para>
+ <para>
+ When unsuccessful:
+ </para>
+
<programlisting>status code = 404 - not found the backup with {id}
status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Restores_on_a_Workspace_Information">
- <title>Restores on a Workspace Information</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/restore/{repo}/{ws}</term>
- <listitem>
- <para>
- The information about the last restore on a specific workspace <literal>/{repo}/{ws}</literal>.
- </para>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Restores_on_a_Workspace_Information">
+ <title>Restores on a Workspace Information</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/restore/{repo}/{ws}</term>
+ <listitem>
+ <para>
+ The information about the last restore on a specific workspace <literal>/{repo}/{ws}</literal>.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/restore/{repo}/{ws}</uri>
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/restore/{repo}/{ws}</uri>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Methods</term>
- <listitem>
- <para>
- GET
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Methods</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- {repo} - the repository name.
- </para>
- <para>
- {ws} - the workspace name.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ {repo} - the repository name.
+ </para>
+ <para>
+ {ws} - the workspace name.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.DetailedInfo</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup/{id}</emphasis>).
- </para>
- <para>
- When unsuccessful:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.DetailedInfo</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup/{id}</emphasis>).
+ </para>
+ <para>
+ When unsuccessful:
+ </para>
+
<programlisting>status code = 404 - the not found the restore for workspace /{repo}/{ws}
status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Restores_Information">
- <title>Restores Information</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/restores</term>
- <listitem>
- <para>
- The information about the last restores.
- </para>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Restores_Information">
+ <title>Restores Information</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/restores</term>
+ <listitem>
+ <para>
+ The information about the last restores.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/restores</uri>
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/restores</uri>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Methods</term>
- <listitem>
- <para>
- GET
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Methods</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- None.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ None.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>).
- </para>
- <para>
- When unsuccessful:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>).
+ </para>
+ <para>
+ When unsuccessful:
+ </para>
+
<programlisting>status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Restoring_Service">
- <title>Restoring Service</title>
- <varlistentry>
- <term>/rest/jcr-backup/restore/{repo}/{id}</term>
- <listitem>
- <para>
- Restore the workspace from specific backup.
- </para>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Restoring_Service">
+ <title>Restoring Service</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/restore/{repo}/{id}</term>
+ <listitem>
+ <para>
+ Restore the workspace from specific backup.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/restore/{repo}/{id}</uri>
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/restore/{repo}/{id}</uri>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Methods</term>
- <listitem>
- <para>
- POST
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Methods</term>
+ <listitem>
+ <para>
+ <literal>POST</literal>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- {repo} - the repository name;
- </para>
- <para>
- {id} - the identifier to backup; * WorkspaceEntry - the JSON to WorkspaceEntry.
- </para>
- <para>
- The RestoreBean:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ {repo} - the repository name;
+ </para>
+ <para>
+ {id} - the identifier to backup; * WorkspaceEntry - the JSON to WorkspaceEntry.
+ </para>
+ <para>
+ The RestoreBean:
+ </para>
+
<programlisting>header :
"Content-Type" = "application/json; charset=UTF-8"
body:
<JSON to WorkspaceEntry></programlisting>
- <para>
- The example of JSON bean to <literal>org.exoplatform.services.jcr.config.WorkspaceEntry</literal>:
- </para>
-
+ <para>
+ The example of JSON bean to <literal>org.exoplatform.services.jcr.config.WorkspaceEntry</literal>:
+ </para>
+
<programlisting>{ "accessManager" : null,
"autoInitPermissions" : null,
"autoInitializedRootNt" : null,
@@ -1255,96 +1255,96 @@
"uniqueName" : "repository_production"
}</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+
<programlisting>status code = 200</programlisting>
- <para>
- Return the JSON bean <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfo</literal> of just started restore. For JSON description see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>.
- </para>
- <para>
- When unsuccessful:
- </para>
-
+ <para>
+ Return the JSON bean <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfo</literal> of just started restore. For JSON description see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>.
+ </para>
+ <para>
+ When unsuccessful:
+ </para>
+
<programlisting>status code = 403 - the already was restore to workspace /{repo}/{ws}
status code = 404 - the not found repositry '{repo}' or unsupported encoding to workspaceConfig
status code = 500 - the other unknown errors
failure message in response - the description of failure</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Default_Workspace_Information">
- <title>Default Workspace Information</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/default-ws-config</term>
- <listitem>
- <para>
- Will be returned the JSON bean to WorkspaceEntry for default workspace.
- </para>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Methods-Default_Workspace_Information">
+ <title>Default Workspace Information</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/default-ws-config</term>
+ <listitem>
+ <para>
+ Will be returned the JSON bean to WorkspaceEntry for default workspace.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/default-ws-config</uri>
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/default-ws-config</uri>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Methods</term>
- <listitem>
- <para>
- GET
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Methods</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- None.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ None.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean to <literal>org.exoplatform.services.jcr.config.WorkspaceEntry</literal>:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean to <literal>org.exoplatform.services.jcr.config.WorkspaceEntry</literal>:
+ </para>
+
<programlisting>{ "accessManager" : null,
"autoInitPermissions" : null,
"autoInitializedRootNt" : null,
@@ -1437,27 +1437,27 @@
},
"uniqueName" : "repository_production"
}</programlisting>
- <para>
- When unsuccessful:
- </para>
-
+ <para>
+ When unsuccessful:
+ </para>
+
<programlisting>status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
+ </variablelist>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_-HTTPBackupAgent_Configuration">
- <title>HTTPBackupAgent Configuration</title>
- <para>
- Add the components org.exoplatform.services.jcr.ext.backup.server.HTTPBackupAgent and org.exoplatform.services.jcr.ext.backup.BackupManager to services configuration :
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_-HTTPBackupAgent_Configuration">
+ <title>HTTPBackupAgent Configuration</title>
+ <para>
+ Add the components <literal>org.exoplatform.services.jcr.ext.backup.server.HTTPBackupAgent</literal> and <literal>org.exoplatform.services.jcr.ext.backup.BackupManager</literal> to services configuration:
+ </para>
+
<programlisting language="XML"><component>
<type>org.exoplatform.services.jcr.ext.backup.server.HTTPBackupAgent</type>
</component>
@@ -1479,10 +1479,10 @@
</properties-param>
</init-params>
</component></programlisting>
- <para>
- In case, if you will restore backup in same workspace (so you will drop previous workspace), you need configure RepositoryServiceConfiguration in order to save the changes of the repository configuration. For example
- </para>
-
+ <para>
+ In case, if you will restore backup in same workspace (so you will drop previous workspace), you need configure <literal>RepositoryServiceConfiguration</literal> in order to save the changes of the repository configuration. For example:
+ </para>
+
<programlisting language="XML"><component>
<key>org.exoplatform.services.jcr.config.RepositoryServiceConfiguration</key>
<type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl</type>
@@ -1502,38 +1502,38 @@
</init-params>
</component></programlisting>
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Backup_Client">
- <title>Backup Client</title>
- <note>
- <para>
- For GateIn should use context "/portal/rest". GateIn uses form authentication, so first you need to login (url to form authentication is http://host:port/portal/login) and then perform requests.
- </para>
- <para>
- </para>
- <para>
- Backup client is support form authentication. For example call command "info" with form authentication to GateIn :
- </para>
- <para>
- ./jcrbackup.sh http://127.0.0.1:8080/portal/rest form POST "/portal/login?initialURI=/portal/private&username=root&password=gtn" info
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Backup_Client">
+ <title>Backup Client</title>
+ <note>
+ <para>
+ For JBoss Enterprise Portal Platform you should use context "<emphasis>/portal/rest</emphasis>". JBoss Enterprise Portal Platform uses form authentication, so first you need to login (url to form authentication is <uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/<replaceable>portal</replaceable>/login</uri>) and then perform requests.
+ </para>
+ <para>
+ </para>
+ <para>
+ The backup client supports form authentication. For example, the following would call the <emphasis>info</emphasis> command with form authentication to JBoss Enterprise Portal Platform :
+ </para>
+ <para>
+ <command>./jcrbackup.sh http://127.0.0.1:8080/portal/rest form POST "/portal/login?initialURI=/portal/private&username=root&password=gtn" info</command>
+ </para>
- </note>
- <para>
- Backup client is console application.
- </para>
- <para>
- The backup client is http client for HTTPBackupAgent.
- </para>
- <para>
- Command signature:
- </para>
-
-<programlisting>Help info:
+ </note>
+ <para>
+ The backup client is a console application.
+ </para>
+ <para>
+ The backup client is an <literal>HTTP</literal> client for <literal>HTTPBackupAgent</literal>.
+ </para>
+ <para>
+ Command signature:
+ </para>
+
+<screen>Help info:
<url_basic_authentication>|<url form authentication> <cmd>
<url_basic_authentication> : http(s)//login:password@host:port/<context>
@@ -1571,64 +1571,64 @@
<incr> - incemental job period
<pathToConfigFile> - path (local) to repository or workspace configuration
remove-exists - removed fully (db, value storage, index) existed repository/workspace
- force-close-session - close opened sessions on repositpry or workspace.</programlisting>
+ force-close-session - close opened sessions on repositpry or workspace.</screen>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Building_and_Running_Application">
- <title>Building and Running Application</title>
- <note>
- <title>Document Convention</title>
- <para>
- <filename><replaceable><JCR_SRC_HOME></replaceable></filename> the path where eXo JCR sources are located.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Building_and_Running_Application">
+ <title>Building and Running Application</title>
+ <note>
+ <title>Document Convention</title>
+ <para>
+ <filename><replaceable><JCR_SRC_HOME></replaceable></filename> the path where eXo JCR sources are located.
+ </para>
- </note>
- <procedure>
- <title></title>
- <step>
- <para>
- Go to folder of "backup client" <filename><replaceable><JCR_SRC_HOME></replaceable>/applications/exo.jcr.applications.backupconsole</filename>.
- </para>
+ </note>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Navigate to the backup client directory; <filename><replaceable><JCR_SRC_HOME></replaceable>/applications/exo.jcr.applications.backupconsole</filename>.
+ </para>
- </step>
- <step>
- <para>
- Build the application with:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Build the application with:
+ </para>
+
<programlisting><command>mvn clean install -P deploy</command></programlisting>
- </step>
- <step>
- <para>
- Go to <emphasis role="bold">${JCR-SRC-HOME}/applications/exo.jcr.applications.backupconsole/target/backupconsole-binary</emphasis>.
- </para>
+ </step>
+ <step>
+ <para>
+ Navigate to <emphasis role="bold">${JCR-SRC-HOME}/applications/exo.jcr.applications.backupconsole/target/backupconsole-binary</emphasis>.
+ </para>
- </step>
- <step>
- <para>
- Run the jar with:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Run the jar with:
+ </para>
+
<programlisting><command>java -jar exo.jcr.applications.backupconsole-binary.jar <command></command></programlisting>
- <para>
- Alternatively, use jcrbackup.cmd (or .sh);
- </para>
+ <para>
+ Alternatively, use jcrbackup.cmd (or .sh);
+ </para>
- </step>
+ </step>
- </procedure>
-
- <para>
- Get information about the backup service with:
- </para>
-
+ </procedure>
+
+ <para>
+ Get information about the backup service with:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 info</command></programlisting>
- <para>
- Which will return output similar to:
- </para>
-
+ <para>
+ Which will return output similar to:
+ </para>
+
<screen>The backup service information :
full backup type : org.exoplatform.services.jcr.ext.backup.impl.fs.FullBackupJob
incremetal backup type : org.exoplatform.services.jcr.ext.backup.impl.fs.IncrementalBackupJob
@@ -1636,44 +1636,44 @@
default incremental job period : 3600
</screen>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Starting_Backups">
- <title>Starting Backups</title>
- <para>
- To start a full backup only on the workspace called "backup", pass the parameter <parameter><bakcup_dir></parameter> (<parameter>../temp/backup</parameter>) to the command:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Starting_Backups">
+ <title>Starting Backups</title>
+ <para>
+ To start a full backup only on the workspace called "backup", pass the parameter <parameter><bakcup_dir></parameter> (<parameter>../temp/backup</parameter>) to the command:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 start /repository/backup ../temp/backup</command></programlisting>
- <para>
- Which will return output similar to:
- </para>
-
+ <para>
+ Which will return output similar to:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- <para>
- To start a full and incremental backup on the workspace called "production" add the increment integer to the command:
- </para>
-
+ <para>
+ To start a full and incremental backup on the workspace called "production" add the increment integer to the command:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 start /repository/production ../temp/backup 10000</command></programlisting>
- <para>
- Which will return output similar to:
- </para>
-
+ <para>
+ Which will return output similar to:
+ </para>
+
<screen>
Successful :
tatus code = 200
</screen>
- <para>
- To get information about the current backups in progress, run the command:
- </para>
-
+ <para>
+ To get information about the current backups in progress, run the command:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 list</command></programlisting>
- <para>
- The output will look similar to:
- </para>
-
+ <para>
+ The output will look similar to:
+ </para>
+
<screen>The current backups information :
1) Backup with id b46370107f000101014b03ea5fbe8d54 :
repository name : repository
@@ -1689,15 +1689,15 @@
full backup state : finished
started time : Fri, 17 Apr 2009 17:02:41 EEST
</screen>
- <para>
- To get information about individual backups, pass the id to the application:
- </para>
-
+ <para>
+ To get information about individual backups, pass the id to the application:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 status b46370107f000101014b03ea5fbe8d54</command></programlisting>
- <para>
- Which will print the following details:
- </para>
-
+ <para>
+ Which will print the following details:
+ </para>
+
<screen>The current backup information :
backup id : b46370107f000101014b03ea5fbe8d54
backup folder : /home/rainf0x/java/exo-working/JCR-839/new_JCR/exo-tomcat/bin/../temp/backup
@@ -1708,15 +1708,15 @@
incremental backup state : working
started time : Fri, 17 Apr 2009 17:03:16 EEST
</screen>
- <para>
- To get information about the completed (ready to restore) backups, use the following command:
- </para>
-
+ <para>
+ To get information about the completed (ready to restore) backups, use the following command:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 list completed</command></programlisting>
- <para>
- Which will return:
- </para>
-
+ <para>
+ Which will return:
+ </para>
+
<screen>The completed (ready to restore) backups information :
1) Backup with id adf6fadc7f00010100053b2cba43513c :
repository name : repository
@@ -1737,43 +1737,43 @@
started time : Thu, 16 Apr 2009 14:51:08 EEST
</screen>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Stopping_Backups">
- <title>Stopping Backups</title>
- <para>
- Stop an individual backup with the following command:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Stopping_Backups">
+ <title>Stopping Backups</title>
+ <para>
+ Stop an individual backup with the following command:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 stop <backup_id></command></programlisting>
- <para>
- You will see the following output:
- </para>
-
+ <para>
+ You will see the following output:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Restoring">
- <title>Restoring</title>
- <important>
- <title>Linebreaks</title>
- <para>
- The linebreaks in the commands below are for rendering purposes only. Run the commands as a single line unless otherwise instructed.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Restoring">
+ <title>Restoring</title>
+ <important>
+ <title>Linebreaks</title>
+ <para>
+ The linebreaks in the commands below are for rendering purposes only. Run the commands as a single line unless otherwise instructed.
+ </para>
- </important>
- <para>
- Restore to the workspace called "backup3", you need the <replaceable><backup_id></replaceable> of a completed backup and the path to the file with the workspace configuration:
- </para>
-
+ </important>
+ <para>
+ Restore to the workspace called "backup3", you need the <replaceable><backup_id></replaceable> of a completed backup and the path to the file with the workspace configuration:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository/backup3 <backup_id> /path/to/exo-jcr-config_backup.xml</command></programlisting>
- <para>
- An example configuration file is included for reference:
- </para>
-
+ <para>
+ An example configuration file is included for reference:
+ </para>
+
<programlisting language="XML" role="XML"><repository-service default-repository="repository">
<repositories>
<repository name="repository" system-workspace="production" default-workspace="production">
@@ -1825,22 +1825,22 @@
</repositories>
</repository-service>
</programlisting>
- <para>
- A successful restoration will return the following:
- </para>
-
+ <para>
+ A successful restoration will return the following:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- <para>
- To get information about about the current restore for <filename>/repository/backup3</filename> workspace:
- </para>
-
+ <para>
+ To get information about about the current restore for <filename>/repository/backup3</filename> workspace:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restores</command></programlisting>
- <para>
- Which will print the following details:
- </para>
-
+ <para>
+ Which will print the following details:
+ </para>
+
<screen>The current restores information :
1) Restore with id 6c302adc7f00010100df88d29535c6ee:
full backup date : 2009-04-03T16:34:37.394+03:00
@@ -1851,182 +1851,182 @@
path to backup folder : /home/rainf0x/java/exo-working/JCR-839/exo-tomcat/bin/../temp/backup
restore state : successful
</screen>
- <para>
- To restore to the workspace "backup" and completely remove an existing workspace from the database, value storage and index, you need the <replaceable><backup_id></replaceable> of a completed backup and path to the file with the workspace configuration:
- </para>
-
+ <para>
+ To restore to the workspace "backup" and completely remove an existing workspace from the database, value storage and index, you need the <replaceable><backup_id></replaceable> of a completed backup and path to the file with the workspace configuration:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists /repository/backup <backup_id> /path/to/exo-jcr-config_backup.xml</command></programlisting>
- <para>
- A successful restoration will return:
- </para>
-
+ <para>
+ A successful restoration will return:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- <para>
- To restore to the "backup" workspace from a backup set, you need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder on the server side) of completed backups and the path to the configuration file for the workspace:
- </para>
-
+ <para>
+ To restore to the "backup" workspace from a backup set, you need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder on the server side) of completed backups and the path to the configuration file for the workspace:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository/backup /tmp/123/repository_backup-20101220_114156 /path/to/exo-jcr-config_backup.xml</command></programlisting>
- <para>
- A successful restoration will return:
- </para>
-
+ <para>
+ A successful restoration will return:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- <para>
- To restore to the workspace "backup" and completely remove an existing workspace, you need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder on the server side) of completed backups and the path to the configuration file for the workspace:
- </para>
-
+ <para>
+ To restore to the workspace "backup" and completely remove an existing workspace, you need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder on the server side) of completed backups and the path to the configuration file for the workspace:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists /repository/backup /repository/backup /tmp/123/repository_backup-20101220_114156 /path/to/exo-jcr-config_backup.xml</command></programlisting>
- <para>
- A successful restoration will return:
- </para>
-
+ <para>
+ A successful restoration will return:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- <para>
- To restore to the "backup" workspace with an original configuration (which was stored in backup set), you need the <replaceable><backup_id></replaceable> of the appropriate completed backup:
- </para>
-
+ <para>
+ To restore to the "backup" workspace with an original configuration (which was stored in backup set), you need the <replaceable><backup_id></replaceable> of the appropriate completed backup:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore <backup_id></command></programlisting>
- <para>
- A successful restoration will return:
- </para>
-
+ <para>
+ A successful restoration will return:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- <para>
- To restore to the workspace "backup" with an original configuration and completely remove the existing workspace, execute the above command and include the <parameter>remove-exists</parameter> switch:
- </para>
-
+ <para>
+ To restore to the workspace "backup" with an original configuration and completely remove the existing workspace, execute the above command and include the <parameter>remove-exists</parameter> switch:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists <backup_id></command></programlisting>
- <para>
- A successful restoration will output:
- </para>
-
+ <para>
+ A successful restoration will output:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- <para>
- To restore a repository you will need the <replaceable><backup_id></replaceable> of a completed backup and path to the configuration file of the repository:
- </para>
-
+ <para>
+ To restore a repository you will need the <replaceable><backup_id></replaceable> of a completed backup and path to the configuration file of the repository:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository <backup_id> /home/rainf0x/java/exo-working/JCR-839/exo-jcr-config.xml</command></programlisting>
- <para>
- A successful restoration will print:
- </para>
-
+ <para>
+ A successful restoration will print:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- <para>
- To restore a repository and completely remove an existing repository, add the <parameter>remove-exists</parameter> parameter to the above command:
- </para>
-
+ <para>
+ To restore a repository and completely remove an existing repository, add the <parameter>remove-exists</parameter> parameter to the above command:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists /repository <backup_id> /home/rainf0x/java/exo-working/JCR-839/exo-jcr-config.xml</command></programlisting>
- <para>
- Return:
- </para>
-
+ <para>
+ Return:
+ </para>
+
<programlisting>Successful :
status code = 200</programlisting>
- <para>
- To restore to a repository called "repository" from backup set, you need need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder, on the server side) of a completed backup and the path to the repository configuration file:
- </para>
-
+ <para>
+ To restore to a repository called "repository" from backup set, you need need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder, on the server side) of a completed backup and the path to the repository configuration file:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository /tmp/123/repository_repository_backup_1292833493681 /home/rainf0x/java/exo-working/JCR-839/exo-jcr-config.xml</command></programlisting>
- <para>
- If successful the above command will return:
- </para>
-
+ <para>
+ If successful the above command will return:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- <para>
- To restore to a repository called "repository" from a backup set and completely remove an existing repository from the database, value storage and index, you will need the <replaceable><backup_set_path></replaceable> of a completed backup and the path to the file with repository's configuration:
- </para>
-
+ <para>
+ To restore to a repository called "repository" from a backup set and completely remove an existing repository from the database, value storage and index, you will need the <replaceable><backup_set_path></replaceable> of a completed backup and the path to the file with repository's configuration:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists /repository /repository/backup /tmp/123/repository_repository_backup_1292833493681 /home/rainf0x/java/exo-working/JCR-839/exo-jcr-config.xml</command></programlisting>
- <para>
- The application will print the following if successful:
- </para>
-
+ <para>
+ The application will print the following if successful:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- <para>
- To restore to a repository called "repository" with an original configuration of repository (provided the original configuration was stored in a backup set):
- </para>
-
+ <para>
+ To restore to a repository called "repository" with an original configuration of repository (provided the original configuration was stored in a backup set):
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore <backup_id></command></programlisting>
- <para>
- Which, if successful, will return:
- </para>
-
+ <para>
+ Which, if successful, will return:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- <para>
- To restore to a repository "repository" with original configuration (as above) and completely remove an existing repository:
- </para>
-
+ <para>
+ To restore to a repository "repository" with original configuration (as above) and completely remove an existing repository:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists <backup_id></command></programlisting>
- <para>
- Which will print the following message if successful:
- </para>
-
+ <para>
+ Which will print the following message if successful:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- <para>
- To restore to a repository "repository" from a backup set with an original configuration, you will need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder on the server) of completed backup:
- </para>
-
+ <para>
+ To restore to a repository "repository" from a backup set with an original configuration, you will need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder on the server) of completed backup:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /tmp/123/repository_repository_backup_1292833493681</command></programlisting>
- <para>
- The following message will print on success:
- </para>
-
+ <para>
+ The following message will print on success:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- <para>
- To perform the above (restore a repository with an original configuration from a backup set) and completely remove an existing repository from the underlying database, value storage and index, add the <parameter>remove-exists</parameter> parameter to the command:
- </para>
-
+ <para>
+ To perform the above (restore a repository with an original configuration from a backup set) and completely remove an existing repository from the underlying database, value storage and index, add the <parameter>remove-exists</parameter> parameter to the command:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists /tmp/123/repository_repository_backup_1292833493681</command></programlisting>
- <para>
- The same success message will be printed if there were no errors.
- </para>
+ <para>
+ The same success message will be printed if there were no errors.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Walkthrough_Creating_a_Backup_and_Restoring_a_Workspace">
- <title>Walkthrough: Creating a Backup and Restoring a Workspace</title>
- <procedure>
- <title></title>
- <step>
- <title>Create the backup:</title>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Walkthrough_Creating_a_Backup_and_Restoring_a_Workspace">
+ <title>Walkthrough: Creating a Backup and Restoring a Workspace</title>
+ <procedure>
+ <title></title>
+ <step>
+ <title>Create the backup:</title>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 start /repository/backup ../temp/backup 10000</command></programlisting>
- <para>
- You will see the following message if the task executes successfully:
- </para>
-
+ <para>
+ You will see the following message if the task executes successfully:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- </step>
- <step>
- <title>Get information about current backups:</title>
-
+ </step>
+ <step>
+ <title>Get information about current backups:</title>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 list</command></programlisting>
-
+
<screen>The current backups information :
1) Backup with id b469ba957f0001010178febaedf20eb7 :
repository name : repository
@@ -2037,74 +2037,74 @@
started time : Fri, 17 Apr 2009 17:10:09 EEST
</screen>
- </step>
- <step>
- <title><emphasis role="bold">Optional:</emphasis> Stop a backup</title>
- <para>
- If you need to, you can stop a backup with its <replaceable><backup_id></replaceable>:
- </para>
-
+ </step>
+ <step>
+ <title><emphasis role="bold">Optional:</emphasis> Stop a backup</title>
+ <para>
+ If you need to, you can stop a backup with its <replaceable><backup_id></replaceable>:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 stop <backup_id></command></programlisting>
- <para>
- You will get a success message once the nominated backup has been stopped.
- </para>
+ <para>
+ You will get a success message once the nominated backup has been stopped.
+ </para>
- </step>
- <step>
- <title>Deleting the workspace and close any opened sessions on it</title>
-
+ </step>
+ <step>
+ <title>Deleting the workspace and close any opened sessions on it</title>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 drop force-close-session /repository/backup</command></programlisting>
- <para>
- A success message will be printed once all actions are completed.
- </para>
+ <para>
+ A success message will be printed once all actions are completed.
+ </para>
- </step>
- <step>
- <title>Restore the workspace</title>
- <substeps>
- <step>
- <para>
- Cleanse the database of references to the old workspace (<emphasis role="bold">"backup"</emphasis>, for example): When we use "single-db", then we will run the SQL queries for clean database:
- </para>
-
+ </step>
+ <step>
+ <title>Restore the workspace</title>
+ <substeps>
+ <step>
+ <para>
+ Cleanse the database of references to the old workspace (<emphasis role="bold">"backup"</emphasis>, for example): When we use "single-db", then we will run the SQL queries for clean database:
+ </para>
+
<programlisting>delete from JCR_SREF where NODE_ID in (select ID from JCR_SITEM where CONTAINER_NAME = 'backup')
delete from JCR_SVALUE where PROPERTY_ID in (select ID from JCR_SITEM where CONTAINER_NAME = 'backup')
delete from JCR_SITEM where CONTAINER_NAME='backup'</programlisting>
- </step>
- <step>
- <para>
- Delete the value storage and the index data for the old workspace.
- </para>
+ </step>
+ <step>
+ <para>
+ Delete the value storage and the index data for the old workspace.
+ </para>
- </step>
- <step>
- <para>
- Restore the workspace:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Restore the workspace:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository/backup <backup_id> /path/to/exo-jcr-config_backup.xml</command></programlisting>
- <para>
- A success message will print if successful:
- </para>
-
+ <para>
+ A success message will print if successful:
+ </para>
+
<screen>Successful :
status code = 200
</screen>
- </step>
+ </step>
- </substeps>
+ </substeps>
- </step>
- <step>
- <title>Get information about the workspace restore</title>
-
+ </step>
+ <step>
+ <title>Get information about the workspace restore</title>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restores /repository/backup</command></programlisting>
- <para>
- Which will output the following details:
- </para>
-
+ <para>
+ Which will output the following details:
+ </para>
+
<screen>The current restores information :
Restore with id b469ba957f0001010178febaedf20eb7:
backup folder : /home/rainf0x/java/exo-working/JCR-839/new_JCR/exo-tomcat/bin/../temp/backup
@@ -2116,49 +2116,49 @@
finished time : Fri, 17 Apr 2009 16:38:00 EEST
</screen>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Walkthrough_Creating_a_Backup_and_Restoring_a_Repository">
- <title>Walkthrough: Creating a Backup and Restoring a Repository</title>
- <note>
- <title>Default Repository</title>
- <para>
- If you delete the default repository, it should be restored with the name <emphasis>default</emphasis>.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-HTTPBackupAgent_and_Backup_Client-Walkthrough_Creating_a_Backup_and_Restoring_a_Repository">
+ <title>Walkthrough: Creating a Backup and Restoring a Repository</title>
+ <note>
+ <title>Default Repository</title>
+ <para>
+ If you delete the default repository, it should be restored with the name <emphasis>default</emphasis>.
+ </para>
- </note>
- <important>
- <title>Required Components</title>
- <para>
- This usecase requires <literal>RestRepositoryService</literal> to be enabled as it is needed to delete a repository:
- </para>
-
+ </note>
+ <important>
+ <title>Required Components</title>
+ <para>
+ This usecase requires <literal>RestRepositoryService</literal> to be enabled as it is needed to delete a repository:
+ </para>
+
<programlisting language="XML"><component>
<type>org.exoplatform.services.jcr.ext.repository.RestRepositoryService</type>
</component></programlisting>
- </important>
- <procedure id="proc-Reference_Guide_eXo_JCR_1.14-Walkthrough_Creating_a_Backup_and_Restoring_a_Repository-Backup_and_Restore_a_Repository">
- <title>Backup and Restore a Repository</title>
- <step>
- <title>Creating a backup</title>
-
+ </important>
+ <procedure id="proc-Reference_Guide_eXo_JCR_1.14-Walkthrough_Creating_a_Backup_and_Restoring_a_Repository-Backup_and_Restore_a_Repository">
+ <title>Backup and Restore a Repository</title>
+ <step>
+ <title>Creating a backup</title>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 start /repository ../temp/backup 10000</command></programlisting>
- </step>
- <step>
- <title>Get information about current backups</title>
-
+ </step>
+ <step>
+ <title>Get information about current backups</title>
+
<programlisting>jcrbackup http://root:exo@127.0.0.1:8080 list</programlisting>
- <para>
- This will return the following details:
- </para>
-
+ <para>
+ This will return the following details:
+ </para>
+
<screen>The current backups information :
1) Repository backup with id 9a4d40fb7f0000012ec8f0a4ec70b3da :
repository name : repository
@@ -2168,79 +2168,79 @@
started time : Mon, 11 Oct 2010 10:59:35 EEST
</screen>
- </step>
- <step>
- <title><emphasis role="bold">Optional:</emphasis> Stopping the backup</title>
- <para>
- If you should need to, you can stop a backup with the <replaceable><backup_id></replaceable> 9a4d40fb7f0000012ec8f0a4ec70b3da with the following command:
- </para>
-
+ </step>
+ <step>
+ <title><emphasis role="bold">Optional:</emphasis> Stopping the backup</title>
+ <para>
+ If you should need to, you can stop a backup with the <replaceable><backup_id></replaceable> 9a4d40fb7f0000012ec8f0a4ec70b3da with the following command:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 stop 9a4d40fb7f0000012ec8f0a4ec70b3da</command></programlisting>
- <para>
- You will get a confirmation message once the backup is successfully stopped.
- </para>
+ <para>
+ You will get a confirmation message once the backup is successfully stopped.
+ </para>
- </step>
- <step>
- <title>Deleting a repository and close all opened sessions</title>
-
+ </step>
+ <step>
+ <title>Deleting a repository and close all opened sessions</title>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 drop force-close-session /repository</command></programlisting>
- <para>
- You will get a confirmation message once the backup is successfully stopped.
- </para>
+ <para>
+ You will get a confirmation message once the backup is successfully stopped.
+ </para>
- </step>
- <step>
- <title>Restore the repository</title>
- <substeps>
- <step>
- <para>
- Cleanse the database of references to the workspace: When we use "single-db", then we will run the SQL queries for clean database :
- </para>
-
+ </step>
+ <step>
+ <title>Restore the repository</title>
+ <substeps>
+ <step>
+ <para>
+ Cleanse the database of references to the workspace: When we use "single-db", then we will run the SQL queries for clean database :
+ </para>
+
<programlisting>drop table JCR_SREF;
drop table JCR_SVALUE;
drop table JCR_SITEM;</programlisting>
- </step>
- <step>
- <para>
- Delete the value storage for repository.
- </para>
+ </step>
+ <step>
+ <para>
+ Delete the value storage for repository.
+ </para>
- </step>
- <step>
- <para>
- Delete the index data for repository.
- </para>
+ </step>
+ <step>
+ <para>
+ Delete the index data for repository.
+ </para>
- </step>
- <step>
- <para>
- Restore:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Restore:
+ </para>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository <backup_id> /path/to/exo-jcr-config_backup.xml</command></programlisting>
- <para>
- A successful operation will return:
- </para>
-
+ <para>
+ A successful operation will return:
+ </para>
+
<screen>Successful :
status code = 200</screen>
- </step>
+ </step>
- </substeps>
+ </substeps>
- </step>
- <step>
- <title>Get information about the restored repository</title>
-
+ </step>
+ <step>
+ <title>Get information about the restored repository</title>
+
<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restores /repository</command></programlisting>
- <para>
- Which will return the following details:
- </para>
-
+ <para>
+ Which will return the following details:
+ </para>
+
<screen>Repository restore with id 9a6dba327f000001325dfb228a181b07:
backup folder : /home/rainf0x/java/exo-working/JCR-1459/exo-tomcat/bin/../temp/backup/repository_repository_backup_1286786103858
repository name : repository
@@ -2249,13 +2249,13 @@
started time : Mon, 11 Oct 2010 11:51:15 EEST
finished time : Mon, 11 Oct 2010 11:51:17 EEST</screen>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </section>
-
+ </section>
+
</section>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/backup-clonsole-dist.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/backup-clonsole-dist.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/backup-clonsole-dist.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -3,174 +3,177 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide_eXo_JCR_1.14.ent">
%BOOK_ENTITIES;
]>
-<section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_console_binary_distribution_">
- <title>Backup console binary distribution </title>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_console_binary_distribution_-Introduction">
- <title>Introduction</title>
- <para>
- The backup console binary distribution is script-based front-end to backup client to creation backup, restore, getting status of current or completed backup/restore, etc.
- </para>
- <para>
- The backup console binary distribution conatins original backup console and script adaptation for use with GateIn based products like Platform.
- </para>
+<section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_Console_Binary_Distribution">
+ <title>Backup Console Binary Distribution</title>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_Console_Binary_Distribution-Introduction">
+ <title>Introduction</title>
+ <para>
+ The backup console binary distribution is a script-based front-end to the backup client. It assists you to create backups, restore, get the status of current or completed backup/restore processes.
+ </para>
+ <para>
+ The backup console binary distribution contains the original backup console and script adaptation for use with JBoss Enterprise Portal Platform based products.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_console_binary_distribution_-jcrbackup.cmd_and_jcrbackup.sh">
- <title>jcrbackup.cmd and jcrbackup.sh</title>
- <para>
- These scripts suitable for Standalone and flexible for various authentication ways shell scripts.
- </para>
- <para>
- Command signature:
- </para>
-
-<programlisting> <url_basic_authentication> | <url_form_authentication> <command>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_Console_Binary_Distribution-jcrbackup.cmd_and_jcrbackup.sh">
+ <title><command>jcrbackup.cmd</command> and <command>jcrbackup.sh</command></title>
+ <para>
+ These scripts are flexible for various authentication methods in shell scripts.
+ </para>
+ <para>
+ Command signature:
+ </para>
+
+<programlisting><url_basic_authentication> | <url_form_authentication> <command>
- <url_basic_authentication>: http(s)//login:password@host:port/<context>
- <url_form_authentication> : http(s)//host:port/<context> <form_auth_parm>
+<url_basic_authentication>: http(s)//login:password@host:port/<context>
+<url_form_authentication> : http(s)//host:port/<context> <form_auth_parm>
- <form_auth_part> : form <method> <form_path>
- <method> : POST or GET
- <form_path> : /path/path?<paramName1>=<paramValue1>&<paramName2>=<paramValue2>...
+<form_auth_part> : form <method> <form_path>
+<method> : POST or GET
+<form_path> : /path/path?<paramName1>=<paramValue1>&<paramName2>=<paramValue2>...
- Example of <url_form_authentication> - http://127.0.0.1:8080/portal/rest form POST "/portal/login?initialURI=/portal/private&username=root&password=gtn"
+Example of <url_form_authentication> - http://127.0.0.1:8080/portal/rest form POST "/portal/login?initialURI=/portal/private&username=root&password=gtn"
- <command> : start <repo[/ws]> <backup_dir> [<incr>]
- stop <backup_id>
- status <backup_id>
- restores <repo[/ws]>
- restore [remove-exists] [<repo[/ws]>] {<backup_id>|<backup_set_path>} [<pathToConfigFile>]
- list [completed]
- info
- drop [force-close-session] <repo[/ws]>
- help
+<command> : start <repo[/ws]> <backup_dir> [<incr>]
+ stop <backup_id>
+ status <backup_id>
+ restores <repo[/ws]>
+ restore [remove-exists] [<repo[/ws]>] {<backup_id>|<backup_set_path>} [<pathToConfigFile>]
+ list [completed]
+ info
+ drop [force-close-session] <repo[/ws]>
+ help
- start : start backup of repository or workspace
- stop : stop backup
- status : information about the current or completed backup by 'backup_id'
- restores : information about the last restore on specific repository or workspace
- restore : restore the repository or workspace from specific backup
- list : information about the current backups (in progress)
- list completed : information about the completed (ready to restore) backups
- info : information about the service backup
- drop : delete the repository or workspace
- help : print help information about backup console
+start : start backup of repository or workspace
+stop : stop backup
+status : information about the current or completed backup by 'backup_id'
+restores : information about the last restore on specific repository or workspace
+restore : restore the repository or workspace from specific backup
+list : information about the current backups (in progress)
+list completed : information about the completed (ready to restore) backups
+info : information about the service backup
+drop : delete the repository or workspace
+help : print help information about backup console
- <repo[/ws]> : /<repository-name>[/<workspace-name>] the repository or workspace
- <backup_dir> : path to folder for backup on remote server
- <backup_id> : the identifier for backup
- <incr> : incremental job period
- <pathToConfigFile> : path (local) to repository or workspace configuration
- remove-exists : remove fully (db, value storage, index) exists repository/workspace
- force-close-session : close opened sessions on repository or workspace</programlisting>
+<repo[/ws]> : /<repository-name>[/<workspace-name>] the repository or workspace
+<backup_dir> : path to folder for backup on remote server
+<backup_id> : the identifier for backup
+<incr> : incremental job period
+<pathToConfigFile> : path (local) to repository or workspace configuration
+remove-exists : remove fully (db, value storage, index) exists repository/workspace
+force-close-session : close opened sessions on repository or workspace</programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_console_binary_distribution_-exobackup.sh_and_exobackup.cmd">
- <title>exobackup.sh and exobackup.cmd</title>
- <para>
- These scripts suitable for use with GateIn based products like Platform
- </para>
- <para>
- Command signature:
- </para>
-
-<programlisting> -u <user> -p <password> [form_of_authentication] <host:port> <command>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_Console_Binary_Distribution-exobackup.sh_and_exobackup.cmd">
+ <title><command>exobackup.sh</command> and <command>exobackup.cmd</command></title>
+ <para>
+ These scripts are suitable for use with JBoss Enterprise Portal Platform.
+ </para>
+ <para>
+ Command signature:
+ </para>
+
+<programlisting>-u <user> -p <password> [form_of_authentication] <host:port> <command>
- <form_of_authentication> : -b - is used for basic authentication
- -f [-c <context>] - is used for form authentication with context portal if parameter context not specified
- if no authentication set basic authentication is used
- -c <context> : context, by default context is portal
+<form_of_authentication> : -b - is used for basic authentication
+ -f [-c <context>] - is used for form authentication with context portal if parameter context not specified
+ if no authentication set basic authentication is used
+-c <context> : context, by default context is portal
+<command> : start <repo[/ws]> <backup_dir> [<incr>]
+ stop <backup_id>
+ status <backup_id>
+ restores <repo[/ws]>
+ restore [remove-exists] [<repo[/ws]>] {<backup_id>|<backup_set_path>} [<pathToConfigFile>]
+ list [completed]
+ info
+ drop [force-close-session] <repo[/ws]>
+ help
+start : start backup of repository or workspace
+stop : stop backup
+status : information about the current or completed backup by 'backup_id'
+restores : information about the last restore on specific repository or workspace
+restore : restore the repository or workspace from specific backup
+list : information about the current backups (in progress)
+list completed : information about the completed (ready to restore) backups
+info : information about the service backup
+drop : delete the repository or workspace
+help : print help information about backup console
- <command> : start <repo[/ws]> <backup_dir> [<incr>]
- stop <backup_id>
- status <backup_id>
- restores <repo[/ws]>
- restore [remove-exists] [<repo[/ws]>] {<backup_id>|<backup_set_path>} [<pathToConfigFile>]
- list [completed]
- info
- drop [force-close-session] <repo[/ws]>
- help
+<repo[/ws]> : /<repository-name>[/<workspace-name>] the repository or workspace
+<backup_dir> : path to folder for backup on remote server
+<backup_id> : the identifier for backup
+<incr> : incremental job period
+<pathToConfigFile> : path (local) to repository or workspace configuration
+remove-exists : remove fully (db, value storage, index) exists repository/workspace
+force-close-session : close opened sessions on repository or workspace</programlisting>
- start : start backup of repository or workspace
- stop : stop backup
- status : information about the current or completed backup by 'backup_id'
- restores : information about the last restore on specific repository or workspace
- restore : restore the repository or workspace from specific backup
- list : information about the current backups (in progress)
- list completed : information about the completed (ready to restore) backups
- info : information about the service backup
- drop : delete the repository or workspace
- help : print help information about backup console
-
- <repo[/ws]> : /<repository-name>[/<workspace-name>] the repository or workspace
- <backup_dir> : path to folder for backup on remote server
- <backup_id> : the identifier for backup
- <incr> : incremental job period
- <pathToConfigFile> : path (local) to repository or workspace configuration
- remove-exists : remove fully (db, value storage, index) exists repository/workspace
- force-close-session : close opened sessions on repository or workspace</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_console_binary_distribution_-Backup_console_binary_distribution_usage">
- <title>Backup console binary distribution usage</title>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_console_binary_distribution_usage-Building_application">
- <title>Building application</title>
- <itemizedlist>
- <listitem>
- <para>
- Go to folder <emphasis role="bold">${JCR-SRC-HOME}/applications/exo.jcr.applications.backupconsole.dist</emphasis> . - build the application :
-<programlisting>mvn clean install</programlisting>
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_console_binary_distribution_usage-Getting_information_about_backup_service">
- <title>Getting information about backup service</title>
- <para>
- The context is "portal" by default for FORM authentiaction.
- </para>
-
-<programlisting>./exobackup.sh -u root -p gtn -f 192.168.0.15:8080 info</programlisting>
- <para>
- Return :
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_Console_Binary_Distribution-Backup_Console_Binary_Distribution_Usage">
+ <title>Backup Console Binary Distribution usage</title>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_Console_Binary_Distribution_Usage-Building_Application">
+ <title>Building Application</title>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Navigate to folder <filename>${JCR-SRC-HOME}/applications/exo.jcr.applications.backupconsole.dist</filename>.
+ </para>
+ </step>
+ <step>
+ <para>
+ Build the application with the command:
+ </para>
+<programlisting><command>mvn clean install</command></programlisting>
+ </step>
+ </procedure>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_Console_Binary_Distribution_Usage-Getting_Information_About_Backup_Service">
+ <title>Getting Information About Backup Service</title>
+ <para>
+ The context is "<emphasis>portal</emphasis>" by default for <literal>FORM</literal> authentication.
+ </para>
+ <para>
+ The following command...
+ </para>
+<programlisting><command>./exobackup.sh -u root -p gtn -f 192.168.0.15:8080 info</command></programlisting>
+ <para>
+ ...will return:
+ </para>
+
<programlisting>The backup service information :
full backup type : org.exoplatform.services.jcr.ext.backup.impl.fs.FullBackupJob
incremetal backup type : org.exoplatform.services.jcr.ext.backup.impl.fs.IncrementalBackupJob
backup log folder : /home/rainf0x/java/exo-working/JCR-839/new_JCR/exo-tomcat/bin/../temp/backup
default incremental job period : 3600</programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_console_binary_distribution_usage-Getting_information_about_backup_service_with_use_not_default_context">
- <title>Getting information about backup service with use not default context</title>
- <para>
- The context is "exodms-demo".
- </para>
-
-<programlisting>./exobackup.sh -u root -p gtn -f -c exodms-demo 192.168.0.15:8080 info</programlisting>
- <para>
- Return :
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Backup_Console_Binary_Distribution_Usage-Getting_Information_About_Backup_Service_Not_Using_Default_Context">
+ <title>Getting Information About Backup Service Not Using Default Context</title>
+ <para>
+ If the context is "<emphasis>exodms-demo</emphasis>", the command would be:
+ </para>
+
+<programlisting><command>./exobackup.sh -u root -p gtn -f -c exodms-demo 192.168.0.15:8080 info</command></programlisting>
+ <para>
+ Which would return something similar to the following:
+ </para>
+
<programlisting>The backup service information :
full backup type : org.exoplatform.services.jcr.ext.backup.impl.fs.FullBackupJob
incremetal backup type : org.exoplatform.services.jcr.ext.backup.impl.fs.IncrementalBackupJob
backup log folder : /home/rainf0x/java/exo-working/JCR-839/new_JCR/exo-tomcat/bin/../temp/backup
default incremental job period : 3600</programlisting>
- </section>
-
+ </section>
+
- </section>
+ </section>
</section>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/exojcr-backup-service.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/exojcr-backup-service.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/exojcr-backup-service.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -4,165 +4,194 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service">
- <title>eXo JCR Backup Service</title>
- <note>
- <para>
- Restore of system workspace is not supported only as part of restoring of whole repository.
- </para>
+ <title>eXo JCR Backup Service</title>
+ <note>
+ <para>
+ Restoration of system workspaces is not supported. Workspaces can only be restored as part of a complete repository restoration.
+ </para>
+ </note>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Concept">
+ <title>Concept</title>
+ <para>
+ The main purpose of this feature is to restore data in case of system faults and repository crashes. Also, the backup results may be used as a content history.
+ </para>
+ <para>
+ The eXo JCR backup service was developed from the JCR 1.8 implementation. It is an independent service available as an eXo JCR Extensions project.
+ </para>
+ <para>
+ The concept is based on the export of a workspace unit in the <emphasis>Full</emphasis>, or <emphasis>Full + Incremental</emphasis> model. A repository workspace can be backup and restored using a combination of these modes.
+ </para>
+ <para>
+ In all cases, however, at least one <emphasis>Full</emphasis> (initial) backup must be executed to mark a starting point of the backup history. An <emphasis>Incremental</emphasis> backup is not a complete image of the workspace. It contains only changes for some period. So it is not possible to perform an <emphasis>Incremental</emphasis> backup without an initial <emphasis>Full</emphasis> backup.
+ </para>
+ <para>
+ The Backup service may operate as a hot-backup process at runtime on an in-use workspace. In this case the <emphasis>Full</emphasis> + <emphasis>Incremental</emphasis> model should be used to ensure data consistency during restoration.
+ </para>
+ <para>
+ An <emphasis>Incremental</emphasis> backup will be run starting from the start point of the <emphasis>Full</emphasis> backup and will contain changes that have occurred during the <emphasis>Full</emphasis> backup, too.
+ </para>
+ <para>
+ A <emphasis role="bold">restore</emphasis> operation is a mirror of a backup one. At least one <emphasis>Full</emphasis> backup should be restored to obtain a workspace saved at some time in the past.
+ </para>
+ <para>
+ However, <emphasis>Incremental</emphasis> backups may be restored in the order of creation to reach a required state of a content. If the <emphasis>Incremental</emphasis> contains the same data as the <emphasis>Full</emphasis> backup (hot-backup), the changes will be applied again as if they were made in a normal way via API calls.
+ </para>
+ <para>
+ According to the model there are several modes for backup logic:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">Full backup only</emphasis>: Single operation, runs once
+ </para>
- </note>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Concept">
- <title>Concept</title>
- <para>
- The main purpose of that feature is to restore data in case of system faults and repository crashes. Also, the backup results may be used as a content history.
- </para>
- <para>
- The eXo JCR backup service was developed from the JCR 1.8 implementation. It's an independent service available as an eXo JCR Extensions project.
- </para>
- <para>
- The concept is based on the export of a workspace unit in the Full, or Full + Incrementals model. A repository workspace can be backup and restored using a combination of these modes. In all cases, at least one Full (initial) backup must be executed to mark a starting point of the backup history. An Incremental backup is not a complete image of the workspace. It contains only changes for some period. So it is not possible to perform an Incremental backup without an initial Full backup.
- </para>
- <para>
- The Backup service may operate as a hot-backup process at runtime on an in-use workspace. It's a case when the Full + Incrementals model should be used to have a guaranty of data consistency during restoration. An Incremental will be run starting from the start point of the Full backup and will contain changes that have occured during the Full backup, too.
- </para>
- <para>
- A <emphasis role="bold">restore</emphasis> operation is a mirror of a backup one. At least one Full backup should be restored to obtain a workspace corresponding to some points in time. On the other hand, Incrementals may be restored in the order of creation to reach a required state of a content. If the Incremental contains the same data as the Full backup (hot-backup), the changes will be applied again as if they were made in a normal way via API calls.
- </para>
- <para>
- According to the model there are several modes for backup logic:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">Full backup only</emphasis> : Single operation, runs once
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Full + Incrementas</emphasis>: Start with an initial <emphasis>Full</emphasis> backup and then keep incrementals changes in one file. Run until it is stopped.
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Full + Incrementals</emphasis> : Start with an initial Full backup and then keep incrementals changes in one file. Run until it is stopped.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Full + Incremental(periodic)</emphasis>: Start with an initial <emphasis>Full</emphasis> backup and then keep incrementals with periodic result file rotation. Run until it is stopped.
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Full + Incrementals(periodic)</emphasis> : Start with an initial Full backup and then keep incrementals with periodic result file rotation. Run until it is stopped.
- </para>
+ </listitem>
- </listitem>
+ </itemizedlist>
- </itemizedlist>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-How_it_works">
+ <title>How it works</title>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-How_it_works-Implementation_details">
+ <title>Implementation details</title>
+ <para>
+ <emphasis>Full</emphasis> backup/restore is implemented using the JCR SysView Export/Import. Workspace data will be exported into Sysview XML data from root node.
+ </para>
+ <para>
+ Restoring is implemented, using the special eXo JCR API feature: a dynamic workspace creation. Restoring of the workspace <emphasis>Full</emphasis> backup will create one new workspace in the repository. Then, the SysView XML data will be imported as the root node.
+ </para>
+ <para>
+ <emphasis>Incremental</emphasis> backup is implemented using the eXo JCR ChangesLog API. This API allows to record each JCR API call as atomic entries in a changelog. Hence, the <emphasis>Incremental</emphasis> backup uses a listener that collects these logs and stores them in a file.
+ </para>
+ <para>
+ Restoring an incremental backup consists in applying the collected set of ChangesLogs to a workspace in the correct order.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-How_it_works">
- <title>How it works</title>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-How_it_works-Implementation_details">
- <title>Implementation details</title>
- <para>
- Full backup/restore is implemented using the JCR SysView Export/Import. Workspace data will be exported into Sysview XML data from root node.
- </para>
- <para>
- Restoring is implemented, using the special eXo JCR API feature: a dynamic workspace creation. Restoring of the workspace Full backup will create one new workspace in the repository. Then, the SysView XML data will be imported as the root node.
- </para>
- <para>
- Incremental backup is implemented using the eXo JCR ChangesLog API. This API allows to record each JCR API call as atomic entries in a changelog. Hence, the Incremental backup uses a listener that collects these logs and stores them in a file.
- </para>
- <para>
- Restoring an incremental backup consists in applying the collected set of ChangesLogs to a workspace in the correct order.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-How_it_works-Work_basics">
+ <title>Work basics</title>
+ <para>
+ The work of Backup is based on the BackupConfig configuration and the BackupChain logical unit.
+ </para>
+ <para>
+ BackupConfig describes the backup operation chain that will be performed by the service. When you intend to work with it, the configuration should be prepared before the backup is started.
+ </para>
+ <para>
+ The configuration contains such values as:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">Types of full and incremental backup</emphasis> (fullBackupType, incrementalBackupType): Strings with full names of classes which will cover the type functional.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-How_it_works-Work_basics">
- <title>Work basics</title>
- <para>
- The work of Backup is based on the BackupConfig configuration and the BackupChain logical unit.
- </para>
- <para>
- BackupConfig describes the backup operation chain that will be performed by the service. When you intend to work with it, the configuration should be prepared before the backup is started.
- </para>
- <para>
- The configuration contains such values as:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">Types of full and incremental backup</emphasis> (fullBackupType, incrementalBackupType): Strings with full names of classes which will cover the type functional.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Incremental period</emphasis>: A period after that a current backup will be stopped and a new one will be started in seconds (long).
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Incremental period</emphasis>: A period after that a current backup will be stopped and a new one will be started in seconds (long).
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Target repository and workspace names</emphasis>: Strings with described names
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Target repository and workspace names</emphasis>: Strings with described names
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Destination directory</emphasis> for result files: String with a path to a folder where operation result files will be stored.
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Destination directory</emphasis> for result files: String with a path to a folder where operation result files will be stored.
- </para>
+ </listitem>
- </listitem>
+ </itemizedlist>
+ <para>
+ <literal>BackupChain</literal> is a unit performing the backup process and it covers the principle of initial <emphasis>Full</emphasis> backup execution and manages <emphasis>Incremental</emphasis> operations.
+ </para>
+ <para>
+ <literal>BackupChain</literal> is used as a key object for accessing current backups during runtime via <literal>BackupManager</literal>. Each <literal>BackupJob</literal> performs a single atomic operation - a <emphasis>Full</emphasis> or <emphasis>Incremental</emphasis> process. The result of that operation is data for a Restore.
+ </para>
+ <para>
+ <literal>BackupChain</literal> can contain one or more <literal>BackupJobs</literal>. The initial <emphasis>Full</emphasis> job is always there. Each <literal>BackupJobs</literal> has its own unique number which means its Job order in the chain, the initial <emphasis>Full</emphasis> job always has the number <literal>0</literal>.
+ </para>
+ <formalpara>
+ <title>Backup process, result data and file location</title>
+ <para>
+ To start the backup process, it is necessary to create the <literal>BackupConfig</literal> and call the <literal>BackupManager.startBackup(BackupConfig)</literal> method. This method will return <literal>BackupChain</literal> created according to the configuration. At the same time, the chain creates a <literal>BackupChainLog</literal> which persists <literal>BackupConfig</literal> content and <literal>BackupChain</literal> operation states to the file in the service working directory (see Configuration).
+ </para>
+ </formalpara>
+ <para>
+ When the chain starts the work and the initial <literal>BackupJob</literal> starts, the job will create a result data file using the destination directory path from <literal>BackupConfig</literal>.
+ </para>
+ <para>
+ The destination directory will contain a directory with an automatically created name using the pattern <parameter>repository_workspace-timestamp</parameter> where <literal>timestamp</literal> is current time in the format of <literal>yyyyMMdd_hhmmss</literal> (for example; <literal>db1_ws1-20080306_055404</literal>).
+ </para>
+ <para>
+ The directory will contain the results of all Jobs configured for execution. Each Job stores the backup result in its own file with the name <parameter>repository_workspace-timestamp.jobNumber</parameter>. <literal>BackupChain</literal> saves each state (<literal>STARTING</literal>, <literal>WAITING</literal>, <literal>WORKING</literal>, <literal>FINISHED</literal>) of its Jobs in the <literal>BackupChainLog</literal>, which has a current result full file path.
+ </para>
+ <para>
+ <literal>BackupChain</literal> log file and job result files are a whole and consistent unit, that is a source for a Restore.
+ </para>
+ <note>
+ <para>
+ <literal>BackupChain</literal> log contains absolute paths to job result files. Don't move these files to another location.
+ </para>
- </itemizedlist>
- <para>
- BackupChain is a unit performing the backup process and it covers the principle of initial Full backup execution and manages Incrementals operations. BackupChain is used as a key object for accessing current backups during runtime via BackupManager. Each BackupJob performs a single atomic operation - a Full or Incremental process. The result of that operation is data for a Restore. BackupChain can contain one or more BackupJobs. But at least the initial Full job is always there. Each BackupJobs has its own unique number which means its Job order in the chain, the initial Full job always has the number 0.
- </para>
- <para>
- <emphasis role="bold">Backup process, result data and file location</emphasis>
- </para>
- <para>
- To start the backup process, it's necessary to create the BackupConfig and call the BackupManager.startBackup(BackupConfig) method. This method will return BackupChain created according to the configuration. At the same time, the chain creates a BackupChainLog which persists BackupConfig content and BackupChain operation states to the file in the service working directory (see Configuration).
- </para>
- <para>
- When the chain starts the work and the initial BackupJob starts, the job will create a result data file using the destination directory path from BackupConfig. The destination directory will contain a directory with an automatically created name using the pattern repository_workspace-timestamp where timestamp is current time in the format of yyyyMMdd_hhmmss (E.g. db1_ws1-20080306_055404). The directory will contain the results of all Jobs configured for execution. Each Job stores the backup result in its own file with the name repository_workspace-timestamp.jobNumber. BackupChain saves each state (STARTING, WAITING, WORKING, FINISHED) of its Jobs in the BackupChainLog, which has a current result full file path.
- </para>
- <para>
- BackupChain log file and job result files are a whole and consistent unit, that is a source for a Restore.
- </para>
- <note>
- <para>
- BackupChain log contains absolute paths to job result files. Don't move these files to another location.
- </para>
+ </note>
- </note>
- <para>
- <emphasis role="bold">Restore requirements</emphasis>
- </para>
- <para>
- As mentioned before a Restore operation is a mirror of a Backup. The process is a Full restore of a root node with restoring an additional Incremental backup to reach a desired workspace state. Restoring of the workspace Full backup will create a new workspace in the repository using given RepositoyEntry of existing repository and given (preconfigured) WorkspaceEntry for a new target workspace. A Restore process will restore a root node from the SysView XML data.
- </para>
- <note>
- <para>
- The target workspace should not be in the repository. Otherwise, a BackupConfigurationException exception will be thrown.
- </para>
+ <formalpara>
+ <title>Restore requirements</title>
+ <para>
+ As outlined earlier, a Restore operation is a mirror of a Backup. The process is a <emphasis>Full</emphasis> restore of a root node with restoring an additional <emphasis>Incremental</emphasis> backup to reach a desired workspace state. Restoring the workspace <emphasis>Full</emphasis> backup will create a new workspace in the repository using given <literal>RepositoryEntry</literal> of existing repository and given (preconfigured) WorkspaceEntry for a new target workspace. A Restore process will restore a root node from the SysView XML data.
+ </para>
+ </formalpara>
- </note>
- <para>
- Finally, we may say that Restore is a process of a new Workspace creation and filling it with a Backup content. In case you already have a target Workspace (with the same name) in a Repository, you have to configure a new name for it. If no target workspace exists in the Repositor, you may use the same name as the Backup one.
- </para>
+ <note>
+ <title>Exceptions</title>
+ <para>
+ The target workspace should not be in the repository. Otherwise, a <literal>BackupConfigurationException</literal> exception will be thrown.
+ </para>
+ </note>
+ <para>
+ In case you already have a target Workspace (with the same name) in a Repository, you have to configure a new name for it. If no target workspace exists in the Repositor, you may use the same name as the Backup one.
+ </para>
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Configuration">
- <title>Configuration</title>
- <para>
- As an optional extension, the Backup service is not enabled by default. <emphasis role="bold">You need to enable it via configuration</emphasis>.
- </para>
- <para>
- The following is an example configuration compatible with JCR 1.9.3 and later:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Configuration">
+ <title>Configuration</title>
+ <para>
+ As an optional extension, the Backup service is not enabled by default. <emphasis role="bold">You need to enable it via configuration</emphasis>.
+ </para>
+ <para>
+ The following is an example configuration compatible with JCR 1.9.3 and later:
+ </para>
+
+<programlistingco>
+ <areaspec>
+ <area coords="9" id="area-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Configuration-incremental-backup-type" />
+ <area coords="8" id="area-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Configuration-full-backup-type" />
+ <area coords="7" id="area-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Configuration-default-incremental-job-period" />
+ <area coords="10" id="area-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Configuration-backup-dir" />
+ </areaspec>
<programlisting language="XML"><component>
<key>org.exoplatform.services.jcr.ext.backup.BackupManager</key>
<type>org.exoplatform.services.jcr.ext.backup.impl.BackupManagerImpl</type>
@@ -176,47 +205,40 @@
</properties-param>
</init-params>
</component></programlisting>
- <para>
- Where:
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">incremental-backup-type</emphasis> (since 1.9.3) : The FQN of incremental job class. Must implement org.exoplatform.services.jcr.ext.backup.BackupJob
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">full-backup-type</emphasis> (since 1.9.3) : The FQN of the full backup job class; Must implement org.exoplatform.services.jcr.ext.backup.BackupJob
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">default-incremental-job-period</emphasis> (since 1.9.3) : The period between incremetal flushes (in seconds)
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">backup-dir</emphasis> : The path to a working directory where the service will store internal files and chain logs.
- </para>
-
- </listitem>
-
- </itemizedlist>
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Usage">
- <title>Usage</title>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Usage-Performing_a_Backup">
- <title>Performing a Backup</title>
- <para>
- In the following example, we create a BackupConfig bean for the Full + Incrementals mode, then we ask the BackupManager to start the backup process.
- </para>
-
+ <calloutlist>
+ <!--#-->
+ <callout arearefs="area-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Configuration-incremental-backup-type">
+ <para>
+ <parameter>incremental-backup-type</parameter> (since 1.9.3) is the FQN of incremental job class. It must implement <literal>org.exoplatform.services.jcr.ext.backup.BackupJob</literal>.
+ </para>
+ </callout>
+ <callout arearefs="area-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Configuration-full-backup-type">
+ <para>
+ <parameter>full-backup-type</parameter> (since 1.9.3) is the FQN of the full backup job class; it must implement <literal>org.exoplatform.services.jcr.ext.backup.BackupJob</literal>.
+ </para>
+ </callout>
+ <callout arearefs="area-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Configuration-default-incremental-job-period">
+ <para>
+ <parameter>default-incremental-job-period</parameter> (since 1.9.3) is the period between incremental flushes (in seconds).
+ </para>
+ </callout>
+ <callout arearefs="area-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Configuration-backup-dir">
+ <para>
+ <parameter>backup-dir</parameter> is the path to a working directory where the service will store internal files and chain logs.
+ </para>
+ </callout>
+ </calloutlist>
+</programlistingco>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Usage">
+ <title>Usage</title>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Usage-Performing_a_Backup">
+ <title>Performing a Backup</title>
+ <para>
+ In the following example, we create a <literal>BackupConfig</literal> bean for the <emphasis>Full</emphasis> + <emphasis>Incremental</emphasis>s mode, then we ask the BackupManager to start the backup process.
+ </para>
+
<programlisting language="Java">// Obtaining the backup service from the eXo container.
BackupManager backup = (BackupManager) container.getComponentInstanceOfType(BackupManager.class);
@@ -236,21 +258,21 @@
// start backup using the service manager
BackupChain chain = backup.startBackup(config);</programlisting>
- <para>
- To stop the backup operation, you have to use the BackupChain instance.
- </para>
-
+ <para>
+ To stop the backup operation, you must use the <literal>BackupChain</literal> instance.
+ </para>
+
<programlisting language="Java">// stop backup
backup.stopBackup(chain);</programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Usage-Performing_a_Restore">
- <title>Performing a Restore</title>
- <para>
- Restoration involves reloading the backup file into a BackupChainLog and applying appropriate workspace initialization. The following snippet shows the typical sequence for restoring a workspace :
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Usage-Performing_a_Restore">
+ <title>Performing a Restore</title>
+ <para>
+ Restoration involves reloading the backup file into a <literal>BackupChainLog</literal> and applying appropriate workspace initialization. The following snippet shows the typical sequence for restoring a workspace:
+ </para>
+
<programlisting language="Java">// find BackupChain using the repository and workspace names (return null if not found)
BackupChain chain = backup.findBackup("db1", "ws1");
@@ -269,86 +291,74 @@
// run restoration
backup.restore(bchLog, repositoryEntry, workspaceEntry);</programlisting>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Performing_a_Restore-Restoring_into_an_existing_workspace">
- <title>Restoring into an existing workspace</title>
- <note>
- <para>
- These instructions only applies to regular workspace. Special instructions are provided for System workspace below.
- </para>
- </note>
- <para>
- To restore a backup over an existing workspace, you are required to clear its data. Your backup process should follow these steps:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Remove workspace
- </para>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Performing_a_Restore-Restoring_into_an_existing_workspace">
+ <title>Restoring Into An Existing Workspace</title>
+ <note>
+ <para>
+ These instructions only applies to regular workspace. Special instructions are provided below for System workspace.
+ </para>
- </listitem>
-
- </itemizedlist>
-
+ </note>
+ <para>
+ To restore a backup over an existing workspace, you are required to clear its data. Your backup process should follow these steps:
+ </para>
+ <procedure>
+ <title>Restore Over a Workspace</title>
+ <step>
+ <para>
+ Remove the workspace:
+ </para>
<programlisting language="Java">ManageableRepository repo = repositoryService.getRepository(repository);
repo.removeWorkspace(workspace);</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Clean database, value storage, index
- </para>
+ </step>
+ <step>
+ <para>
+ Clean the database, value storage and index of references to the workspace.
+ </para>
+ </step>
+ <step>
+ <para>
+ Perform the Restore. Refer to the snippet above.
+ </para>
+ </step>
+ </procedure>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Performing_a_Restore-System_workspace">
+ <title>System workspace</title>
+ <note>
+ <para>
+ The <literal>BackupWorkspaceInitializer</literal> is available in JCR 1.9 and later.
+ </para>
- </listitem>
- <listitem>
- <para>
- Restore (see snippet above)
- </para>
+ </note>
+ <para>
+ Restoring the JCR System workspace requires you to shut down the system and use of a special initializer.
+ </para>
+ <para>
+ Follow these steps (this will also work for normal workspaces):
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Stop the repository (or portal).
+ </para>
+ </step>
+ <step>
+ <para>
+ Clean the database, value storage, index.
+ </para>
+ </step>
+ <step>
+ <para>
+ In the configuration, set the workspace <literal>BackupWorkspaceInitializer</literal> to refer to your backup.
+ </para>
+ <para>
+ For example:
+ </para>
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Performing_a_Restore-System_workspace">
- <title>System workspace</title>
- <note>
- <para>
- The BackupWorkspaceInitializer is available in JCR 1.9 and later.
- </para>
-
- </note>
- <para>
- Restoring the JCR System workspace requires to shutdown the system and use of a special initializer.
- </para>
- <para>
- Follow these steps (this will also work for normal workspaces):
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Stop repository (or portal)
- </para>
-
- </listitem>
- <listitem>
- <para>
- Clean database, value storage, index;
- </para>
-
- </listitem>
- <listitem>
- <para>
- In configuration, the workspace set BackupWorkspaceInitializer to refer to your backup.
- </para>
-
- </listitem>
-
- </itemizedlist>
- <para>
- For example:
- </para>
-
<programlisting language="XML"><workspaces>
<workspace name="production" ... >
<container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
@@ -362,73 +372,64 @@
...
</workspace>
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Start repository (or portal).
- </para>
- </listitem>
+ </step>
+ <step>
+ <para>
+ Restart the repository (or portal).
+ </para>
+ </step>
+ </procedure>
+ </section>
+
- </itemizedlist>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Usage-Repository_and_Workspace_Initialization_From_Backup">
+ <title>Repository and Workspace Initialization From Backup</title>
+ <para>
+ Repository and Workspace initialization from backup can use the <literal>BackupWorkspaceInitializer</literal>.
+ </para>
+ <para>
+ Will be configured <literal>BackupWorkspaceInitializer</literal> in configuration of workspace to restore the Workspace from backup over initializer.
+ </para>
+ <para>
+ Will be configured <literal>BackupWorkspaceInitializer</literal> in all configurations workspaces of the Repository to restore the Repository from backup over initializer.
+ </para>
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Usage-Repository_and_Workspace_initialization_from_backup">
- <title>Repository and Workspace initialization from backup</title>
- <para>
- Repository and Workspace initialization from backup can use the BackupWorkspaceInitializer.
- </para>
- <para>
- Will be configured BackupWorkspaceInitializer in configuration of workspace to restore the Workspace from backup over initializer.
- </para>
- <para>
- Will be configured BackupWorkspaceInitializer in all configurations workspaces of the Repository to restore the Repository from backup over initializer.
- </para>
- <para>
- </para>
- <para>
- Restoring the repository or workspace requires to shutdown the repository.
- </para>
- <para>
- Follow these steps:
- <itemizedlist>
- <listitem>
- <para>
- Stop repository (will be skipped this step if repository or workace is not exists)
- </para>
-
- </listitem>
- <listitem>
- <para>
- Clean database, value storage, index; (will be skipped this step if repository or worksace is new)
- </para>
-
- </listitem>
- <listitem>
- <para>
- In configuration, the workspace/-s set BackupWorkspaceInitializer to refer to your backup.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Start repository
- </para>
-
- </listitem>
-
- </itemizedlist>
- </para>
- <para>
- </para>
- <para>
- Example of configuration initializer to restore workspace "backup" over BackupWorkspaceInitializer:
- </para>
-
+ <para>
+ Restoring the repository or workspace requires to shutdown the repository.
+ </para>
+ <para>
+ Follow these steps:
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Stop the repository. This step can be skipped if the repository or workspace does not exist.
+ </para>
+ </step>
+ <step>
+ <para>
+ Clean the database, value storage and index. This step can be skipped if repository or workspace is new.
+ </para>
+ </step>
+ <step>
+ <para>
+ Set the <literal>BackupWorkspaceInitializerIn</literal> in the workspace(s) configuration to refer to your backup.
+ </para>
+ </step>
+ <step>
+ <para>
+ Start repository
+ </para>
+ </step>
+ </procedure>
+ <para>
+ Below is an example of a configuration initializer set to restore the workspace "<emphasis>backup</emphasis>" over <literal>BackupWorkspaceInitializer</literal>:
+ </para>
+
<programlisting language="XML"><workspaces>
<workspace name="backup" ... >
<container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
@@ -441,30 +442,28 @@
</initializer>
...
</workspace></programlisting>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Repository_and_Workspace_initialization_from_backup-Restore_the_Workspace_over_BackupWorksaceInitializer">
- <title>Restore the Workspace over BackupWorksaceInitializer</title>
- <para>
- Example of configuration initializer to resore the workspace "backup" over BackupWorkspaceInitializer:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Stop repository (will be skipped this step if workspace is not exists)
- </para>
- </listitem>
- <listitem>
- <para>
- Clean database, value storage, index; (will be skipped this step if workspace is new)
- </para>
-
- </listitem>
-
- </itemizedlist>
- <para>
- In configuration, the workspace/-s set BackupWorkspaceInitializer to refer to your backup.
- </para>
-
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Repository_and_Workspace_Initialization_From_Backup-Restore_the_Workspace_over_BackupWorkspaceInitializer">
+ <title>Restore the Workspace over BackupWorkspaceInitializer</title>
+ <para>
+ Below is an example of configuration initializer to restore the workspace "<emphasis>backup</emphasis>" over <literal>BackupWorkspaceInitializer</literal>:
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Stop the repository. This can be skipped if the repository does not yet exist.
+ </para>
+ </step>
+ <step>
+ <para>
+ Clean the database, value storage and index. This step can be skipped if the workspace is new.
+ </para>
+ </step>
+ <step>
+ <para>
+ Set <parameter>BackupWorkspaceInitializer</parameter> in the workspace configuration to refer to your backup.
+ </para>
<programlisting language="XML"><workspaces>
<workspace name="backup" ... >
<container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
@@ -477,45 +476,36 @@
</initializer>
...
</workspace></programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Start repository
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Repository_and_Workspace_initialization_from_backup-Restore_the_Repository_over_BackupWorksaceInitializer">
- <title>Restore the Repository over BackupWorksaceInitializer</title>
- <para>
- Example of configuration initializers to restore the repository "repository" over BackupWorkspaceInitializer:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Stop repository (will be skipped this step if repository is not exists)
- </para>
-
- </listitem>
- <listitem>
- <para>
- Clean database, value storage, index; (will be skipped this step if repository is new)
- </para>
-
- </listitem>
-
- </itemizedlist>
- <para>
- In configuration of repository will be configured initializers of workspace to refer to your backup.
- </para>
- <para>
- For example:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Start the repository.
+ </para>
+ </step>
+ </procedure>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Repository_and_Workspace_initialization_from_backup-Restore_the_Repository_over_BackupWorkspaceInitializer">
+ <title>Restore the Repository over BackupWorkspaceInitializer</title>
+ <para>
+ Below is an example of configuration initializers to restore the repository "<emphasis>repository</emphasis>" over <literal>BackupWorkspaceInitializer</literal>:
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Stop the repository. This can be skipped if the repository does not yet exist.
+ </para>
+ </step>
+ <step>
+ <para>
+ Clean the database, value storage and index. This step can be skipped if the workspace is new.
+ </para>
+ </step>
+ <step>
+ <para>
+ Configure workspace initializers in the repository configuration to refer to your backup.
+ </para>
<programlisting language="XML">...
<workspaces>
<workspace name="system" ... >
@@ -556,75 +546,73 @@
</workspace>
</workspaces>
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Start repository.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Scheduling_experimental">
- <title>Scheduling (experimental)</title>
- <para>
- The Backup service has an additional feature that can be useful for a production level backup implementation. When you need to organize a backup of a repository, it's necessary to have a tool which will be able to create and manage a cycle of Full and Incremental backups in periodic manner.
- </para>
- <para>
- The service has internal BackupScheduler which can run a configurable cycle of BackupChains as if they have been executed by a user during some period of time. I.e. BackupScheduler is a user-like daemon which asks the BackupManager to start or stop backup operations.
- </para>
- <para>
- For that purpose, BackupScheduler has the method.
- </para>
- <para>
- BackupScheduler.schedule(backupConfig, startDate, stopDate, chainPeriod, incrementalPeriod)
- </para>
- <para>
- where
- </para>
- <itemizedlist>
- <listitem>
- <para>
- backupConfig: A ready configuration which will be given to the BackupManager.startBackup() method
- </para>
-
- </listitem>
- <listitem>
- <para>
- startDate: The date and time of the backup start
- </para>
-
- </listitem>
- <listitem>
- <para>
- stopDate: The date and time of the backup stop
- </para>
-
- </listitem>
- <listitem>
- <para>
- chainPeriod: A period after which a current BackupChain will be stopped and a new one will be started in seconds
- </para>
-
- </listitem>
- <listitem>
- <para>
- incrementalPeriod: If it is greater than 0, it will be used to override the same value in backupConfig.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
+ </step>
+ <step>
+ <para>
+ Start the repository.
+ </para>
+ </step>
+ </procedure>
+ </section>
+ </section>
+
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Scheduling_experimental">
+ <title>Scheduling (experimental)</title>
+ <para>
+ The Backup service has an additional feature that can be useful for a production level backup implementation. When you need to organize a backup of a repository, it is necessary to have a tool which will be able to create and manage a cycle of <emphasis>Full</emphasis> and <emphasis>Incremental</emphasis> backups in a periodic manner.
+ </para>
+ <para>
+ The service has an internal <literal>BackupScheduler</literal> which can run a configurable cycle of <literal>BackupChains</literal> as if they have been executed by a user during some period of time. The <literal>BackupScheduler</literal> is essentially a user-like daemon which asks the <literal>BackupManager</literal> to start or stop backup operations.
+ </para>
+ <para>
+ For that purpose, <literal>BackupScheduler</literal> has the method: <parameter>BackupScheduler.schedule(backupConfig, startDate, stopDate, chainPeriod, incrementalPeriod)</parameter>
+ </para>
+ <variablelist>
+ <title>BackupScheduler Method</title>
+ <varlistentry>
+ <term>backupConfig</term>
+ <listitem>
+ <para>
+ A ready configuration which will be given to the <literal>BackupManager.startBackup()</literal> method.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>startDate</term>
+ <listitem>
+ <para>
+ The date and time of the backup start.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>stopDate</term>
+ <listitem>
+ <para>
+ The date and time of the backup stop.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chainPeriod</term>
+ <listitem>
+ <para>
+ A period after which a current <literal>BackupChain</literal> will be stopped and a new one will be started in seconds.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>incrementalPeriod</term>
+ <listitem>
+ <para>
+ If it is greater than <literal>0</literal>, it will be used to override the same value in <literal>backupConfig</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
<programlisting language="Java">// geting the scheduler from the BackupManager
BackupScheduler scheduler = backup.getScheduler();
@@ -643,30 +631,33 @@
// the scheduler will search in internal tasks list for task with repository and
// workspace name from the configuration and will stop that task.
scheduler.unschedule(config);</programlisting>
- <para>
- When the BackupScheduler starts the scheduling, it uses the internal Timer with startDate for the first (or just once) execution. If chainPeriod is greater than 0, then the task is repeated with this value used as a period starting from startDate. Otherwise, the task will be executed once at startDate time. If the scheduler has stopDate, it will stop the task ( the chain cycle) after stopDate. And the last parameter incrementalPeriod will be used instead of the same from BackupConfig if its values are greater than 0.
- </para>
- <para>
- Starting each task (BackupScheduler.schedule(...)), the scheduler creates a task file in the service working directory (see <emphasis role="bold">Configuration</emphasis>, backup-dir) which describes the task backup configuration and periodic values. These files will be used at the backup service start (JVM start) to reinitialize BackupScheduler for continuous task scheduling. Only tasks that don't have a stopDate or a stopDate not expired will be reinitialized.
- </para>
- <para>
- There is one notice about BackupScheduler task reinitialization in the current implementation. It comes from the BackupScheduler nature and its implemented behaviour. As the scheduler is just a virtual user which asks the BackupManager to start or stop backup operations, it isn't able to reinitialize each existing BackupChain before the service (JVM) is stopped. But it's possible to start a new operation with the same configuration via BackupManager (that was configured before and stored in a task file).
- </para>
- <para>
- This is a main detail of the BackupScheduler which should be taken into suggestion of a backup operation design now. In case of reinitialization, the task will have new time values for the backup operation cycle as the chainPeriod and incrementalPeriod will be applied again. That behaviour may be changed in the future.
- </para>
+ <para>
+ When the <literal>BackupScheduler</literal> starts the scheduling, it uses the internal an Timer with <literal>startDate</literal> for the first (or just once) execution. If <literal>chainPeriod</literal> is greater than <literal>0</literal>, then the task is repeated with this value used as a period starting from <literal>startDate</literal>.
+ </para>
+ <para>
+ Otherwise, the task will be executed once at <literal>startDate</literal> time. If the scheduler has <literal>stopDate</literal>, it will stop the task (the chain cycle) after <literal>stopDate</literal>. And the last parameter <literal>incrementalPeriod</literal> will be used instead of the same from <literal>BackupConfig</literal> if its values are greater than <literal>0</literal>.
+ </para>
+ <para>
+ Starting each task (<literal>BackupScheduler.schedule(...)</literal>), the scheduler creates a task file in the service working directory (see <emphasis role="bold">Configuration</emphasis>, <parameter>backup-dir</parameter>) which describes the task backup configuration and periodic values. These files will be used at the backup service start (JVM start) to reinitialize <literal>BackupScheduler</literal> for continuous task scheduling. Only tasks that do not have a <literal>stopDate</literal> or a <literal>stopDate</literal> not expired will be reinitialized.
+ </para>
+ <para>
+ There is one notice about <literal>BackupScheduler</literal> task reinitialization in the current implementation. It comes from the <literal>BackupScheduler</literal> nature and its implemented behavior. As the scheduler is just a virtual user which asks the <literal>BackupManager</literal> to start or stop backup operations, it is not able to reinitialize each existing <literal>BackupChain</literal> before the service (JVM) is stopped. But it's possible to start a new operation with the same configuration via <literal>BackupManager</literal> (that was configured before and stored in a task file).
+ </para>
+ <para>
+ This is a main detail of the <literal>BackupScheduler</literal> which should be taken into suggestion of a backup operation design now. In case of reinitialization, the task will have new time values for the backup operation cycle as the <literal>chainPeriod</literal> and <literal>incrementalPeriod</literal> will be applied again. That behaviour may be changed in the future.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Restore_existing_workspace_or_repository">
- <title>Restore existing workspace or repository</title>
- <para>
- The resore of existing workspace or repositry is available.
- </para>
- <para>
- For restore will be used spacial methods:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Restore_existing_workspace_or_repository">
+ <title>Restore existing workspace or repository</title>
+ <para>
+ The resore of existing workspace or repositry is available.
+ </para>
+ <para>
+ For restore will be used special methods:
+ </para>
+
<programlisting language="Java"> /**
* Restore existing workspace. Previous data will be deleted.
* For getting status of workspace restore can use
@@ -740,51 +731,51 @@
*/
void restoreExistingRepository(RepositoryBackupChainLog log, RepositoryEntry repositoryEntry, boolean asynchronous)
throws BackupOperationException, BackupConfigurationException;</programlisting>
- <para>
- These methods for restore will do:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- remove existed workspace or repository;
- </para>
+ <para>
+ These methods for restore will:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Remove existed workspace or repository;
+ </para>
- </listitem>
- <listitem>
- <para>
- clean database;
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Clean database;
+ </para>
- </listitem>
- <listitem>
- <para>
- clean index data;
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Clean index data;
+ </para>
- </listitem>
- <listitem>
- <para>
- clean value storage;
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Clean value storage;
+ </para>
- </listitem>
- <listitem>
- <para>
- restore from backup.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Restore from backup.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Restore_a_workspace_or_a_repository_using_original_configuration">
- <title>Restore a workspace or a repository using original configuration</title>
- <para>
- The Backup manager allows you to restore a repository or a workspace using the original configuration stored into the backup log:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Restore_a_workspace_or_a_repository_using_original_configuration">
+ <title>Restore a workspace or a repository using original configuration</title>
+ <para>
+ The Backup manager allows you to restore a repository or a workspace using the original configuration stored into the backup log:
+ </para>
+
<programlisting language="Java">/**
* Restore existing workspace. Previous data will be deleted.
* For getting status of workspace restore can use
@@ -919,55 +910,61 @@
void restoreRepository(File repositoryBackupSetDir, boolean asynchronous) throws BackupOperationException,
BackupConfigurationException;</programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Backup_set_portability">
- <title>Backup set portability</title>
- <para>
- The Backup log is stored during the Backup operation into two different locations: backup-dir directory of BackupService to support interactive operations via Backup API (e.g. console) and backup set files for portability (e.g. on another server).
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-Backup_set_portability">
+ <title>Backup set portability</title>
+ <para>
+ The Backup log is stored during the Backup operation into two different locations: <parameter>backup-dir</parameter> directory of <literal>BackupService</literal> to support interactive operations via Backup API (e.g. console) and backup set files for portability (e.g. on another server).
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-RDBMS_backup">
- <title>RDBMS backup</title>
- <para>
- RDBMS backup It is another implementation of full backup job for BackupManager service. It is useful in case when database is used to store data.
- </para>
- <para>
- Brings such advantages:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- fast: backup takes only several minutes to perform full backup of repository with 1 million rows in tables;
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_JCR_Backup_Service-RDBMS_backup">
+ <title>RDBMS backup</title>
+ <para>
+ RDBMS backup is another implementation of a full backup job for <literal>BackupManager</literal> service.
+ </para>
- </listitem>
- <listitem>
- <para>
- atomic restore: restore process into existing workspace/repository with same configuration is atomic, it means you don’t loose the data when restore failed, the original data remains;
- </para>
-
- </listitem>
- <listitem>
- <para>
- cluster aware: it is possible to make backup/restore in cluster environment into existing workspace/repository with same configuration;
- </para>
-
- </listitem>
- <listitem>
- <para>
- consistence backup: all threads make waiting until backup is finished and then continue to work, so, there are no data modification during backup process;
- </para>
-
- </listitem>
-
- </itemizedlist>
- Configuration:
- </para>
-
+ <variablelist>
+ <title>Advantages of RDBMS backup</title>
+ <varlistentry>
+ <term>Speed</term>
+ <listitem>
+ <para>
+ It only takes minutes to perform full backup of repository with 1 million rows in tables;
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Atomic restore</term>
+ <listitem>
+ <para>
+ The restore process into existing workspace/repository with same configuration is atomic. This means you do not lose the data if the restore fails; the original data is retained;
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Cluster aware</term>
+ <listitem>
+ <para>
+ It is possible to backup into or restore from a cluster environment into existing workspace/repository with same configuration;
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Consistent backup</term>
+ <listitem>
+ <para>
+ All threads wait until the backup is finished and before resuming, ensuring there are no data modification during backup process;
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Configuration:
+ </para>
+
<programlisting language="XML"><component>
<key>org.exoplatform.services.jcr.ext.backup.BackupManager</key>
<type>org.exoplatform.services.jcr.ext.backup.impl.BackupManagerImpl</type>
@@ -983,7 +980,7 @@
</component>
</programlisting>
- </section>
+ </section>
</section>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/use-external-backup-tool.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/use-external-backup-tool.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/backup/use-external-backup-tool.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -4,78 +4,78 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide_eXo_JCR_1.14-Use_external_backup_tool">
- <title>Use external backup tool</title>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Use_external_backup_tool-Repository_suspending">
- <title>Repository suspending</title>
- <para>
- To have the repository content consistent with the search index and value storate, the repository should be suspened. It means all working threads are suspended until resume operation performed. Index will be flushed.
- </para>
- <para>
- JCR provides ability to suspend repository via JMX.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/repository-suspend-controller.png" />
- </imageobject>
+ <title>Use External Backup Tool</title>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Use_external_backup_tool-Repository_suspending">
+ <title>Repository Suspending</title>
+ <para>
+ To have the repository content consistent with the search index and value storage, the repository should be suspened. This means all working threads are suspended until a resume operation is performed. The index will be flushed.
+ </para>
+ <para>
+ JCR provides ability to suspend repository via JMX.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/repository-suspend-controller.png" />
+ </imageobject>
- </mediaobject>
- <para>
- To suspend repository just need to invoke suspend() operation. The returned result will be "suspended" if everything passed successfully.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/repository-suspend-controller-suspended.png" />
- </imageobject>
+ </mediaobject>
+ <para>
+ To suspend repository you need to invoke the <literal>suspend()</literal> operation. The returned result will be "<emphasis>suspended</emphasis>" if everything passed successfully.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/repository-suspend-controller-suspended.png" />
+ </imageobject>
- </mediaobject>
- <para>
- The result "undefined" means not all components successfully suspended, check console to see stacktraces.
- </para>
+ </mediaobject>
+ <para>
+ An "<emphasis>undefined</emphasis>" result means not all components were successfully suspended. Check the console to review the stacktraces.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Use_external_backup_tool-Backup">
- <title>Backup</title>
- <para>
- Now we can backup content manually or using third part software. We need to backup:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Database
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Use_external_backup_tool-Backup">
+ <title>Backup</title>
+ <para>
+ You can backup your content manually or by using third part software. You should back up:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Database.
+ </para>
- </listitem>
- <listitem>
- <para>
- Lucene index
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Lucene index.
+ </para>
- </listitem>
- <listitem>
- <para>
- Value storage (if configured)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Value storage (if configured).
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Use_external_backup_tool-Repository_resuming">
- <title>Repository resuming</title>
- <para>
- Once backup is done need to invoke resume() operation to switch repository back to online. The returned result will be "online".
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/repository-suspend-controller-online.png" />
- </imageobject>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Use_external_backup_tool-Repository_resuming">
+ <title>Repository Resuming</title>
+ <para>
+ Once a backup is done you need to invoke the <literal>resume()</literal> operation to switch the repository back to online. The returned result will be "<emphasis>online</emphasis>".
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/repository-suspend-controller-online.png" />
+ </imageobject>
- </mediaobject>
+ </mediaobject>
- </section>
+ </section>
</section>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-exo-implementation.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-exo-implementation.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-exo-implementation.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -4,184 +4,185 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide_eXo_JCR_1.14-Implementation">
- <!-- This document was created with Syntext Serna Free. --> <title>Implementation</title>
- <para>
- The relationships between the eXo Repository Service components are illustrated below:
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/concepts/exojcr.gif" />
- </imageobject>
+ <!-- This document was created with Syntext Serna Free. -->
+ <title>Implementation</title>
+ <para>
+ The relationships between the eXo Repository Service components are illustrated below:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/concepts/exojcr.gif" />
+ </imageobject>
- </mediaobject>
- <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Implementation-Definitions">
- <title>Definitions</title>
- <varlistentry>
- <term>eXo Container:</term>
- <listitem>
- <para>
- A subclass of <parameter>org.exoplatform.container.ExoContainer</parameter> (<parameter>org.exoplatform.container.PortalContainer</parameter>) holds a reference to the Repository Service.
- </para>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>Repository Service</term>
- <listitem>
- <para>
- This contains information about repositories. eXo JCR is able to manage many Repositories.
- </para>
+ </mediaobject>
+ <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-Implementation-Definitions">
+ <title>Definitions</title>
+ <varlistentry>
+ <term>eXo Container:</term>
+ <listitem>
+ <para>
+ A subclass of <parameter>org.exoplatform.container.ExoContainer</parameter> (<parameter>org.exoplatform.container.PortalContainer</parameter>) holds a reference to the Repository Service.
+ </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>Repository Service</term>
+ <listitem>
+ <para>
+ This contains information about repositories. eXo JCR is able to manage many Repositories.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Repository:</term>
- <listitem>
- <para>
- An implementation of <literal>javax.jcr.Repository</literal>. It holds references to one or more Workspace(s).
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Repository</term>
+ <listitem>
+ <para>
+ An implementation of <literal>javax.jcr.Repository</literal>. It holds references to one or more Workspace(s).
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Workspace:</term>
- <listitem>
- <para>
- Container of a single rooted tree of Items.
- </para>
- <note>
- <title>Note:</title>
- <para>
- That here it is not exactly the same as <literal>javax.jcr.Workspace</literal> as it is not a per Session object.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Workspace</term>
+ <listitem>
+ <para>
+ Container of a single rooted tree of Items.
+ </para>
+ <note>
+ <title>Note:</title>
+ <para>
+ That here it is not exactly the same as <literal>javax.jcr.Workspace</literal> as it is not a per Session object.
+ </para>
- </note>
+ </note>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
+ </variablelist>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <para>
- The usual JCR application usecase includes two initial steps:
- </para>
- <procedure>
- <step>
- <para>
- Obtaining Repository object by getting <emphasis role="bold">Repository Service</emphasis> via JNDI lookup if eXo repository is bound to the naming context using (see <xref linkend="sect-Reference_Guide_eXo_JCR_1.14-JCR_configuration" /> for details).
- </para>
+ </variablelist>
+ <para>
+ The usual JCR application usecase includes two initial steps:
+ </para>
+ <procedure>
+ <step>
+ <para>
+ Obtaining Repository object by getting <emphasis role="bold">Repository Service</emphasis> via JNDI lookup if eXo repository is bound to the naming context using (see <xref linkend="sect-Reference_Guide_eXo_JCR_1.14-JCR_configuration" /> for details).
+ </para>
- </step>
- <step>
- <para>
- Creating a <parameter>javax.jcr.Session object</parameter> that calls <parameter>Repository.login(..)</parameter>.
- </para>
+ </step>
+ <step>
+ <para>
+ Creating a <parameter>javax.jcr.Session object</parameter> that calls <parameter>Repository.login(..)</parameter>.
+ </para>
- </step>
+ </step>
- </procedure>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Implementation-Workspace_Data_Model">
- <title>Workspace Data Model</title>
- <para>
- The following diagram explains which components of a eXo JCR implementation are used in a data flow to perform operations specified in the JCR API.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/concepts/wsdatamodel.gif" width="444" />
- </imageobject>
+ </procedure>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Implementation-Workspace_Data_Model">
+ <title>Workspace Data Model</title>
+ <para>
+ The following diagram explains which components of a eXo JCR implementation are used in a data flow to perform operations specified in the JCR API.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/concepts/wsdatamodel.gif" width="444" />
+ </imageobject>
- </mediaobject>
- <para>
- The Workspace Data Model can be split into four levels by data isolation and value from the JCR model point of view.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- eXo JCR core implements <emphasis role="bold">JCR API</emphasis> interfaces, such as Item, Node, Property. It contains JCR "logical" view on stored data.
- </para>
+ </mediaobject>
+ <para>
+ The Workspace Data Model can be split into four levels by data isolation and value from the JCR model point of view.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The eXo JCR core implements <emphasis role="bold">JCR API</emphasis> interfaces, such as Item, Node, Property. It contains JCR "<emphasis>logical</emphasis>" view on stored data.
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Session Level</emphasis>: isolates transient data viewable inside one JCR Session and interacts with API level using eXo JCR internal API.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Session Level</emphasis>: isolates transient data viewable inside one JCR Session and interacts with API level using eXo JCR internal API.
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Session Data Manager</emphasis>: maintains transient session data. With data access/ modification/ validation logic, it contains Modified Items Storage to hold the data changed between subsequent save() calling and Session Items Cache.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Session Data Manager</emphasis>: maintains transient session data. With data access/ modification/ validation logic, it contains Modified Items Storage to hold the data changed between subsequent save() calling and Session Items Cache.
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Transaction Data Manager</emphasis>: maintains session data between save() and transaction commit/ rollback if the current session is part of a transaction.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Transaction Data Manager</emphasis>: maintains session data between save() and transaction commit/ rollback if the current session is part of a transaction.
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Workspace Level</emphasis>: operates for particular workspace shared data. It contains per-Workspace objects
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Workspace Level</emphasis>: operates for particular workspace shared data. It contains per-Workspace objects
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Workspace Storage Data Manager:</emphasis> maintains workspace data, including final validation, events firing, caching.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Workspace Storage Data Manager:</emphasis> maintains workspace data, including final validation, events firing, caching.
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Workspace Data Container</emphasis>: implements physical data storage. It allows different types of backend (like RDB, FS files, etc) to be used as a storage for JCR data. With the main Data Container, other storages for persisted Property Values can be configured and used.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Workspace Data Container</emphasis>: implements physical data storage. It allows different types of backend (like RDB, FS files, etc) to be used as a storage for JCR data. With the main Data Container, other storages for persisted Property Values can be configured and used.
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Indexer:</emphasis> maintains workspace data indexing for further queries.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Indexer:</emphasis> maintains workspace data indexing for further queries.
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Storage Level</emphasis>: Persistent storages for:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- JCR Data
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Storage Level</emphasis>: Persistent storages for:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ JCR Data
+ </para>
- </listitem>
- <listitem>
- <para>
- Indexes (Apache Lucene)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Indexes (Apache Lucene)
+ </para>
- </listitem>
- <listitem>
- <para>
- Values (e.g., for BLOBs) if different from the main Data Container
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Values (e.g., for BLOBs) if different from the main Data Container
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
+ </section>
</section>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-extensions.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-extensions.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-extensions.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -4,133 +4,177 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide_eXo_JCR_1.14-JCR_Extensions">
- <title>JCR Extensions</title>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-JCR_Extensions-JCR_Service_Extensions">
- <title>JCR Service Extensions</title>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-JCR_Service_Extensions-Concept">
- <title>Concept</title>
- <para>
- eXo JCR supports <emphasis role="bold">observation</emphasis> (JSR-170 8.3), which enables applications to register interest in events that describe changes to a workspace, and then monitor and respond to those events. The standard observation feature allows dispatching events when <emphasis role="bold">persistent change</emphasis> to the workspace is made.
- </para>
- <para>
- eXo JCR also offers a proprietary <emphasis role="bold">Extension Action</emphasis> which dispatches and activates an event upon each <emphasis role="bold">transient session level change</emphasis>, performed by a client. In other words, the event is triggered when a client's program invokes some updating methods (such as: <literal>Session.addNode()</literal>, <literal>Session.setProperty()</literal>, <literal>Workspace.move()</literal>) in a session or a workspace.
- </para>
- <note>
- <title>Note:</title>
- <para>
- Each action will add its own execution time to the standard JCR methods (<literal>Session.addNode()</literal>, <literal>Session.setProperty()</literal>, <literal>Workspace.move()</literal>) execution time. As a consequence, it's necessary to minimize Action.execute(Context) body execution time.
- </para>
+ <title>JCR Extensions</title>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-JCR_Extensions-JCR_Service_Extensions">
+ <title>JCR Service Extensions</title>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-JCR_Service_Extensions-Concept">
+ <title>Concept</title>
+ <para>
+ eXo JCR supports <emphasis role="bold">observation</emphasis> (JSR-170 8.3), which enables applications to register interest in events that describe changes to a workspace, and then monitor and respond to those events. The standard observation feature allows dispatching events when <emphasis role="bold">persistent change</emphasis> to the workspace is made.
+ </para>
+ <para>
+ eXo JCR also offers a proprietary <emphasis role="bold">Extension Action</emphasis> which dispatches and activates an event upon each <emphasis role="bold">transient session level change</emphasis>, performed by a client. In other words, the event is triggered when a client's program invokes some updating methods (such as: <literal>Session.addNode()</literal>, <literal>Session.setProperty()</literal>, <literal>Workspace.move()</literal>) in a session or a workspace.
+ </para>
+ <note>
+ <title>Note:</title>
+ <para>
+ Each action will add its own execution time to the standard JCR methods (<literal>Session.addNode()</literal>, <literal>Session.setProperty()</literal>, <literal>Workspace.move()</literal>) execution time. As a consequence, it's necessary to minimize Action.execute(Context) body execution time.
+ </para>
- </note>
- <para>
- To make the rule, you can use the dedicated Thread in <literal>Action.execute(Context)</literal> body for a custom logic.
- </para>
- <para>
- However, if your application logic requires the action to add items to a created or updated item and you save these changes immediately after the JCR API method call is returned, the suggestion with Thread is not applicable for you in this case.
- </para>
- <figure id="figu-Reference_Guide_eXo_JCR_1.14-Concept-Implementation">
- <title>Implementation</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/concepts/interceptor.jpg" width="444" />
- </imageobject>
+ </note>
+ <para>
+ To make the rule, you can use the dedicated Thread in <literal>Action.execute(Context)</literal> body for a custom logic.
+ </para>
+ <para>
+ However, if your application logic requires the action to add items to a created or updated item and you save these changes immediately after the JCR API method call is returned, the suggestion with Thread is not applicable for you in this case.
+ </para>
+ <figure id="figu-Reference_Guide_eXo_JCR_1.14-Concept-Implementation">
+ <title>Implementation</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/concepts/interceptor.jpg" width="444" />
+ </imageobject>
- </mediaobject>
- <caption>Interceptor framework class diagram.</caption>
- </figure>
+ </mediaobject>
+ <caption>Interceptor framework class diagram.</caption>
+ </figure>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-JCR_Service_Extensions-Configuration">
- <title>Configuration</title>
- <para>
- Add a <literal>SessionActionCatalog</literal> service and an appropriate <literal>AddActionsPlugin</literal> (see the example below) configuration to your eXo Container configuration.
- </para>
- <para>
- Each Action entry is exposed as <literal>org.exoplatform.services.jcr.impl.ext.action</literal>. <literal>ActionConfiguration</literal> of actions collection of <literal>org.exoplatform.services.jcr.impl.ext.action.AddActionsPlugin$ActionsConfig</literal> (see an example below).
- </para>
- <para>
- The mandatory field named <literal>actionClassName</literal> is the fully qualified name of <literal>org.exoplatform.services.command.action.Action implementation</literal>. The command will be launched in case the current event matches the <emphasis role="bold">criteria</emphasis>. All other fields are criteria. The criteria are appended together with *<emphasis role="bold">AND</emphasis>* operations.
- </para>
- <para>
- In other words, for a particular item to be listened to, it must meet ALL the criteria:
- </para>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>Workspace</term>
- <listitem>
- <para>
- The comma delimited (ORed) list of workspaces.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-JCR_Service_Extensions-Configuration">
+ <title>Configuration</title>
+ <para>
+ Add a <literal>SessionActionCatalog</literal> service and an appropriate <literal>AddActionsPlugin</literal> (see the example below) configuration to your eXo Container configuration.
+ </para>
+ <para>
+ Each Action entry is exposed as <literal>org.exoplatform.services.jcr.impl.ext.action</literal>. <literal>ActionConfiguration</literal> of actions collection of <literal>org.exoplatform.services.jcr.impl.ext.action.AddActionsPlugin$ActionsConfig</literal> (see an example below).
+ </para>
+ <para>
+ The mandatory field named <literal>actionClassName</literal> is the fully qualified name of <literal>org.exoplatform.services.command.action.Action implementation</literal>. The command will be launched in case the current event matches the <emphasis role="bold">criteria</emphasis>. All other fields are criteria. The criteria are appended together with *<emphasis role="bold">AND</emphasis>* operations.
+ </para>
+ <para>
+ In other words, for a particular item to be listened to, it must meet ALL the criteria:
+ </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>Workspace</term>
+ <listitem>
+ <para>
+ The comma delimited (ORed) list of workspaces.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>eventTypes</term>
- <listitem>
- <para>
- A comma delimited (ORed) <emphasis role="bold">list of event names</emphasis> (see below) to be listened to. This is the only mandatory field, others are optional and if they are missing they are interpreted as ANY.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>eventTypes</term>
+ <listitem>
+ <para>
+ A comma delimited (ORed) <emphasis role="bold">list of event names</emphasis> (see below) to be listened to. This is the only mandatory field, others are optional and if they are missing they are interpreted as ANY.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>path</term>
- <listitem>
- <para>
- A comma delimited (ORed) list of <emphasis role="bold">item absolute paths</emphasis> (or within its subtree if <emphasis role="bold">isDeep</emphasis> is <emphasis role="bold">true</emphasis>, which is the default value).
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>path</term>
+ <listitem>
+ <para>
+ A comma delimited (ORed) list of <emphasis role="bold">item absolute paths</emphasis> (or within its subtree if <emphasis role="bold">isDeep</emphasis> is <emphasis role="bold">true</emphasis>, which is the default value).
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>nodeTypes</term>
- <listitem>
- <para>
- A comma delimited (ORed) list of the <emphasis role="bold">current NodeType</emphasis>. Since version 1.6.1 JCR supports the functionalities of nodeType and parentNodeType. This parameter has different semantics, depending on the type of the current item and the operation performed. If the <emphasis role="bold">current item</emphasis> is a <emphasis role="bold">property</emphasis> it means the <emphasis role="bold">parent node type</emphasis>. If the <emphasis role="bold">current item</emphasis> is a <emphasis role="bold">node,</emphasis> the semantic depends on the event type: ** <emphasis role="bold">add node event</emphasis>: the node type of the newly added node. ** <emphasis role="bold">add mixin event</emphasis>: the newly added mixing node type of the current node. ** <emphasis role="bold">remove mixin event</emphasis> the removed mixin type of the current node. ** <emphasis role="bold">other events</emphasis>: the already assigned NodeType(s) of the current n!
ode (can be both primary and mixin).
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>nodeTypes</term>
+ <listitem>
+ <para>
+ A comma delimited (ORed) list of the <emphasis role="bold">current NodeType</emphasis>.
+ </para>
+ <para>
+ Since version 1.6.1 JCR supports the functionalities of <literal>nodeType</literal> and <literal>parentNodeType</literal>. This parameter has different semantics depending on the type of the current item and the operation performed:
+ </para>
+ <para>
+ If the current item is a <emphasis role="bold">property</emphasis> it means the <emphasis role="bold">parent node type</emphasis>.
+ </para>
- </listitem>
+ <para>
+ If the current item is a <emphasis role="bold">node,</emphasis> the semantic depends on the event type:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">add node event</emphasis>: the node type of the newly added node.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">add mixin event</emphasis>: the newly added mixing node type of the current node.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">remove mixin event</emphasis> the removed mixin type of the current node.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">other events</emphasis>: the already assigned NodeType(s) of the current node (can be both primary and mixin).
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <note>
- <title>Note</title>
- <para>
- Remember the following points:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- The list of fields can be extended.
- </para>
+ </variablelist>
+ <note>
+ <title>Note</title>
+ <para>
+ Remember the following points:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The list of fields can be extended.
+ </para>
- </listitem>
- <listitem>
- <para>
- Do not use spaces between list elements.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Do not use spaces between list elements.
+ </para>
- </listitem>
- <listitem>
- <para>
- The <literal>sDeep=false</literal> property means node, node properties and child nodes.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <literal>sDeep=false</literal> property means node, node properties and child nodes.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </note>
- <para>
- The list of supported Event names: <emphasis role="bold">addNode</emphasis>, <emphasis role="bold">addProperty</emphasis>, <emphasis role="bold">changeProperty</emphasis>, <emphasis role="bold">removeProperty</emphasis>, <emphasis role="bold">removeNode</emphasis>, <emphasis role="bold">addMixin</emphasis>, <emphasis role="bold">removeMixin</emphasis>, <emphasis role="bold">lock</emphasis>, <emphasis role="bold">unlock</emphasis>, <emphasis role="bold">checkin</emphasis>, <emphasis role="bold">checkout</emphasis>, <emphasis role="bold">read</emphasis>.
- </para>
-
+ </note>
+ <para>
+ The list of supported Event names is:
+ </para>
+ <itemizedlist>
+ <listitem><para><emphasis role="bold">addNode</emphasis></para></listitem>
+ <listitem><para><emphasis role="bold">addProperty</emphasis></para></listitem>
+ <listitem><para><emphasis role="bold">changeProperty</emphasis></para></listitem>
+ <listitem><para><emphasis role="bold">removeProperty</emphasis></para></listitem>
+ <listitem><para><emphasis role="bold">removeNode</emphasis></para></listitem>
+ <listitem><para><emphasis role="bold">addMixin</emphasis></para></listitem>
+ <listitem><para><emphasis role="bold">removeMixin</emphasis></para></listitem>
+ <listitem><para><emphasis role="bold">lock</emphasis></para></listitem>
+ <listitem><para><emphasis role="bold">unlock</emphasis></para></listitem>
+ <listitem><para><emphasis role="bold">checkin</emphasis></para></listitem>
+ <listitem><para><emphasis role="bold">checkout</emphasis></para></listitem>
+ <listitem><para><emphasis role="bold">read</emphasis></para></listitem>
+ </itemizedlist>
<programlisting language="XML" role="XML"><component>
<type>org.exoplatform.services.jcr.impl.ext.action.SessionActionCatalog</type>
<component-plugins>
@@ -164,11 +208,11 @@
</component-plugins>
</component></programlisting>
- </section>
-
+ </section>
+
- </section>
-
+ </section>
+
</section>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-namespace-altering.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-namespace-altering.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-namespace-altering.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -4,39 +4,39 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide_eXo_JCR_1.14-Namespace_Altering">
- <!-- This document was created with Syntext Serna Free. --> <title>Namespace Altering</title>
- <para>
- Since version 1.11, eXo JCR implementation supports namespaces altering.
- </para>
- <formalpara id="form-Reference_Guide_eXo_JCR_1.14-Namespace_Altering-Adding_new_namespace">
- <title>Adding new namespace</title>
- <para>
- Add a new namespace with:
- </para>
+ <!-- This document was created with Syntext Serna Free. --> <title>Namespace Altering</title>
+ <para>
+ Since version 1.11, the eXo JCR implementation supports namespaces altering.
+ </para>
+ <formalpara id="form-Reference_Guide_eXo_JCR_1.14-Namespace_Altering-Adding_new_namespace">
+ <title>Adding New Namespace</title>
+ <para>
+ Add a new namespace with:
+ </para>
- </formalpara>
-
+ </formalpara>
+
<programlisting language="Java" role="Java">ExtendedNamespaceRegistry namespaceRegistry = (ExtendedNamespaceRegistry) workspace.getNamespaceRegistry();
namespaceRegistry.registerNamespace("newMapping", "http://dumb.uri/jcr");</programlisting>
- <formalpara id="form-Reference_Guide_eXo_JCR_1.14-Namespace_Altering-Changing_existing_namespace">
- <title>Changing existing namespace</title>
- <para>
- Change an existing namespace with:
- </para>
+ <formalpara id="form-Reference_Guide_eXo_JCR_1.14-Namespace_Altering-Changing_existing_namespace">
+ <title>Changing Existing Namespace</title>
+ <para>
+ Change an existing namespace with:
+ </para>
- </formalpara>
-
+ </formalpara>
+
<programlisting language="Java" role="Java">ExtendedNamespaceRegistry namespaceRegistry = (ExtendedNamespaceRegistry) workspace.getNamespaceRegistry();
namespaceRegistry.registerNamespace("newMapping", "http://dumb.uri/jcr");
namespaceRegistry.registerNamespace("newMapping2", "http://dumb.uri/jcr");</programlisting>
- <formalpara id="form-Reference_Guide_eXo_JCR_1.14-Namespace_Altering-Removing_existing_namespace">
- <title>Removing existing namespace</title>
- <para>
- Remove an existing namespace with:
- </para>
+ <formalpara id="form-Reference_Guide_eXo_JCR_1.14-Namespace_Altering-Removing_existing_namespace">
+ <title>Removing Existing Namespace</title>
+ <para>
+ Remove an existing namespace with:
+ </para>
- </formalpara>
-
+ </formalpara>
+
<programlisting language="Java" role="Java">ExtendedNamespaceRegistry namespaceRegistry = (ExtendedNamespaceRegistry) workspace.getNamespaceRegistry();
namespaceRegistry.registerNamespace("newMapping", "http://dumb.uri/jcr");
namespaceRegistry.unregisterNamespace("newMapping");</programlisting>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-usage.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-usage.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/jcr-usage.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -4,29 +4,29 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide_eXo_JCR_1.14-Using_The_JCR">
- <title>Using The JCR</title>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Using_The_JCR-Obtaining_a_Repository_Object">
- <title>Obtaining a Repository Object</title>
- <para>
- A <literal>javax.jcr.Repository</literal> object can be obtained by:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Using the eXo Container <emphasis>native</emphasis> mechanism. All Repositories are kept with a single <literal>RepositoryService</literal> component. This can be obtained from the eXo Container as follows:
- </para>
-
+ <title>Using The JCR</title>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Using_The_JCR-Obtaining_a_Repository_Object">
+ <title>Obtaining a Repository Object</title>
+ <para>
+ A <literal>javax.jcr.Repository</literal> object can be obtained by:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Using the eXo Container <emphasis>native</emphasis> mechanism. All Repositories are kept with a single <literal>RepositoryService</literal> component. This can be obtained from the eXo Container as follows:
+ </para>
+
<programlisting language="Java" role="Java">
RepositoryService repositoryService = (RepositoryService) container.getComponentInstanceOfType(RepositoryService.class);
Repository repository = repositoryService.getRepository("repositoryName");
</programlisting>
- </listitem>
- <listitem>
- <para>
- Using the eXo Container <emphasis>native</emphasis>" mechanism with a thread local saved <literal>current</literal> repository (particularly if you plan to use a single repository, which covers more than 90% of use cases).
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Using the eXo Container <emphasis>native</emphasis>" mechanism with a thread local saved <literal>current</literal> repository (particularly if you plan to use a single repository, which covers more than 90% of use cases).
+ </para>
+
<programlisting language="Java" role="Java"> // set current repository at initial time
RepositoryService repositoryService = (RepositoryService) container.getComponentInstanceOfType(RepositoryService.class);
repositoryService.setCurrentRepositoryName("repositoryName");
@@ -35,64 +35,64 @@
Repository repository = repositoryService.getCurrentRepository();
</programlisting>
- </listitem>
- <listitem>
- <para>
- Using JNDI as specified in JSR-170. This way you have to configure the reference:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Using JNDI as specified in JSR-170. This way you have to configure the reference:
+ </para>
+
<programlisting language="Java" role="Java"> Context ctx = new InitialContext();
Repository repository =(Repository) ctx.lookup("repositoryName");</programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Using_The_JCR-JCR_Session_common_considerations">
- <title>JCR Session common considerations</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Remember that javax.jcr.Session is not a thread safe object. <emphasis role="bold">Never try to share it between threads</emphasis>.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Using_The_JCR-JCR_Session_common_considerations">
+ <title>JCR Session common considerations</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Remember that <literal>javax.jcr.Session</literal> is not a thread safe object. <emphasis role="bold">Never try to share it between threads</emphasis>.
+ </para>
- </listitem>
- <listitem>
- <para>
- Do not use <emphasis role="bold">System session</emphasis> from the <emphasis role="bold">user</emphasis> related code because a system session has <emphasis role="bold">unlimited rights</emphasis>. Call ManageableRepository.getSystemSession() from <emphasis role="bold">process</emphasis> related code only.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Do not use <emphasis role="bold">System session</emphasis> from the <emphasis role="bold">user</emphasis> related code because a system session has <emphasis role="bold">unlimited rights</emphasis>. Call ManageableRepository.getSystemSession() from <emphasis role="bold">process</emphasis> related code only.
+ </para>
- </listitem>
- <listitem>
- <para>
- Call <literal>Session.logout()</literal> explicitly to <emphasis role="bold">release resources</emphasis> assigned to the session.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Call <literal>Session.logout()</literal> explicitly to <emphasis role="bold">release resources</emphasis> assigned to the session.
+ </para>
- </listitem>
- <listitem>
- <para>
- When designing your application, take care of the Session policy inside your application. Two <emphasis role="bold">strategies</emphasis> are possible: <emphasis role="bold">Stateless</emphasis> (Session per business request) and <emphasis role="bold">Stateful</emphasis> (Session per User) or some mix.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ When designing your application, take care of the Session policy inside your application. Two strategies are possible: <emphasis role="bold">Stateless</emphasis> (Session per business request) and <emphasis role="bold">Stateful</emphasis> (Session per User) or some mix.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </para>
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Using_The_JCR-JCR_Application_ractices">
- <title>JCR Application ractices</title>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-JCR_Application_ractices-Log_Out_of_All_Open_Sessions">
- <title>Log Out of All Open Sessions</title>
- <para>
- Use <literal>org.exoplatform.services.jcr.ext.common.SessionProvider</literal> which is responsible for caching or obtaining your JCR Sessions and closing all opened sessions at once.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Using_The_JCR-JCR_Application_ractices">
+ <title>JCR Application ractices</title>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-JCR_Application_ractices-Log_Out_of_All_Open_Sessions">
+ <title>Log Out of All Open Sessions</title>
+ <para>
+ Use <literal>org.exoplatform.services.jcr.ext.common.SessionProvider</literal> which is responsible for caching or obtaining your JCR Sessions and closing all opened sessions at once.
+ </para>
+
<programlisting language="Java" role="Java">public class SessionProvider {
/**
@@ -125,10 +125,10 @@
public static SessionProvider createAnonimProvider()
}</programlisting>
- <para>
- The <literal>SessionProvider</literal> is per-request or per-user object, depending on your policy. Create it with your application before performing JCR operations, use it to obtain the Sessions and close at the end of an application <literal>session(request)</literal>. See the following example:
- </para>
-
+ <para>
+ The <literal>SessionProvider</literal> is per-request or per-user object, depending on your policy. Create it with your application before performing JCR operations, use it to obtain the Sessions and close at the end of an application <literal>session(request)</literal>. See the following example:
+ </para>
+
<programlisting language="Java" role="Java">// (1) obtain current javax.jcr.Credentials, for example get it from AuthenticationService
Credentials cred = ....
@@ -149,103 +149,103 @@
// Close the session provider
sessionProvider.close();</programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-JCR_Application_ractices-Reusing_SessionProvider">
- <title>Reusing SessionProvider</title>
- <para>
- Since creating the <literal>SessionProvider</literal> involves multiple steps which may need to be repeated for each JCR session, the <literal>SessionProviderService</literal> assists you to get a <literal>SessionProvider</literal> object.
- </para>
- <para>
- The <literal>org.exoplatform.services.jcr.ext.app.SessionProviderService</literal> interface is defined as follows:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-JCR_Application_ractices-Reusing_SessionProvider">
+ <title>Reusing SessionProvider</title>
+ <para>
+ Since creating the <literal>SessionProvider</literal> involves multiple steps which may need to be repeated for each JCR session, the <literal>SessionProviderService</literal> assists you to get a <literal>SessionProvider</literal> object.
+ </para>
+ <para>
+ The <literal>org.exoplatform.services.jcr.ext.app.SessionProviderService</literal> interface is defined as follows:
+ </para>
+
<programlisting language="Java" role="Java">public interface SessionProviderService {
void setSessionProvider(Object key, SessionProvider sessionProvider);
SessionProvider getSessionProvider(Object key);
void removeSessionProvider(Object key);
}</programlisting>
- <para>
- The main contract of an implemented component is obtaining a <literal>SessionProvider</literal> by key. the eXo JCR provides two implementations:
- </para>
- <table id="tabl-Reference_Guide_eXo_JCR_1.14-Reusing_SessionProvider-SessionProvider_implementations">
- <title>SessionProvider implementations</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- Implementation
- </entry>
- <entry>
- Description
- </entry>
- <entry>
- Typical Use
- </entry>
+ <para>
+ The main contract of an implemented component is obtaining a <literal>SessionProvider</literal> by key. the eXo JCR provides two implementations:
+ </para>
+ <table id="tabl-Reference_Guide_eXo_JCR_1.14-Reusing_SessionProvider-SessionProvider_implementations">
+ <title>SessionProvider implementations</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ Implementation
+ </entry>
+ <entry>
+ Description
+ </entry>
+ <entry>
+ Typical Use
+ </entry>
- </row>
+ </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <literal>org.exoplatform.services.jcr.ext.app.MapStoredSessionProviderService</literal>
- </entry>
- <entry>
- Per-user style which keeps objects in a Map.
- </entry>
- <entry>
- Per-user. The usual practice utilizes a user's name or Credentials as a key.
- </entry>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>org.exoplatform.services.jcr.ext.app.MapStoredSessionProviderService</literal>
+ </entry>
+ <entry>
+ Per-user style which keeps objects in a Map.
+ </entry>
+ <entry>
+ Per-user. The usual practice utilizes a user's name or Credentials as a key.
+ </entry>
- </row>
- <row>
- <entry>
- <literal>org.exoplatform.services.jcr.ext.app.ThreadLocalSessionProviderService</literal>
- </entry>
- <entry>
- Per-request style which keeps a single <literal>SessionProvider</literal> in a static ThreadLocal variable.
- </entry>
- <entry>
- Always use null for the key.
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>org.exoplatform.services.jcr.ext.app.ThreadLocalSessionProviderService</literal>
+ </entry>
+ <entry>
+ Per-request style which keeps a single <literal>SessionProvider</literal> in a static ThreadLocal variable.
+ </entry>
+ <entry>
+ Always use null for the key.
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <para>
- For any implementation, your code should adhere to the following sequence:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Call <literal>SessionProviderService.setSessionProvider(Object key|SessionProvider|sessionProvider)</literal> at the beginning of a business request for Stateless application or application's session for Statefull policy.
- </para>
+ </table>
+ <para>
+ For any implementation, your code should adhere to the following sequence:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Call <literal>SessionProviderService.setSessionProvider(Object key, SessionProvider, sessionProvider)</literal> at the beginning of a business request for Stateless application or application's session for Statefull policy.
+ </para>
- </listitem>
- <listitem>
- <para>
- Call <literal>SessionProviderService.getSessionProvider(Object key)</literal> for obtaining a SessionProvider object
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Call <literal>SessionProviderService.getSessionProvider(Object key)</literal> for obtaining a SessionProvider object
+ </para>
- </listitem>
- <listitem>
- <para>
- Call <literal>SessionProviderService.removeSessionProvider(Object key)</literal> at the end of a business request for Stateless application or application's session for Statefull policy.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Call <literal>SessionProviderService.removeSessionProvider(Object key)</literal> at the end of a business request for Stateless application or application's session for Statefull policy.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
+ </section>
+
- </section>
+ </section>
</section>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/nodetype-registration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/nodetype-registration.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/nodetype-registration.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -4,33 +4,33 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide_eXo_JCR_1.14-NodeType_Registration">
- <!-- This document was created with Syntext Serna Free. --> <title>NodeType Registration</title>
- <para>
- eXo JCR implementation supports two ways of Nodetypes registration:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- From a <literal>NodeTypeValue</literal> POJO. Refer to <xref linkend="exam-Reference_Guide_eXo_JCR_1.14-Node_type_registration-Run_time_registration_using_NodeTypeValue" />
- </para>
+ <!-- This document was created with Syntext Serna Free. --> <title>NodeType Registration</title>
+ <para>
+ The eXo JCR implementation supports two methods of Nodetypes registration:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ From a <literal>NodeTypeValue</literal> POJO. Refer to <xref linkend="exam-Reference_Guide_eXo_JCR_1.14-Node_type_registration-Run_time_registration_using_NodeTypeValue" />
+ </para>
- </listitem>
- <listitem>
- <para>
- From an XML document. Refer to <xref linkend="exam-Reference_Guide_eXo_JCR_1.14-Node_type_registration-Run_time_registration_from_xml_file" />.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ From an XML document. Refer to <xref linkend="exam-Reference_Guide_eXo_JCR_1.14-Node_type_registration-Runtime_Registration_From_XML_File" />.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-NodeType_Registration-Interfaces_and_methods">
- <title>Interfaces and methods</title>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-ExtendedNodeTypeManager">
- <title>ExtendedNodeTypeManager</title>
- <para>
- The <literal>ExtendedNodeTypeManager</literal> (from JCR 1.11) interface provides the following methods related to registering node types:
- </para>
-
+ </itemizedlist>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-NodeType_Registration-Interfaces_and_methods">
+ <title>Interfaces and methods</title>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-ExtendedNodeTypeManager">
+ <title><literal>ExtendedNodeTypeManager</literal></title>
+ <para>
+ The <literal>ExtendedNodeTypeManager</literal> (from JCR 1.11) interface provides the following methods related to registering node types:
+ </para>
+
<programlisting language="Java" role="Java">public static final int IGNORE_IF_EXISTS = 0;
public static final int FAIL_IF_EXISTS = 2;
@@ -78,14 +78,14 @@
NoSuchNodeTypeException,
RepositoryException;</programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-NodeTypeValue">
- <title>NodeTypeValue</title>
- <para>
- The NodeTypeValue interface represents a simple container structure used to define node types which are then registered through the ExtendedNodeTypeManager.registerNodeType method. The implementation of this interface does not contain any validation logic.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-NodeTypeValue">
+ <title><literal>NodeTypeValue</literal></title>
+ <para>
+ The NodeTypeValue interface represents a simple container structure used to define node types which are then registered through the ExtendedNodeTypeManager.registerNodeType method. The implementation of this interface does not contain any validation logic.
+ </para>
+
<programlisting language="Java" role="Java">/**
* @return Returns the declaredSupertypeNames.
*/
@@ -163,14 +163,14 @@
*/
public void setDeclaredPropertyDefinitionValues(List<PropertyDefinitionValue> declaredPropertyDefinitionValues);</programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-NodeDefinitionValue">
- <title>NodeDefinitionValue</title>
- <para>
- The NodeDefinitionValue interface extends ItemDefinitionValue with the addition of writing methods, enabling the characteristics of a child node definition to be set, after that the NodeDefinitionValue is added to a NodeTypeValue.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-NodeDefinitionValue">
+ <title><literal>NodeDefinitionValue</literal></title>
+ <para>
+ The <literal>NodeDefinitionValue</literal> interface extends <literal>ItemDefinitionValue</literal> with the addition of writing methods, enabling the characteristics of a child node definition to be set, after that the <literal>NodeDefinitionValue</literal> is added to a <literal>NodeTypeValue</literal>.
+ </para>
+
<programlisting language="Java" role="Java">/**
* @return Returns the declaredSupertypeNames.
*/
@@ -250,16 +250,16 @@
</programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-PropertyDefinitionValue">
- <title>PropertyDefinitionValue</title>
- <para>
- The <literal>PropertyDefinitionValue</literal> interface extends <literal>ItemDefinitionValue</literal> with the addition of writing methods, enabling the characteristics of a child property definition to be set, after that the <literal>PropertyDefinitionValue</literal> is added to a <literal>NodeTypeValue</literal>.
- </para>
- <example id="exam-Reference_Guide_eXo_JCR_1.14-PropertyDefinitionValue-PropertyDefinitionValue">
- <title>PropertyDefinitionValue</title>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-PropertyDefinitionValue">
+ <title><literal>PropertyDefinitionValue</literal></title>
+ <para>
+ The <literal>PropertyDefinitionValue</literal> interface extends <literal>ItemDefinitionValue</literal> with the addition of writing methods, enabling the characteristics of a child property definition to be set, after that the <literal>PropertyDefinitionValue</literal> is added to a <literal>NodeTypeValue</literal>.
+ </para>
+ <example id="exam-Reference_Guide_eXo_JCR_1.14-PropertyDefinitionValue-PropertyDefinitionValue">
+ <title><literal>PropertyDefinitionValue</literal></title>
+
<programlisting language="Java" role="Java">/**
* @return Returns the defaultValues.
*/
@@ -300,10 +300,10 @@
*/
public void setValueConstraints(List<String> valueConstraints);</programlisting>
- </example>
- <example id="exam-Reference_Guide_eXo_JCR_1.14-PropertyDefinitionValue-ItemDefinitionValue">
- <title>ItemDefinitionValue</title>
-
+ </example>
+ <example id="exam-Reference_Guide_eXo_JCR_1.14-PropertyDefinitionValue-ItemDefinitionValue">
+ <title><literal>ItemDefinitionValue</literal></title>
+
<programlisting language="Java" role="Java"> /**
* @return Returns the autoCreate.
*/
@@ -353,27 +353,27 @@
* @param readOnly The readOnly to set.
*/
public void setReadOnly(boolean readOnly);</programlisting>
- </example>
+ </example>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-Node_type_registration">
- <title>Node type registration</title>
- <para>
- The eXo JCR implementation supports various methods of the node-type registration.
- </para>
- <example id="exam-Reference_Guide_eXo_JCR_1.14-Node_type_registration-Run_time_registration_from_xml_file">
- <title>Run time registration from xml file</title>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-Node_type_registration">
+ <title>Node type registration</title>
+ <para>
+ The eXo JCR implementation supports various methods of the node-type registration.
+ </para>
+ <example id="exam-Reference_Guide_eXo_JCR_1.14-Node_type_registration-Runtime_Registration_From_XML_File">
+ <title>Runtime Registration From XML File</title>
+
<programlisting language="Java" role="Java">ExtendedNodeTypeManager nodeTypeManager = (ExtendedNodeTypeManager) session.getWorkspace()
.getNodeTypeManager();
InputStream is = MyClass.class.getResourceAsStream("mynodetypes.xml");
nodeTypeManager.registerNodeTypes(is,ExtendedNodeTypeManager.IGNORE_IF_EXISTS );</programlisting>
- </example>
- <example id="exam-Reference_Guide_eXo_JCR_1.14-Node_type_registration-Run_time_registration_using_NodeTypeValue">
- <title>Run time registration using NodeTypeValue</title>
-
+ </example>
+ <example id="exam-Reference_Guide_eXo_JCR_1.14-Node_type_registration-Run_time_registration_using_NodeTypeValue">
+ <title>Run time registration using NodeTypeValue</title>
+
<programlisting language="Java" role="Java">ExtendedNodeTypeManager nodeTypeManager = (ExtendedNodeTypeManager) session.getWorkspace()
.getNodeTypeManager();
NodeTypeValue testNValue = new NodeTypeValue();
@@ -397,37 +397,37 @@
nodeTypeManager.registerNodeType(testNValue, ExtendedNodeTypeManager.FAIL_IF_EXISTS);</programlisting>
- </example>
+ </example>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-Changing_existing_node_type">
- <title>Changing existing node type</title>
- <para>
- To replace an existing node type definition pass <literal>ExtendedNodeTypeManager.REPLACE_IF_EXISTS</literal> as a second parameter for the method <literal>ExtendedNodeTypeManager.registerNodeType</literal>.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-Changing_Existing_Node_Type">
+ <title>Changing Existing Node Type</title>
+ <para>
+ To replace an existing node type definition pass <literal>ExtendedNodeTypeManager.REPLACE_IF_EXISTS</literal> as a second parameter for the method <literal>ExtendedNodeTypeManager.registerNodeType</literal>.
+ </para>
+
<programlisting language="Java" role="Java">ExtendedNodeTypeManager nodeTypeManager = (ExtendedNodeTypeManager) session.getWorkspace()
.getNodeTypeManager();
InputStream is = MyClass.class.getResourceAsStream("mynodetypes.xml");
.....
nodeTypeManager.registerNodeTypes(is,ExtendedNodeTypeManager.REPLACE_IF_EXISTS );</programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-Removing_node_type">
- <title>Removing node type</title>
- <para>
- A node type cannot be removed if the repository contains an instance of that node type.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-Removing_node_type">
+ <title>Removing node type</title>
+ <para>
+ A node type cannot be removed if the repository contains an instance of that node type.
+ </para>
+
<programlisting language="Java" role="Java">nodeTypeManager.unregisterNodeType(<literal>myNodeType</literal>);</programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-Adding_new_PropertyDefinition">
- <title>Adding new PropertyDefinition</title>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-Adding_new_PropertyDefinition">
+ <title>Adding New <literal>PropertyDefinition</literal></title>
+
<programlisting language="Java" role="Java">
NodeTypeValue myNodeTypeValue = nodeTypeManager.getNodeTypeValue(myNodeTypeName);
List<PropertyDefinitionValue> props = new ArrayList<PropertyDefinitionValue>();
@@ -444,14 +444,14 @@
nodeTypeManager.registerNodeType(myNodeTypeValue, ExtendedNodeTypeManager.REPLACE_IF_EXISTS);</programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-Adding_new_child_NodeDefinition">
- <title>Adding new child NodeDefinition</title>
- <para>
- Use the code below to add a new child <literal>NodeDefinition</literal>.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-Adding_new_child_NodeDefinition">
+ <title>Adding New Child <literal>NodeDefinition</literal></title>
+ <para>
+ Use the code below to add a new child <literal>NodeDefinition</literal>.
+ </para>
+
<programlisting language="Java" role="Java">NodeTypeValue myNodeTypeValue = nodeTypeManager.getNodeTypeValue(myNodeTypeName);
List<NodeDefinitionValue> nodes = new ArrayList<NodeDefinitionValue>();
@@ -467,72 +467,72 @@
nodeTypeManager.registerNodeType(myNodeTypeValue, ExtendedNodeTypeManager.REPLACE_IF_EXISTS);</programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-Edit_existing_PropertyDefinition_or_child_NodeDefinition">
- <title>Edit existing PropertyDefinition or child NodeDefinition</title>
- <para>
- Note that the existing data must be consistent before changing or removing a existing definition.
- </para>
- <para>
- The JCR does not allow you to change the node type in any way in which the existing data would be incompatible with the new node type.
- </para>
- <para>
- But if these changes are necessary, an incremental process (which consistently changes the node type and the existing data) can achieve node type changes that would not be possible in a direct call.
- </para>
- <para>
- For example: If you wanted to add a new residual property definition called <literal>downloadCount</literal> to the existing node type <literal>myNodeType</literal>, you would encounter two limitations that would not allow you to execute the task with a single call of registerNodeType method.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Existing nodes of the type <literal>myNodeType</literal>, which does not contain properties <literal>downloadCount</literal> that conflicts with node type what we need.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-Edit_existing_PropertyDefinition_or_child_NodeDefinition">
+ <title>Edit Existing <literal>PropertyDefinition</literal> or Child <literal>NodeDefinition</literal></title>
+ <para>
+ Note that the existing data must be consistent before changing or removing a existing definition.
+ </para>
+ <para>
+ The JCR does not allow you to change the node type in any way in which the existing data would be incompatible with the new node type.
+ </para>
+ <para>
+ But if these changes are necessary, an incremental process (which consistently changes the node type and the existing data) can achieve node type changes that would not be possible in a direct call.
+ </para>
+ <para>
+ For example: If you wanted to add a new residual property definition called <literal>downloadCount</literal> to the existing node type <literal>myNodeType</literal>, you would encounter two limitations that would not allow you to execute the task with a single call of registerNodeType method.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Existing nodes of the type <literal>myNodeType</literal>, which does not contain properties <literal>downloadCount</literal> that conflicts with node type what we need.
+ </para>
- </listitem>
- <listitem>
- <para>
- Registered node type <literal>myNodeType</literal> will not allow us to add properties <literal>downloadCount</literal> because it has no such specific properties.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Registered node type <literal>myNodeType</literal> will not allow us to add properties <literal>downloadCount</literal> because it has no such specific properties.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- The task could be executed, however, with the following steps:
- </para>
- <procedure>
- <title></title>
- <step>
- <para>
- Change the existing node type <literal>myNodeType</literal> by adding the mandatory property <literal>downloadCount</literal>.
- </para>
+ </itemizedlist>
+ <para>
+ The task could be executed, however, with the following steps:
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Change the existing node type <literal>myNodeType</literal> by adding the mandatory property <literal>downloadCount</literal>.
+ </para>
- </step>
- <step>
- <para>
- Add the node type <literal>myNodeType</literal> with the property <literal>downloadCount</literal> to all the existing node types.
- </para>
+ </step>
+ <step>
+ <para>
+ Add the node type <literal>myNodeType</literal> with the property <literal>downloadCount</literal> to all the existing node types.
+ </para>
- </step>
- <step>
- <para>
- Change the definition of the property <literal>downloadCount</literal> of the node type <literal>myNodeType</literal> to mandatory.
- </para>
+ </step>
+ <step>
+ <para>
+ Change the definition of the property <literal>downloadCount</literal> of the node type <literal>myNodeType</literal> to mandatory.
+ </para>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-Changing_the_list_of_super_types">
- <title>Changing the list of super types</title>
- <para>
- Use the following code to change the list of super types:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Interfaces_and_methods-Changing_the_list_of_super_types">
+ <title>Changing The List of Super Types</title>
+ <para>
+ Use the following code to change the list of super types:
+ </para>
+
<programlisting language="Java" role="Java">NodeTypeValue testNValue = nodeTypeManager.getNodeTypeValue("exo:myNodeType");
List<String> superType = testNValue.getDeclaredSupertypeNames();
@@ -541,10 +541,10 @@
nodeTypeManager.registerNodeType(testNValue, ExtendedNodeTypeManager.REPLACE_IF_EXISTS);</programlisting>
- </section>
-
+ </section>
+
- </section>
+ </section>
</section>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -4,24 +4,24 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide_eXo_JCR_1.14-Node_Types_and_Namespaces">
- <title>Node Types and Namespaces</title>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Node_Types_and_Namespaces-Introduction">
- <title>Introduction</title>
- <para>
- The JSR-170 specification requires support of node types and namespaces. Beyond the methods required by the specification, the eXo JCR has its own API extension for NodeType registration as well as the ability to declaratively define node types in the Repository at the start-up time.
- </para>
+ <title>Node Types and Namespaces</title>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Node_Types_and_Namespaces-Introduction">
+ <title>Introduction</title>
+ <para>
+ The JSR-170 specification requires support of node types and namespaces. Beyond the methods required by the specification, the eXo JCR has its own API extension for NodeType registration as well as the ability to declaratively define node types in the Repository at the start-up time.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Node_Types_and_Namespaces-Node_Types_definition">
- <title>Node Types definition</title>
- <para>
- Node type registration extension is declared in <literal>org.exoplatform.services.jcr.core.nodetype.ExtendedNodeTypeManager</literal> interface
- </para>
- <para>
- Your custom service can register some necessary predefined node types at start up. The node definition should be placed in a special XML file (refer to the DTD below for more information) and declared in the service's configuration file via the eXo component plugin mechanism, described as follows:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Node_Types_and_Namespaces-Node_Types_definition">
+ <title>Node Types Definition</title>
+ <para>
+ Node type registration extension is declared in <literal>org.exoplatform.services.jcr.core.nodetype.ExtendedNodeTypeManager</literal> interface
+ </para>
+ <para>
+ Your custom service can register some necessary predefined node types at start up. The node definition should be placed in a special XML file (refer to the DTD below for more information) and declared in the service's configuration file via the eXo component plugin mechanism, described as follows:
+ </para>
+
<programlisting language="XML" role="XML"><external-component-plugins>
<target-component>org.exoplatform.services.jcr.RepositoryService</target-component>
<component-plugin>
@@ -47,28 +47,28 @@
</values-param>
</init-params>
</component-plugin></programlisting>
- <para>
- There are two types of registration:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Registration of node types in all created repositories, it is configured in values-param with the name <emphasis role="bold">autoCreatedInNewRepository</emphasis>.
- </para>
+ <para>
+ There are two types of registration:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Registration of node types in all created repositories, it is configured in values-param with the name <emphasis role="bold">autoCreatedInNewRepository</emphasis>.
+ </para>
- </listitem>
- <listitem>
- <para>
- Registration of node types in specified repository and it is configured in values-param with the name of repository.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Registration of node types in specified repository and it is configured in values-param with the name of repository.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- Node type definition file format:
- </para>
-
+ </itemizedlist>
+ <para>
+ Node type definition file format:
+ </para>
+
<programlisting language="XML" role="XML"> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nodeTypes [
<!ELEMENT nodeTypes (nodeType)*>
@@ -120,17 +120,17 @@
<!ELEMENT requiredPrimaryType (CDATA)>
]></programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Node_Types_and_Namespaces-Namespaces_definition">
- <title>Namespaces definition</title>
- <para>
- Default namespaces are registered by repository at start up.
- </para>
- <para>
- Your custom service can extend a set of namespaces with some application specific ones, declaring it in service's configuration file thanks to eXo component plugin mechanism, described as follows:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Node_Types_and_Namespaces-Namespaces_definition">
+ <title>Namespaces Definition</title>
+ <para>
+ Default namespaces are registered by repository at start up.
+ </para>
+ <para>
+ Your custom service can extend a set of namespaces with some application specific ones, declaring it in service's configuration file thanks to eXo component plugin mechanism, described as follows:
+ </para>
+
<programlisting language="XML" role="XML"> <component-plugin>
<name>add.namespaces</name>
<set-method>addPlugin</set-method>
@@ -143,8 +143,8 @@
</init-params>
</component-plugin></programlisting>
- </section>
-
+ </section>
+
</section>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/configuration/jdbc-data-container-config.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/configuration/jdbc-data-container-config.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/configuration/jdbc-data-container-config.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -4,476 +4,539 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide_eXo_JCR_1.14-JDBC_Data_Container_Config">
- <title>JDBC Data Container Config</title>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-JDBC_Data_Container_Config-Introduction">
- <title>Introduction</title>
- <para>
- The data container uses the JDBC driver to communicate with the actual database software, i.e. any JDBC-enabled data storage can be used with eXo JCR implementation.
- </para>
- <para>
- Currently the data container is tested with the following RDBMS:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- MySQL 5.1 MYSQL Connector/J 5.1.8
- </para>
+ <title>JDBC Data Container Config</title>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-JDBC_Data_Container_Config-Introduction">
+ <title><remark>Introduction</remark></title>
+ <para>
+ The data container uses the JDBC driver to communicate with the actual database software, i.e. any JDBC-enabled data storage can be used with eXo JCR implementation.
+ </para>
+ <para>
+ Currently the data container is tested with the following RDBMS:
+ </para>
+<!-- Source Metadata
+URL: NA (email from Nicholas Filetto to jbossexoD(a)googlegroups.com on 10/18/2011
+Author [w/email]: Nicholas Filetto: nicolas.filotto(a)exoplatform.com
+License: NA
+-->
+<remark>Below list updated as per email from Nicholas Filetto to jbossexoD(a)googlegroups.com on 10/18/2011</remark>
+ <itemizedlist>
+ <listitem>
+ <para>
+ MySQL 5.0.81 Driver: MySQL Connector/J 5.0.8
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ MySQL 5.1.36 Driver: MYSQL Connector/J 5.1.14
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Oracle DB 10g R2 (10.2.0.4) Driver: Oracle 10g R2 (10.2.0.4)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Oracle DB 11g R1 (11.1.0.6.0) Driver: Oracle 11g R1 (11.2.0.1.0)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Oracle DB 11g R2 (11.2.0.1.0) Driver: Oracle JDBC Driver v11.2.0.1.0
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ MS SQL Server 2005 SP1 Driver: JDBC Driver 3.0
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ MS SQL Server 2008 Driver: JDBC Driver 3.0
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ PostgresSQL 8.2.4 Driver: JDBC3 Driver, Version 8.2-507
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ PostgresSQL 8.3.7 Driver: JDBC3 Driver, Version 8.3-606
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IBM DB2 9.7.4 Driver: IBM Data Server Driver for JDBC and SQLJ V9.7
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Sybase 15.0.3 ASE Driver: Sybase jConnect JDBC driver v6.05
+ </para>
+ </listitem>
+ </itemizedlist>
+ <!--<itemizedlist>
+ <listitem>
+ <para>
+ MySQL 5.1 MYSQL Connector/J 5.1.8
+ </para>
- </listitem>
- <listitem>
- <para>
- PostgresSQL 8.3.7 JDBC4 Driver, Version 8.3-605
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ PostgresSQL 8.3.7 JDBC4 Driver, Version 8.3-605
+ </para>
- </listitem>
- <listitem>
- <para>
- Oracle DB 11g (11.0.1.6), JDBC Driver Oracle 11g R1 (11.1.0.6.0)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Oracle DB 11g (11.0.1.6), JDBC Driver Oracle 11g R1 (11.1.0.6.0)
+ </para>
- </listitem>
- <listitem>
- <para>
- DB2 9,7 IBM Data Server Driver for JDBC and SQLJ (JCC Driver) v.9.1 (fixpack 3a)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ DB2 9,7 IBM Data Server Driver for JDBC and SQLJ (JCC Driver) v.9.1 (fixpack 3a)
+ </para>
- </listitem>
- <listitem>
- <para>
- MS SQL Server 2005 SP3 JDBC Driver 2.0
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ MS SQL Server 2005 SP3 JDBC Driver 2.0
+ </para>
- </listitem>
- <listitem>
- <para>
- Sybase 15.0.3 Driver: Sybase jConnect JDBC driver v7 (Build 26502)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Sybase 15.0.3 Driver: Sybase jConnect JDBC driver v7 (Build 26502)
+ </para>
- </listitem>
- <listitem>
- <para>
- HSQLDB (2.0.0)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ HSQLDB (2.0.0)
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <note>
- <title>Isolation Levels</title>
- <para>
- The JCR requires at least the <parameter>READ_COMMITED</parameter> isolation level and other RDBMS configurations can cause some side-effects and issues. So, please, make sure proper isolation level is configured on database server side.
- </para>
+ </itemizedlist>-->
+ <note>
+ <title>Isolation Levels</title>
+ <para>
+ The JCR requires at least the <parameter>READ_COMMITED</parameter> isolation level and other RDBMS configurations can cause some side-effects and issues. So, please, make sure proper isolation level is configured on database server side.
+ </para>
- </note>
- <para>
- Each database software supports ANSI SQL standards but also has its own specifics. Therefore each database has its own configuration setting in the eXo JCR as a database dialect parameter. More detailed configuration of the database can be set by editing the metadata SQL-script files.
- </para>
- <para>
- You can find SQL-scripts in <filename>conf/storage/</filename> directory of the <filename><replaceable><JBOSS_HOME></replaceable>jboss-as/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/lib/exo.jcr.component.core-XXX.XXX.jar</filename> file .
- </para>
- <para>
- The following tables show the correspondence between the scripts and databases:
- </para>
- <table id="tabl-Reference_Guide_eXo_JCR_1.14-Introduction-Single_database">
- <title>Single-database</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Database
- </entry>
- <entry>
- Script
- </entry>
+ </note>
+ <para>
+ Each database software supports ANSI SQL standards but also has its own specifics. Therefore each database has its own configuration setting in the eXo JCR as a database dialect parameter. More detailed configuration of the database can be set by editing the metadata SQL-script files.
+ </para>
+ <para>
+ You can find SQL-scripts in <filename>conf/storage/</filename> directory of the <filename><replaceable><JBOSS_HOME></replaceable>jboss-as/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/lib/exo.jcr.component.core-XXX.XXX.jar</filename> file .
+ </para>
+ <para>
+ The following tables show the correspondence between the scripts and databases:
+ </para>
+ <table id="tabl-Reference_Guide_eXo_JCR_1.14-Introduction-Single_database">
+ <title>Single-database</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ Database
+ </entry>
+ <entry>
+ Script
+ </entry>
- </row>
+ </row>
- </thead>
- <tbody>
- <row>
- <entry>
- MySQL DB
- </entry>
- <entry>
- <filename>jcr-sjdbc.mysql.sql</filename>
- </entry>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ MySQL DB
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.mysql.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- MySQL DB with utf-8
- </entry>
- <entry>
- <filename>jcr-sjdbc.mysql-utf8.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ MySQL DB with utf-8
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.mysql-utf8.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- PostgresSQL
- </entry>
- <entry>
- <filename>jcr-sjdbc.pqsql.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ PostgresSQL
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.pqsql.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- Oracle DB
- </entry>
- <entry>
- <filename>jcr-sjdbc.ora.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ Oracle DB
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.ora.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- DB2 9.7
- </entry>
- <entry>
- <filename>jcr-sjdbc.db2.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ DB2 9.7
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.db2.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- MS SQL Server
- </entry>
- <entry>
- <filename>jcr-sjdbc.mssql.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ MS SQL Server
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.mssql.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- Sybase
- </entry>
- <entry>
- <filename>jcr-sjdbc.sybase.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ Sybase
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.sybase.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- HSQLDB
- </entry>
- <entry>
- <filename>jcr-sjdbc.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ HSQLDB
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.sql</filename>
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <table id="tabl-Reference_Guide_eXo_JCR_1.14-Introduction-Multi_database">
- <title>Multi-database</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Database
- </entry>
- <entry>
- Script
- </entry>
+ </table>
+ <table id="tabl-Reference_Guide_eXo_JCR_1.14-Introduction-Multi_database">
+ <title>Multi-database</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ Database
+ </entry>
+ <entry>
+ Script
+ </entry>
- </row>
+ </row>
- </thead>
- <tbody>
- <row>
- <entry>
- MySQL DB
- </entry>
- <entry>
- <filename>jcr-mjdbc.mysql.sql</filename>
- </entry>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ MySQL DB
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.mysql.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- MySQL DB with utf-8
- </entry>
- <entry>
- <filename>jcr-mjdbc.mysql-utf8.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ MySQL DB with utf-8
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.mysql-utf8.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- PostgresSQL
- </entry>
- <entry>
- <filename>jcr-mjdbc.pqsql.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ PostgresSQL
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.pqsql.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- Oracle DB
- </entry>
- <entry>
- <filename>jcr-mjdbc.ora.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ Oracle DB
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.ora.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- DB2 9.7
- </entry>
- <entry>
- <filename>jcr-mjdbc.db2.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ DB2 9.7
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.db2.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- MS SQL Server
- </entry>
- <entry>
- <filename>jcr-mjdbc.mssql.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ MS SQL Server
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.mssql.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- Sybase
- </entry>
- <entry>
- <filename>jcr-mjdbc.sybase.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ Sybase
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.sybase.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- HSQLDB
- </entry>
- <entry>
- <filename>jcr-mjdbc.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ HSQLDB
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.sql</filename>
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <para>
- If a non-ANSI node name is used, you must use a database with MultiLanguage support. Some JDBC drivers need additional parameters for establishing a Unicode friendly connection. For example under mysql it is necessary to add an additional parameter for the JDBC driver at the end of JDBC URL:
- </para>
- <example id="exam-Reference_Guide_eXo_JCR_1.14-Introduction-Example_Parameter">
- <title>Example Parameter</title>
-
+ </table>
+ <para>
+ If a non-ANSI node name is used, you must use a database with MultiLanguage support. Some JDBC drivers need additional parameters for establishing a Unicode friendly connection. For example under mysql it is necessary to add an additional parameter for the JDBC driver at the end of JDBC URL:
+ </para>
+ <example id="exam-Reference_Guide_eXo_JCR_1.14-Introduction-Example_Parameter">
+ <title>Example Parameter</title>
+
<programlisting><code>jdbc:mysql://exoua.dnsalias.net/portal?characterEncoding=utf8</code></programlisting>
- </example>
- <para>
- The configuration files are located in service jars <filename>/conf/portal/configuration.xml</filename> (eXo services including JCR Repository Service) and <filename>exo-jcr-config.xml</filename> (repositories configuration) by default. In JBoss Enterprise Portal Platform, the JCR is configured in portal web application <filename>portal/WEB-INF/conf/jcr/jcr-configuration.xml</filename> (JCR Repository Service and related services) and <filename>repository-configuration.xml</filename> (repositories configuration).
- </para>
- <para>
- Read more about <xref linkend="sect-Reference_Guide_eXo_JCR_1.14-JCR_configuration" />.
- </para>
+ </example>
+ <para>
+ The configuration files are located in service jars <filename>/conf/portal/configuration.xml</filename> (eXo services including JCR Repository Service) and <filename>exo-jcr-config.xml</filename> (repositories configuration) by default. In JBoss Enterprise Portal Platform, the JCR is configured in portal web application <filename>portal/WEB-INF/conf/jcr/jcr-configuration.xml</filename> (JCR Repository Service and related services) and <filename>repository-configuration.xml</filename> (repositories configuration).
+ </para>
+ <para>
+ Read more about <xref linkend="sect-Reference_Guide_eXo_JCR_1.14-JCR_configuration" />.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-JDBC_Data_Container_Config-Multi_database_Configuration">
- <title>Multi-database Configuration</title>
- <para>
- You need to configure each workspace in a repository as part of multi-database configuration. Databases may reside on remote servers as required.
- </para>
- <procedure>
- <title></title>
- <step>
- <para>
- Configure the data containers in the <literal>org.exoplatform.services.naming.InitialContextInitializer</literal> service. It's the JNDI context initializer which registers (binds) naming resources (DataSources) for data containers.
- </para>
- <para>
- For example (two data containers <parameter>jdbcjcr</parameter> - local HSQLDB, <parameter>jdbcjcr1</parameter> - remote MySQL):
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-JDBC_Data_Container_Config-Multi_database_Configuration">
+ <title>Multi-database Configuration</title>
+ <para>
+ You need to configure each workspace in a repository as part of multi-database configuration. Databases may reside on remote servers as required.
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Configure the data containers in the <literal>org.exoplatform.services.naming.InitialContextInitializer</literal> service. It's the JNDI context initializer which registers (binds) naming resources (DataSources) for data containers.
+ </para>
+ <para>
+ For example (two data containers <parameter>jdbcjcr</parameter> - local HSQLDB, <parameter>jdbcjcr1</parameter> - remote MySQL):
+ </para>
+
<programlisting language="XML" role="XML">
<xi:include href="../../../../../extras/Advanced_Development_JCR_Configuration/example-1.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <substeps>
- <step>
- <para>
- Configure the database connection parameters:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <parameter>driverliteral</parameter>, e.g. "org.hsqldb.jdbcDriver", "com.mysql.jdbc.Driver", "org.postgresql.Driver"
- </para>
+ <substeps>
+ <step>
+ <para>
+ Configure the database connection parameters:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <parameter>driverliteral</parameter>, e.g. "org.hsqldb.jdbcDriver", "com.mysql.jdbc.Driver", "org.postgresql.Driver"
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>url</parameter>, e.g. "jdbc:hsqldb:file:target/temp/data/portal", "jdbc:mysql://exoua.dnsalias.net/jcr"
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>url</parameter>, e.g. "jdbc:hsqldb:file:target/temp/data/portal", "jdbc:mysql://exoua.dnsalias.net/jcr"
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>username</parameter>, e.g. "sa", "exoadmin"
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>username</parameter>, e.g. "sa", "exoadmin"
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>password</parameter>, e.g. "", "exo12321"
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>password</parameter>, e.g. "", "exo12321"
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </step>
+ </step>
- </substeps>
- <para>
- There can be connection pool configuration parameters (org.apache.commons.dbcp.BasicDataSourceFactory):
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <parameter>maxActive</parameter>, e.g. 50
- </para>
+ </substeps>
+ <para>
+ There can be connection pool configuration parameters (org.apache.commons.dbcp.BasicDataSourceFactory):
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <parameter>maxActive</parameter>, e.g. 50
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>maxIdle</parameter>, e.g. 5
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>maxIdle</parameter>, e.g. 5
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>initialSize</parameter>, e.g. 5
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>initialSize</parameter>, e.g. 5
+ </para>
- </listitem>
- <listitem>
- <para>
- and other according to <ulink url="http://jakarta.apache.org/commons/dbcp/configuration.html">Apache DBCP configuration</ulink>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ and other according to <ulink url="http://jakarta.apache.org/commons/dbcp/configuration.html">Apache DBCP configuration</ulink>
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </step>
- <step>
- <para>
- Configure the repository service. Each workspace will be configured for its own data container.
- </para>
- <para>
- For example (two workspaces <parameter>ws</parameter> - jdbcjcr, <parameter>ws1</parameter> - jdbcjcr1):
- </para>
-
+ </step>
+ <step>
+ <para>
+ Configure the repository service. Each workspace will be configured for its own data container.
+ </para>
+ <para>
+ For example (two workspaces <parameter>ws</parameter> - jdbcjcr, <parameter>ws1</parameter> - jdbcjcr1):
+ </para>
+
<programlisting language="XML" role="XML">
<xi:include href="../../../../../extras/Advanced_Development_JCR_Configuration/example-2.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <itemizedlist>
- <listitem>
- <para>
- <parameter>source-name</parameter>: A javax.sql.DataSource name configured in InitialContextInitializer component (was <parameter>sourceName</parameter> prior JCR 1.9);
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <parameter>source-name</parameter>: A javax.sql.DataSource name configured in InitialContextInitializer component (was <parameter>sourceName</parameter> prior JCR 1.9);
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>dialect</parameter>: A database dialect, one of <literal>hsqldb</literal>, <literal>mysql</literal>, <literal>mysql-utf8</literal>, <literal>pgsql</literal>, <literal>oracle</literal>, <literal>oracle-oci</literal>, <literal>mssql</literal>, <literal>sybase</literal>, <literal>derby</literal>, <literal>db2</literal>, <literal>db2v8</literal> or <literal>auto</literal> for dialect autodetection;
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>dialect</parameter>: A database dialect, one of <literal>hsqldb</literal>, <literal>mysql</literal>, <literal>mysql-utf8</literal>, <literal>pgsql</literal>, <literal>oracle</literal>, <literal>oracle-oci</literal>, <literal>mssql</literal>, <literal>sybase</literal>, <literal>derby</literal>, <literal>db2</literal>, <literal>db2v8</literal> or <literal>auto</literal> for dialect autodetection;
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>multi-db</parameter>: Enable multi-database container with this parameter (set value "true");
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>multi-db</parameter>: Enable multi-database container with this parameter (set value "true");
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>max-buffer-size: A</parameter> a threshold (in bytes) after which a <literal>javax.jcr.Value</literal> content will be swapped to a file in a temporary storage. A swap for pending changes, for example.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>max-buffer-size: A</parameter> a threshold (in bytes) after which a <literal>javax.jcr.Value</literal> content will be swapped to a file in a temporary storage. A swap for pending changes, for example.
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>swap-directory</parameter>: A path in the file system used to swap the pending changes.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>swap-directory</parameter>: A path in the file system used to swap the pending changes.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </step>
+ </step>
- </procedure>
-
- <para>
- This procedure configures two workspace which will be persistent in two different databases (<emphasis>ws</emphasis> in HSQLDB and <emphasis>ws1</emphasis> in MySQL).
- </para>
+ </procedure>
+
+ <para>
+ This procedure configures two workspace which will be persistent in two different databases (<emphasis>ws</emphasis> in HSQLDB and <emphasis>ws1</emphasis> in MySQL).
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-JDBC_Data_Container_Config-Single_database_Configuration">
- <title>Single-database Configuration</title>
- <para>
- Configuring a single-database data container is easier than configuring a multi-database data container as only one naming resource must be configured.
- </para>
- <example id="exam-Reference_Guide_eXo_JCR_1.14-Single_database_Configuration-jdbcjcr_Data_Container">
- <title><parameter>jdbcjcr</parameter> Data Container</title>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-JDBC_Data_Container_Config-Single_database_Configuration">
+ <title>Single-database Configuration</title>
+ <para>
+ Configuring a single-database data container is easier than configuring a multi-database data container as only one naming resource must be configured.
+ </para>
+ <example id="exam-Reference_Guide_eXo_JCR_1.14-Single_database_Configuration-jdbcjcr_Data_Container">
+ <title><parameter>jdbcjcr</parameter> Data Container</title>
+
<programlisting language="XML" role="XML">
<xi:include href="../../../../../extras/Advanced_Development_JCR_Configuration/example-3.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </example>
- <para>
- Configure repository workspaces with this one database. The <parameter>multi-db</parameter> parameter must be set as <literal>false</literal>.
- </para>
- <para>
- For example (two workspaces <parameter>ws</parameter> - <literal>jdbcjcr</literal>, <parameter>ws1</parameter> - <literal>jdbcjcr</literal>):
- </para>
- <example id="exam-Reference_Guide_eXo_JCR_1.14-Single_database_Configuration-Example">
- <title>Example</title>
-
+ </example>
+ <para>
+ Configure repository workspaces with this one database. The <parameter>multi-db</parameter> parameter must be set as <literal>false</literal>.
+ </para>
+ <para>
+ For example (two workspaces <parameter>ws</parameter> - <literal>jdbcjcr</literal>, <parameter>ws1</parameter> - <literal>jdbcjcr</literal>):
+ </para>
+ <example id="exam-Reference_Guide_eXo_JCR_1.14-Single_database_Configuration-Example">
+ <title>Example</title>
+
<programlisting language="XML" role="XML">
<xi:include href="../../../../../extras/Advanced_Development_JCR_Configuration/example-4.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </example>
- <para>
- This configures two persistent workspaces in one database (PostgreSQL).
- </para>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Single_database_Configuration-Configuration_without_DataSource">
- <title>Configuration without DataSource</title>
- <para>
- It is possible to configure the repository without binding <literal>javax.sql.DataSource</literal> in the JNDI service if you have a dedicated JDBC driver implementation with special features like XA transactions, statements/connections pooling etc:
- </para>
- <procedure>
- <title></title>
- <step>
- <para>
- Remove the configuration in <literal>InitialContextInitializer</literal> for your database and configure a new one directly in the workspace container.
- </para>
+ </example>
+ <para>
+ This configures two persistent workspaces in one database (PostgreSQL).
+ </para>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Single_database_Configuration-Configuration_without_DataSource">
+ <title>Configuration without DataSource</title>
+ <para>
+ It is possible to configure the repository without binding <literal>javax.sql.DataSource</literal> in the JNDI service if you have a dedicated JDBC driver implementation with special features like XA transactions, statements/connections pooling etc:
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Remove the configuration in <literal>InitialContextInitializer</literal> for your database and configure a new one directly in the workspace container.
+ </para>
- </step>
- <step>
- <para>
- Remove parameter <parameter>source-name</parameter> and add next lines instead. Describe your values for a JDBC driver, database UR: and username.
- </para>
+ </step>
+ <step>
+ <para>
+ Remove parameter <parameter>source-name</parameter> and add next lines instead. Describe your values for a JDBC driver, database UR: and username.
+ </para>
- </step>
+ </step>
- </procedure>
-
- <warning>
- <title>Connection Pooling</title>
- <para>
- Ensure the JDBC driver provides connection pooling. Connection pooling is strongly recommended for use with the JCR to prevent a database overload.
- </para>
+ </procedure>
+
+ <warning>
+ <title>Connection Pooling</title>
+ <para>
+ Ensure the JDBC driver provides connection pooling. Connection pooling is strongly recommended for use with the JCR to prevent a database overload.
+ </para>
- </warning>
-
+ </warning>
+
<programlisting language="XML" role="XML"><workspace name="ws" auto-init-root-nodetype="nt:unstructured">
<container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
<properties>
@@ -484,72 +547,72 @@
<property name="password" value=""/>
......</programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Single_database_Configuration-Dynamic_Workspace_Creation">
- <title>Dynamic Workspace Creation</title>
- <para>
- Workspaces can be added dynamically during runtime.
- </para>
- <para>
- This can be performed in two steps:
- </para>
- <procedure>
- <title></title>
- <step>
- <para>
- <literal>ManageableRepository.configWorkspace(WorkspaceEntry wsConfig)</literal>: Register a new configuration in RepositoryContainer and create a WorkspaceContainer.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Single_database_Configuration-Dynamic_Workspace_Creation">
+ <title>Dynamic Workspace Creation</title>
+ <para>
+ Workspaces can be added dynamically during runtime.
+ </para>
+ <para>
+ This can be performed in two steps:
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ <literal>ManageableRepository.configWorkspace(WorkspaceEntry wsConfig)</literal>: Register a new configuration in RepositoryContainer and create a WorkspaceContainer.
+ </para>
- </step>
- <step>
- <para>
- <literal>ManageableRepository.createWorkspace(String workspaceName)</literal>: Rreation a new workspace.
- </para>
+ </step>
+ <step>
+ <para>
+ <literal>ManageableRepository.createWorkspace(String workspaceName)</literal>: Rreation a new workspace.
+ </para>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-JDBC_Data_Container_Config-Simple_and_Complex_queries">
- <title>Simple and Complex queries</title>
- <para>
- eXo JCR provides two ways for interact with the database;
- </para>
- <variablelist>
- <title></title>
- <varlistentry>
- <term><literal>JDBCStorageConnection</literal></term>
- <listitem>
- <para>
- Which uses simple queries. Simple queries do not use sub queries, left or right joins. They are implemented in such a way as to support as many database dialects as possible.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-JDBC_Data_Container_Config-Simple_and_Complex_queries">
+ <title>Simple and Complex queries</title>
+ <para>
+ eXo JCR provides two ways for interact with the database;
+ </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term><literal>JDBCStorageConnection</literal></term>
+ <listitem>
+ <para>
+ Which uses simple queries. Simple queries do not use sub queries, left or right joins. They are implemented in such a way as to support as many database dialects as possible.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term><literal>CQJDBCStorageConection</literal></term>
- <listitem>
- <para>
- Which uses complex queries. Complex queries are optimized to reduce the number of database calls.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>CQJDBCStorageConection</literal></term>
+ <listitem>
+ <para>
+ Which uses complex queries. Complex queries are optimized to reduce the number of database calls.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <para>
- Simple queries will be used if you chose <literal>org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer</literal>:
- </para>
-
+ </variablelist>
+ <para>
+ Simple queries will be used if you chose <literal>org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer</literal>:
+ </para>
+
<programlisting language="XML" role="XML"><workspaces>
<workspace name="ws" auto-init-root-nodetype="nt:unstructured">
<container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
@@ -557,10 +620,10 @@
</workspace>
</worksapces>
</programlisting>
- <para>
- Complex queries will be used if you chose <literal>org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer</literal>:
- </para>
-
+ <para>
+ Complex queries will be used if you chose <literal>org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer</literal>:
+ </para>
+
<programlisting language="XML" role="XML"><workspaces>
<workspace name="ws" auto-init-root-nodetype="nt:unstructured">
<container class="org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer">
@@ -568,72 +631,72 @@
</workspace>
</worksapces></programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-JDBC_Data_Container_Config-Force_Query_Hints">
- <title>Force Query Hints</title>
- <para>
- Some databases, such as Oracle and MySQL, support hints to increase query performance. The eXo JCR has separate Complex Query implementations for the Orcale database dialect, which uses query hints to increase performance for few important queries.
- </para>
- <para>
- To enable this option, use the following configuration property:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-JDBC_Data_Container_Config-Force_Query_Hints">
+ <title>Force Query Hints</title>
+ <para>
+ Some databases, such as Oracle and MySQL, support hints to increase query performance. The eXo JCR has separate Complex Query implementations for the Orcale database dialect, which uses query hints to increase performance for few important queries.
+ </para>
+ <para>
+ To enable this option, use the following configuration property:
+ </para>
+
<programlisting language="XML" role="XML"><workspace name="ws" auto-init-root-nodetype="nt:unstructured">
<container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
<properties>
<property name="dialect" value="oracle"/>
<property name="force.query.hints" value="true" />
......</programlisting>
- <para>
- Query hints are only used for Complex Queries with the Oracle dialect. For all other dialects this parameter is ignored.
- </para>
+ <para>
+ Query hints are only used for Complex Queries with the Oracle dialect. For all other dialects this parameter is ignored.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-JDBC_Data_Container_Config-Notes_for_Microsoft_Windows_users">
- <title>Notes for Microsoft Windows users</title>
- <para>
- The current configuration of eXo JCR uses <ulink url="http://commons.apache.org/dbcp/">Apache DBCP</ulink> connection pool (<literal>org.apache.commons.dbcp.BasicDataSourceFactory</literal>).
- </para>
- <para>
- It is possible to set a high value for the <parameter>maxActive</parameter> parameter in the <filename>configuration.xml</filename> file. This creates a high use of TCP/IP ports from a client machine inside the pool (the JDBC driver, for example). As a result, the data container can throw exceptions like "<emphasis>Address already in use</emphasis>".
- </para>
- <para>
- To solve this problem, you must configure the client's machine networking software to use shorter timeouts for open TCP/IP ports.
- </para>
- <para>
- This is done by editing two registry keys within the <parameter>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters</parameter> node. Both of these keys are unset by default. To set the keys as required:
- </para>
- <procedure>
- <title></title>
- <step>
- <para>
- Set the <parameter>MaxUserPort</parameter> registry key to <parameter>=dword:00001b58</parameter>. This sets the maximum of open ports to 7000 or higher (the default is 5000).
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-JDBC_Data_Container_Config-Notes_for_Microsoft_Windows_users">
+ <title>Notes for Microsoft Windows users</title>
+ <para>
+ The current configuration of eXo JCR uses <ulink url="http://commons.apache.org/dbcp/">Apache DBCP</ulink> connection pool (<literal>org.apache.commons.dbcp.BasicDataSourceFactory</literal>).
+ </para>
+ <para>
+ It is possible to set a high value for the <parameter>maxActive</parameter> parameter in the <filename>configuration.xml</filename> file. This creates a high use of TCP/IP ports from a client machine inside the pool (the JDBC driver, for example). As a result, the data container can throw exceptions like "<emphasis>Address already in use</emphasis>".
+ </para>
+ <para>
+ To solve this problem, you must configure the client's machine networking software to use shorter timeouts for open TCP/IP ports.
+ </para>
+ <para>
+ This is done by editing two registry keys within the <parameter>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters</parameter> node. Both of these keys are unset by default. To set the keys as required:
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Set the <parameter>MaxUserPort</parameter> registry key to <parameter>=dword:00001b58</parameter>. This sets the maximum of open ports to 7000 or higher (the default is 5000).
+ </para>
- </step>
- <step>
- <para>
- Set <parameter>TcpTimedWaitDelay</parameter> to <parameter>=dword:0000001e</parameter>. This sets <parameter>TIME_WAIT</parameter> parameter to 30 seconds (the default is 240).
- </para>
+ </step>
+ <step>
+ <para>
+ Set <parameter>TcpTimedWaitDelay</parameter> to <parameter>=dword:0000001e</parameter>. This sets <parameter>TIME_WAIT</parameter> parameter to 30 seconds (the default is 240).
+ </para>
- </step>
+ </step>
- </procedure>
-
- <example id="exam-Reference_Guide_eXo_JCR_1.14-Notes_for_Microsoft_Windows_users-Sample_Registry_File">
- <title>Sample Registry File</title>
-
+ </procedure>
+
+ <example id="exam-Reference_Guide_eXo_JCR_1.14-Notes_for_Microsoft_Windows_users-Sample_Registry_File">
+ <title>Sample Registry File</title>
+
<programlisting>Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"MaxUserPort"=dword:00001b58
"TcpTimedWaitDelay"=dword:0000001e</programlisting>
- </example>
+ </example>
- </section>
-
+ </section>
+
</section>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/data-container.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/data-container.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/data-container.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -4,584 +4,584 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide_eXo_JCR_1.14-JCR_Workspace_Data_Container">
- <title>JCR Workspace Data Container</title>
- <para>
- The JCR Workspace Data Container:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Covers the requirements on Workspace Data Container implementation.
- </para>
+ <title>JCR Workspace Data Container</title>
+ <para>
+ The JCR Workspace Data Container:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Covers the requirements on Workspace Data Container implementation.
+ </para>
- </listitem>
- <listitem>
- <para>
- Describes container life cycle.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Describes container life cycle.
+ </para>
- </listitem>
- <listitem>
- <para>
- Describes relations between container and high-level DataManagers.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Describes relations between container and high-level DataManagers.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-JCR_Workspace_Data_Container-Concepts">
- <title>Concepts</title>
- <varlistentry>
- <term>Container and connection</term>
- <listitem>
- <para>
- The Workspace Data Container (container) serves Repository Workspace persistent storage.
- </para>
- <para>
- <literal>WorkspacePersistentDataManager</literal> (data manager) uses the container to perform <abbrev>CRUD</abbrev> (Create, Read, Update and Delete) operations on the persistent storage.
- </para>
- <para>
- Access to the storage in the data manager is implemented via a storage connection obtained from the container (<literal>WorkspaceDataContainer</literal> interface implementation).
- </para>
- <para>
- Each connection represents a transaction on the storage. Storage Connection (connection) should be an implementation of <literal>WorkspaceStorageConnection</literal>.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- The Container acts as a factory of a new storage connections. Usually, this method is designed to be synchronized to avoid possible concurrent issues.
- </para>
-
+ </itemizedlist>
+ <variablelist id="vari-Reference_Guide_eXo_JCR_1.14-JCR_Workspace_Data_Container-Concepts">
+ <title>Concepts</title>
+ <varlistentry>
+ <term>Container and connection</term>
+ <listitem>
+ <para>
+ The Workspace Data Container (container) serves Repository Workspace persistent storage.
+ </para>
+ <para>
+ <literal>WorkspacePersistentDataManager</literal> (data manager) uses the container to perform <abbrev>CRUD</abbrev> (Create, Read, Update and Delete) operations on the persistent storage.
+ </para>
+ <para>
+ Access to the storage in the data manager is implemented via a storage connection obtained from the container (<literal>WorkspaceDataContainer</literal> interface implementation).
+ </para>
+ <para>
+ Each connection represents a transaction on the storage. Storage Connection (connection) should be an implementation of <literal>WorkspaceStorageConnection</literal>.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The Container acts as a factory of a new storage connections. Usually, this method is designed to be synchronized to avoid possible concurrent issues.
+ </para>
+
<programlisting language="Java" role="Java">WorkspaceStorageConnection openConnection() throws RepositoryException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- The Storage connection might also be reused. This means reuse of a physical resource (JDBC Connection, for example) allocated by one connection in another.
- </para>
- <para>
- This feature is used in a data manager for saving ordinary and system changes on the system Workspace. But the reuse is an optional feature. If it is not used, a new connection will open.
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ The Storage connection might also be reused. This means reuse of a physical resource (JDBC Connection, for example) allocated by one connection in another.
+ </para>
+ <para>
+ This feature is used in a data manager for saving ordinary and system changes on the system Workspace. But the reuse is an optional feature. If it is not used, a new connection will open.
+ </para>
+
<programlisting language="Java" role="Java">WorkspaceStorageConnection reuseConnection(WorkspaceStorageConnection original) throws RepositoryException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- When checking for the existence of <literal>Same-Name Siblings</literal> (SNS), JCR Core can use either a new connection or an existing one. This behaviour is defined via the Workspace Data Container configuration and is retrieved by using the special method:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ When checking for the existence of <literal>Same-Name Siblings</literal> (SNS), JCR Core can use either a new connection or an existing one. This behaviour is defined via the Workspace Data Container configuration and is retrieved by using the special method:
+ </para>
+
<programlisting language="Java" role="Java">boolean isCheckSNSNewConnection();
</programlisting>
- </listitem>
- <listitem>
- <para>
- As container initialization is based soley on a written configuration, it is not possible to change a container's parameters after it has been created. This configuration consists of implementation class(s) and a set of properties and Value Storages configuration.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ As container initialization is based soley on a written configuration, it is not possible to change a container's parameters after it has been created. This configuration consists of implementation class(s) and a set of properties and Value Storages configuration.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Value storages</term>
- <listitem>
- <para>
- The container provides an optional special mechanism for <emphasis role="bold">Value</emphasis> storing. It is possible to configure external Value Storages via the container configuration.
- </para>
- <para>
- Value Storage works as fully independent pluggable storage (however some storages are possible for a single container). All required parameters are obtained from the configuration, including the <literal>ValueStoragePluginimplementation</literal> class and a set of implementation specific properties and filters.
- </para>
- <para>
- Filters declare criteria which dictate what Values are stored. This means that the storage might only contain some of the Workspace content.
- </para>
- <para>
- The container obtains Values from Storages with the <literal>ValueStoragePluginProvider</literal> component. This component acts as a factory of Value channels (<literal>ValueIOChannel</literal>). Value Channels provide all CRUD operations for Value Storage, while respecting the transaction manner of work (based on implementation specifics of the storages).
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Value storages</term>
+ <listitem>
+ <para>
+ The container provides an optional special mechanism for <emphasis role="bold">Value</emphasis> storing. It is possible to configure external Value Storages via the container configuration.
+ </para>
+ <para>
+ Value Storage works as fully independent pluggable storage (however some storages are possible for a single container). All required parameters are obtained from the configuration, including the <literal>ValueStoragePluginimplementation</literal> class and a set of implementation specific properties and filters.
+ </para>
+ <para>
+ Filters declare criteria which dictate what Values are stored. This means that the storage might only contain some of the Workspace content.
+ </para>
+ <para>
+ The container obtains Values from Storages with the <literal>ValueStoragePluginProvider</literal> component. This component acts as a factory of Value channels (<literal>ValueIOChannel</literal>). Value Channels provide all CRUD operations for Value Storage, while respecting the transaction manner of work (based on implementation specifics of the storages).
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Lifecycle</term>
- <listitem>
- <para>
- The Container is used for <emphasis>read</emphasis> and <emphasis>write</emphasis> operations by the data manager.
- </para>
- <para>
- Read operations (<emphasis>getters</emphasis>) use the connection once and then closes it.
- </para>
- <para>
- Write operations use the commit method as a sequence of creating and/or updating calls and the final commit (or rollback if an error is encountered). Writes use one connection (plus one for the system workspace) per commit call. One connection guarantees transaction support for write operations. The commit or rollback action should free and/or clean all resources consumed by the container (connection).
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Lifecycle</term>
+ <listitem>
+ <para>
+ The Container is used for <emphasis>read</emphasis> and <emphasis>write</emphasis> operations by the data manager.
+ </para>
+ <para>
+ Read operations (<emphasis>getters</emphasis>) use the connection once and then closes it.
+ </para>
+ <para>
+ Write operations use the commit method as a sequence of creating and/or updating calls and the final commit (or rollback if an error is encountered). Writes use one connection (plus one for the system workspace) per commit call. One connection guarantees transaction support for write operations. The commit or rollback action should free and/or clean all resources consumed by the container (connection).
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Value storage lifecycle</term>
- <listitem>
- <para>
- Value storage is used from within the container. <emphasis>Read</emphasis> actions are related to container reads while <emphasis>write</emphasis> actions are commit-related. The container (connection) implementation should use transaction capabilities of the storages in the same way as for other operations.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Value storage lifecycle</term>
+ <listitem>
+ <para>
+ Value storage is used from within the container. <emphasis>Read</emphasis> actions are related to container reads while <emphasis>write</emphasis> actions are commit-related. The container (connection) implementation should use transaction capabilities of the storages in the same way as for other operations.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-JCR_Workspace_Data_Container-Requirements">
- <title>Requirements</title>
- <para>
- Connection creation and reuse should be a thread safe operation. The connection provides <abbrev>CRUD</abbrev> operations support on the storage.
- </para>
- <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Requirements-Read_operations">
- <title>Read operations</title>
- <listitem>
- <para>
- Read <literal>ItemData</literal> from the storage by item identifier:
- </para>
-
+ </variablelist>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-JCR_Workspace_Data_Container-Requirements">
+ <title>Requirements</title>
+ <para>
+ Connection creation and reuse should be a thread safe operation. The connection provides <abbrev>CRUD</abbrev> operations support on the storage.
+ </para>
+ <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Requirements-Read_Operations">
+ <title>Read Operations</title>
+ <listitem>
+ <para>
+ Read <literal>ItemData</literal> from the storage by item identifier:
+ </para>
+
<programlisting language="Java" role="Java">ItemData getItemData(String identifier) throws RepositoryException, IllegalStateException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Read <literal>ItemData</literal> from the storage by using the parent and name of the item, related to the parent location:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Read <literal>ItemData</literal> from the storage by using the parent and name of the item, related to the parent location:
+ </para>
+
<programlisting language="Java" role="Java">ItemData getItemData(NodeData parentData, QPathEntry name) throws RepositoryException,IllegalStateException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Read List of <literal>NodeData</literal> from the storage by using the parent location of the item:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Read List of <literal>NodeData</literal> from the storage by using the parent location of the item:
+ </para>
+
<programlisting language="Java" role="Java">List<NodeData> getChildNodesData(NodeData parent) throws RepositoryException, IllegalStateException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Read List of <literal>PropertyData</literal> from the storage by using the parent location of the item:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Read List of <literal>PropertyData</literal> from the storage by using the parent location of the item:
+ </para>
+
<programlisting language="Java" role="Java">List<PropertyData> getChildPropertiesData(NodeData parent) throws RepositoryException, IllegalStateException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Read List of <literal>PropertyData</literal> with empty <literal>ValueData</literal> from the storage by using the parent location of the item:
- </para>
- <para>
- This method is specifically dedicated to non-content modification operations (Items delete, for example).
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Read List of <literal>PropertyData</literal> with empty <literal>ValueData</literal> from the storage by using the parent location of the item:
+ </para>
+ <para>
+ This method is specifically dedicated to non-content modification operations (Items delete, for example).
+ </para>
+
<programlisting language="Java" role="Java">List<PropertyData> listChildPropertiesData(NodeData parent) throws RepositoryException, IllegalStateException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Read List of <literal>PropertyData</literal> from the storage by using the parent location of the item:
- </para>
- <para>
- It's REFERENCE type: Properties referencing Node with given <literal>nodeIdentifier</literal>. See more in <literal>javax.jcr.Node.getReferences()</literal>
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Read List of <literal>PropertyData</literal> from the storage by using the parent location of the item:
+ </para>
+ <para>
+ It's REFERENCE type: Properties referencing Node with given <literal>nodeIdentifier</literal>. See more in <literal>javax.jcr.Node.getReferences()</literal>
+ </para>
+
<programlisting language="Java" role="Java">List<PropertyData> getReferencesData(String nodeIdentifier) throws RepositoryException,IllegalStateException,UnsupportedOperationException;
</programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Requirements-Write_operations">
- <title>Write operations</title>
- <listitem>
- <para>
- Add single <literal>NodeData</literal>.
- </para>
-
+ </itemizedlist>
+ <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Requirements-Write_Operations">
+ <title>Write Operations</title>
+ <listitem>
+ <para>
+ Add single <literal>NodeData</literal>.
+ </para>
+
<programlisting language="Java" role="Java">void add(NodeData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Add single <literal>PropertyData</literal>:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Add single <literal>PropertyData</literal>:
+ </para>
+
<programlisting language="Java" role="Java">void add(PropertyData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Update <literal>NodeData</literal>:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Update <literal>NodeData</literal>:
+ </para>
+
<programlisting language="Java" role="Java">void update(NodeData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Update <literal>PropertyData</literal>:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Update <literal>PropertyData</literal>:
+ </para>
+
<programlisting language="Java" role="Java">void update(PropertyData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Rename <literal>NodeData</literal> by using Node identifier and new name and indexing from the data:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Rename <literal>NodeData</literal> by using Node identifier and new name and indexing from the data:
+ </para>
+
<programlisting language="Java" role="Java">void rename(NodeData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Delete <literal>NodeData</literal>:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Delete <literal>NodeData</literal>:
+ </para>
+
<programlisting language="Java" role="Java">void delete(NodeData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Delete <literal>PropertyData</literal>:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Delete <literal>PropertyData</literal>:
+ </para>
+
<programlisting language="Java" role="Java">void delete(PropertyData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Persist changes and closes connection. It can be database transaction commit for instance etc.
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Persist changes and closes connection. It can be database transaction commit for instance etc.
+ </para>
+
<programlisting language="Java" role="Java">void commit() throws IllegalStateException, RepositoryException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Refuse persistent changes and closes connection. It can be database transaction rollback for instance etc.
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Refuse persistent changes and closes connection. It can be database transaction rollback for instance etc.
+ </para>
+
<programlisting language="Java" role="Java">void rollback() throws IllegalStateException, RepositoryException;
</programlisting>
- <para>
- All methods throw <literal>IllegalStateException</literal> if the connection is closed, <literal>UnsupportedOperationException</literal> if the method is not supported and <literal>RepositoryException</literal> if some errors occur during preparation, validation or persistence.
- </para>
+ <para>
+ All methods throw <literal>IllegalStateException</literal> if the connection is closed, <literal>UnsupportedOperationException</literal> if the method is not supported and <literal>RepositoryException</literal> if some errors occur during preparation, validation or persistence.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Requirements-State_operations">
- <title>State operations</title>
- <listitem>
- <para>
- Return true if connection can be used:
- </para>
-
+ </itemizedlist>
+ <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Requirements-State_Operations">
+ <title>State Operations</title>
+ <listitem>
+ <para>
+ Return true if connection can be used:
+ </para>
+
<programlisting language="Java" role="Java">boolean isOpened();
</programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Requirements-Validation_of_write_operations">
- <title>Validation of write operations</title>
- <listitem>
- <para>
- As the container has to care about storage consistency (JCR constraints) on write operations: (InvalidItemStateException should be thrown according the spec). At least, the following checks should be performed:
- </para>
+ </itemizedlist>
+ <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Requirements-Validation_of_write_operations">
+ <title>Validation of write operations</title>
+ <listitem>
+ <para>
+ As the container has to care about storage consistency (JCR constraints) on write operations: (InvalidItemStateException should be thrown according the spec). At least, the following checks should be performed:
+ </para>
- </listitem>
- <listitem>
- <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Validation_of_write_operations-On_ADD_errors">
- <title>On ADD errors</title>
- <listitem>
- <itemizedlist>
- <listitem>
- <para>
- Parent not found. Condition: Parent ID (Item with ID is not exists).
- </para>
+ </listitem>
+ <listitem>
+ <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Validation_of_write_operations-On_ADD_errors">
+ <title>On ADD errors</title>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Parent not found. Condition: Parent ID (Item with ID is not exists).
+ </para>
- </listitem>
- <listitem>
- <para>
- Item already exists. Condition: ID (Item with ID already exists).
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Item already exists. Condition: ID (Item with ID already exists).
+ </para>
- </listitem>
- <listitem>
- <para>
- Item already exists. Condition: Parent ID, Name, Index (Item with parent ID, name and index already exists).
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Item already exists. Condition: Parent ID, Name, Index (Item with parent ID, name and index already exists).
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
- <listitem>
- <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Validation_of_write_operations-On_DELETE_errors">
- <title>On DELETE errors</title>
- <listitem>
- <itemizedlist>
- <listitem>
- <para>
- Item not found. Condition ID.
- </para>
+ </listitem>
+ <listitem>
+ <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Validation_of_write_operations-On_DELETE_errors">
+ <title>On DELETE errors</title>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Item not found. Condition ID.
+ </para>
- </listitem>
- <listitem>
- <para>
- Can not delete parent till children exists.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Can not delete parent till children exists.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
- <listitem>
- <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Validation_of_write_operations-On_UPDATE_errors">
- <title>On UPDATE errors</title>
- <listitem>
- <itemizedlist>
- <listitem>
- <para>
- Item not found. Condition ID.
- </para>
+ </listitem>
+ <listitem>
+ <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Validation_of_write_operations-On_UPDATE_errors">
+ <title>On UPDATE errors</title>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Item not found. Condition ID.
+ </para>
- </listitem>
- <listitem>
- <para>
- Item already exists with higher Version. Condition: ID, Version (Some Session had updated Item with ID prior this update).
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Item already exists with higher Version. Condition: ID, Version (Some Session had updated Item with ID prior this update).
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Requirements-Consistency_of_save">
- <title>Consistency of save</title>
- <listitem>
- <para>
- The container (connection) should implement consistency of Commit (Rollback) to allow a reversion of applied changes should an operation fail before a commit.
- </para>
+ </itemizedlist>
+ <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Requirements-Consistency_of_save">
+ <title>Consistency of save</title>
+ <listitem>
+ <para>
+ The container (connection) should implement consistency of Commit (Rollback) to allow a reversion of applied changes should an operation fail before a commit.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Requirements-Value_storages_API">
- <title>Value storages API</title>
- <listitem>
- <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Value_storages_API-Storages_provider">
- <title>Storages provider:</title>
- <listitem>
- <para>
- The container implementation obtains Values Storages options via the <literal>ValueStoragePluginProvider</literal> component. The <literal>ValueStoragePluginProvider</literal> acts as a factory for Value channels (ValueIOChannel) and has two methods for this purpose:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Return <literal>ValueIOChannel</literal> matched this property and <literal>valueOrderNumer</literal>. Null will be returned if no channel matches.
- </para>
-
+ </itemizedlist>
+ <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Requirements-Value_storages_API">
+ <title>Value storages API</title>
+ <listitem>
+ <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Value_storages_API-Storages_provider">
+ <title>Storages provider:</title>
+ <listitem>
+ <para>
+ The container implementation obtains Values Storages options via the <literal>ValueStoragePluginProvider</literal> component. The <literal>ValueStoragePluginProvider</literal> acts as a factory for Value channels (ValueIOChannel) and has two methods for this purpose:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Return <literal>ValueIOChannel</literal> matched this property and <literal>valueOrderNumer</literal>. Null will be returned if no channel matches.
+ </para>
+
<programlisting language="Java" role="Java">ValueIOChannel getApplicableChannel(PropertyData property, int valueOrderNumer) throws IOException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Return <literal>ValueIOChannel</literal> associated with given storageId.
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Return <literal>ValueIOChannel</literal> associated with given storageId.
+ </para>
+
<programlisting language="Java" role="Java">ValueIOChannel getChannel(String storageId) throws IOException, ValueStorageNotFoundException;
</programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
- <listitem>
- <para>
- There is also a method for a consistency check, however this method is not used in this storage implementation.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ There is also a method for a consistency check, however this method is not used in this storage implementation.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
- <listitem>
- <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Value_storages_API-Value_storage_plugin">
- <title>Value storage plugin</title>
- <listitem>
- <para>
- The provider implementation should use the <literal>ValueStoragePlugin</literal> abstract class as a base for all storage implementations. Plugins provide support for provider implementation methods. A plugin's methods should be implemented as follows:
- </para>
+ </listitem>
+ <listitem>
+ <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Value_storages_API-Value_storage_plugin">
+ <title>Value storage plugin</title>
+ <listitem>
+ <para>
+ The provider implementation should use the <literal>ValueStoragePlugin</literal> abstract class as a base for all storage implementations. Plugins provide support for provider implementation methods. A plugin's methods should be implemented as follows:
+ </para>
- </listitem>
- <listitem>
- <itemizedlist>
- <listitem>
- <para>
- Initialize the plugin to be used at start up in <literal>ValueStoragePluginProvider</literal>.
- </para>
-
+ </listitem>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Initialize the plugin to be used at start up in <literal>ValueStoragePluginProvider</literal>.
+ </para>
+
<programlisting language="Java" role="Java">public abstract void init(Properties props, ValueDataResourceHolder resources) throws RepositoryConfigurationException, IOException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Open <literal>ValueIOChannel</literal>. Used in <literal>ValueStoragePluginProvider.getApplicableChannel(PropertyData, int)</literal> and <literal>getChannel(String)</literal>:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Open <literal>ValueIOChannel</literal>. Used in <literal>ValueStoragePluginProvider.getApplicableChannel(PropertyData, int)</literal> and <literal>getChannel(String)</literal>:
+ </para>
+
<programlisting language="Java" role="Java">public abstract ValueIOChannel openIOChannel() throws IOException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Return <literal>true</literal> if this storage has the same <literal>storageId</literal>.
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Return <literal>true</literal> if this storage has the same <literal>storageId</literal>.
+ </para>
+
<programlisting language="Java" role="Java">public abstract boolean isSame(String valueDataDescriptor);
</programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
- <listitem>
- <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Value_storages_API-Value_IO_channel">
- <title>Value I/O channel</title>
- <listitem>
- <para>
- The channel should implement an <literal>ValueIOChannel</literal> interface. The CRUD operation for Value Storage are:
- </para>
+ </listitem>
+ <listitem>
+ <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Value_storages_API-Value_IO_channel">
+ <title>Value I/O channel</title>
+ <listitem>
+ <para>
+ The channel should implement an <literal>ValueIOChannel</literal> interface. The CRUD operation for Value Storage are:
+ </para>
- </listitem>
- <listitem>
- <itemizedlist>
- <listitem>
- <para>
- Read Property value:
- </para>
-
+ </listitem>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Read Property value:
+ </para>
+
<programlisting language="Java" role="Java">ValueData read(String propertyId, int orderNumber, int maxBufferSize) throws IOException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Add or update Property value:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Add or update Property value:
+ </para>
+
<programlisting language="Java" role="Java">void write(String propertyId, ValueData data) throws IOException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Delete All Property values:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Delete All Property values:
+ </para>
+
<programlisting language="Java" role="Java">void delete(String propertyId) throws IOException;
</programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
- <listitem>
- <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Value_storages_API-Transaction_support_via_channel">
- <title>Transaction support via channel</title>
- <listitem>
- <para>
- Modification operations should be applied only when committing. Rollback is required for data created cleanup.
- </para>
+ </listitem>
+ <listitem>
+ <itemizedlist id="item-Reference_Guide_eXo_JCR_1.14-Value_storages_API-Transaction_support_via_channel">
+ <title>Transaction support via channel</title>
+ <listitem>
+ <para>
+ Modification operations should be applied only when committing. Rollback is required for data created cleanup.
+ </para>
- </listitem>
- <listitem>
- <itemizedlist>
- <listitem>
- <para>
- Commit channel changes:
- </para>
-
+ </listitem>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Commit channel changes:
+ </para>
+
<programlisting language="Java" role="Java">void commit() throws IOException;
</programlisting>
- </listitem>
- <listitem>
- <para>
- Rollback channel changes:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Rollback channel changes:
+ </para>
+
<programlisting language="Java" role="Java">void rollback() throws IOException;
</programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
+ </section>
</section>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/acl-ext.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/acl-ext.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/acl-ext.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -4,53 +4,53 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control_Extension">
- <title>Access Control Extension</title>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control_Extension-Prerequisites">
- <title>Prerequisites</title>
- <para>
- This is an extension of eXo JCR Access Control features. Please read <xref linkend="sect-Reference_Guide_eXo_JCR_1.14-Access_Control" /> first.
- </para>
+ <title>Access Control Extension</title>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control_Extension-Prerequisites">
+ <title>Prerequisites</title>
+ <para>
+ The Access Control Extension is an extension of eXo JCR Access Control features. Read <xref linkend="sect-Reference_Guide_eXo_JCR_1.14-Access_Control" /> as a primer to the information in this section.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control_Extension-Overview">
- <title>Overview</title>
- <para>
- An extended Access Control system consists of:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Specifically configured custom <literal>ExtendedAccessManager</literal> which is called by eXo JCR internals to check if user's Session (user) has some privilege to perform an operation or not.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control_Extension-Overview">
+ <title>Overview</title>
+ <para>
+ An extended Access Control system consists of:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Specifically configured custom <literal>ExtendedAccessManager</literal> which is called by eXo JCR internals to check if user's Session (user) has some privilege to perform an operation or not.
+ </para>
- </listitem>
- <listitem>
- <para>
- The <emphasis role="bold">Action</emphasis> sets a thread local <literal>InvocationContext</literal> at runtime, the <literal>InvocationContext</literal> instance is then used by the <literal>ExtendedAccessManager</literal> in handling permissions of the current Session.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <emphasis role="bold">Action</emphasis> sets a thread local <literal>InvocationContext</literal> at runtime, the <literal>InvocationContext</literal> instance is then used by the <literal>ExtendedAccessManager</literal> in handling permissions of the current Session.
+ </para>
- </listitem>
- <listitem>
- <para>
- <literal>InvocationContext</literal> is a collection of properties which reflect the state of a current Session. At present, it contains: the type of the current operation on Session (event), current Item (javax.jcr.Item) on which this operation is performed and the current eXo Container
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>InvocationContext</literal> is a collection of properties which reflect the state of a current Session. At present, it contains: the type of the current operation on Session (event), current Item (javax.jcr.Item) on which this operation is performed and the current eXo Container
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control_Extension-Access_Context_Action">
- <title>Access Context Action</title>
- <para>
- <literal>SetAccessContextAction</literal> implements Action and may be called by <literal>SessionActionInterceptor</literal> as a reaction of some events, usually before writing methods and after reading (<literal>getNode()</literal>, <literal> getProperty()</literal> etc). This <literal>SetAccessContextAction</literal> calls the <literal>AccessManager.setContext(InvocationContext context)</literal> method which sets the ThreadLocal invocation context for the current call.
- </para>
- <para>
- Action's Configuration may look like as the following:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control_Extension-Access_Context_Action">
+ <title>Access Context Action</title>
+ <para>
+ <literal>SetAccessContextAction</literal> implements Action and may be called by <literal>SessionActionInterceptor</literal> as a reaction of some events, usually before writing methods and after reading (<literal>getNode()</literal>, <literal> getProperty()</literal> etc). This <literal>SetAccessContextAction</literal> calls the <literal>AccessManager.setContext(InvocationContext context)</literal> method which sets the ThreadLocal invocation context for the current call.
+ </para>
+ <para>
+ Action's Configuration may look like as the following:
+ </para>
+
<programlisting language="XML" role="XML"><value>
<object type="org.exoplatform.services.jcr.impl.ext.action.ActionConfiguration">
<field name="eventTypes"><string>addNode,read</string></field>
@@ -59,14 +59,14 @@
</object>
</value></programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control_Extension-The_Invocation_Context">
- <title>The Invocation Context</title>
- <para>
- The <literal>InvocationContext</literal> contains the current Item, the current ExoContainer and the current EventType is like below:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control_Extension-The_Invocation_Context">
+ <title>The Invocation Context</title>
+ <para>
+ The <literal>InvocationContext</literal> contains the current Item, the current ExoContainer and the current EventType is like below:
+ </para>
+
<programlisting language="Java" role="Java">public interface InvocationContext extends ContextBase {
Item getCurrentItem();
@@ -76,14 +76,17 @@
ExoContainer getContainer();
}</programlisting>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control_Extension-Custom_Extended_Access_Manager">
- <title>Custom Extended Access Manager</title>
- <para>
- By default, all Workspaces share an AccessManager instance, created by RepositoryService at start up (DefaultAccessManagerImpl) which supports default access control policy as described in the <emphasis role="bold">Access Control</emphasis> section. Custom Access Control policy can be applied to certain Workspace configuring <emphasis role="bold">access-manager</emphasis> element inside <emphasis role="bold">workspace</emphasis> as follows:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control_Extension-Custom_Extended_Access_Manager">
+ <title>Custom Extended Access Manager</title>
+ <para>
+ All Workspaces share an <literal>AccessManager</literal> by default. The <literal>AccessManager</literal> is created by <literal>RepositoryService</literal> at start up and supports access control policy as described in <xref linkend="sect-Reference_Guide_eXo_JCR_1.14-Access_Control"/>.
+ </para>
+ <para>
+ A Custom Access Control policy can be applied to certain Workspaces by configuring the <parameter>access-manager</parameter> element inside the <parameter>workspace</parameter> element as follows:
+ </para>
+
<programlisting language="XML" role="XML"><workspace name="ws">
...
<!-- after query-handler element -->
@@ -95,30 +98,30 @@
</access-manager>
...
</workspace></programlisting>
- <para>
- When implementing AccessManager, the <literal>hasPermission()</literal> method has to be overriden so it uses the current invocation context at its discretion. For instance, it may get the current node's metadata and make a decision if the current User has appropriate permissions. Use Invocation Context's runtime properties to make a decision about current Session's privileges.
- </para>
- <para>
- Simplified Sequence diagram for the <literal>Session.getNode()</literal> method for example:
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/other/acl-ext.jpg" width="444" />
- </imageobject>
+ <para>
+ When implementing <literal>AccessManager</literal>, the <literal>hasPermission()</literal> method has to be overriden so it uses the current invocation context at its discretion. For instance, it may get the current node's metadata and make a decision if the current User has appropriate permissions. Use Invocation Context's runtime properties to make a decision about current Session's privileges.
+ </para>
+ <para>
+ Simplified Sequence diagram for the <literal>Session.getNode()</literal> method for example:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/other/acl-ext.jpg" width="444" />
+ </imageobject>
- </mediaobject>
+ </mediaobject>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control_Extension-Example_of_a_custom_Access_Manager">
- <title>Example of a custom Access Manager</title>
- <para>
- The sample <literal>CustomAccessManagerImpl</literal> below extends the default access manager and uses some <literal>DecisionMakingService</literal> in the overloaded <literal>hasPermission</literal> method to find out if a current user has permission to use current <emphasis role="bold">item, event type, userID</emphasis> and some parameter of AccessManager.
- </para>
- <para>
- To make the Access manager work, it is necessary to configure it in jcr configuration as mentioned in <emphasis role="bold">Custom Extended Access Manager</emphasis> and <literal>SetAccessContextAction</literal> should be configured in the way mentioned in <emphasis role="bold">Access Context Action.</emphasis>
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control_Extension-Example_of_a_custom_Access_Manager">
+ <title>Example of a custom Access Manager</title>
+ <para>
+ The sample <literal>CustomAccessManagerImpl</literal> below extends the default access manager and uses some <literal>DecisionMakingService</literal> in the overloaded <literal>hasPermission</literal> method to find out if a current user has permission to use current <emphasis role="bold">item, event type, userID</emphasis> and some parameter of AccessManager.
+ </para>
+ <para>
+ To make the Access manager work, it is necessary to configure it in jcr configuration as mentioned in <emphasis role="bold">Custom Extended Access Manager</emphasis> and <literal>SetAccessContextAction</literal> should be configured in the way mentioned in <emphasis role="bold">Access Context Action.</emphasis>
+ </para>
+
<programlisting language="Java" role="Java">public class CustomAccessManagerImpl extends AccessManager {
private String property;
@@ -148,8 +151,8 @@
}
}</programlisting>
- </section>
-
+ </section>
+
</section>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/acl.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/acl.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/acl.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -4,210 +4,210 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control">
- <title>Access Control</title>
- <para>
- The eXo JCR component is a complete implementation of the standard JSR 170: <ulink url="http://jcp.org/en/jsr/detail?id=170">Content Repository for Java TM Technology API</ulink>, including <emphasis role="bold">Level 1, Level 2 and Additional Features</emphasis> specified in the JCR Specification.
- </para>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control-Standard_Action_Permissions">
- <title>Standard Action Permissions</title>
- <para>
- The JCR specification (JSR 170) has few requirements about Access Control. It only requires the implementation of the <literal>Session.checkPermission(String absPath, String actions)</literal> method. This method checks if a current session has permissions to perform some actions on absPath:
- </para>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>absPath</term>
- <listitem>
- <para>
- The string representation of a JCR absolute path.
- </para>
+ <title>Access Control</title>
+ <para>
+ The eXo JCR component is a complete implementation of the standard JSR 170: <ulink url="http://jcp.org/en/jsr/detail?id=170">Content Repository for Java TM Technology API</ulink>, including <emphasis role="bold">Level 1, Level 2 and Additional Features</emphasis> specified in the JCR Specification.
+ </para>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control-Standard_Action_Permissions">
+ <title>Standard Action Permissions</title>
+ <para>
+ The JCR specification (JSR 170) has few requirements about Access Control. It only requires the implementation of the <literal>Session.checkPermission(String absPath, String actions)</literal> method. This method checks if a current session has permissions to perform some actions on absPath:
+ </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>absPath</term>
+ <listitem>
+ <para>
+ The string representation of a JCR absolute path.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>actions</term>
- <listitem>
- <para>
- The eXo JCR interprets this string as a comma-separated list of individual action names, such as the four types defined in JSR 170:
- </para>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>add_node</term>
- <listitem>
- <para>
- Permission to add a node.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>actions</term>
+ <listitem>
+ <para>
+ The eXo JCR interprets this string as a comma-separated list of individual action names, such as the four types defined in JSR 170:
+ </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>add_node</term>
+ <listitem>
+ <para>
+ Permission to add a node.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>set_property</term>
- <listitem>
- <para>
- Permission to set a property.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>set_property</term>
+ <listitem>
+ <para>
+ Permission to set a property.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>remove</term>
- <listitem>
- <para>
- Permission to remove an item (node or property).
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>remove</term>
+ <listitem>
+ <para>
+ Permission to remove an item (node or property).
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>read</term>
- <listitem>
- <para>
- Permission to retrieve a node or read a property value.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>read</term>
+ <listitem>
+ <para>
+ Permission to retrieve a node or read a property value.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
+ </variablelist>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <example>
- <title></title>
- <para>
- The following will check if the session is allowed to add a child node to <emphasis>organization</emphasis> and to modify its properties. If one of the two permissions is denied, an <literal>AccessDeniedException</literal> is thrown.
- </para>
-
+ </variablelist>
+ <example>
+ <title></title>
+ <para>
+ The following will check if the session is allowed to add a child node to <emphasis>organization</emphasis> and to modify its properties. If one of the two permissions is denied, an <literal>AccessDeniedException</literal> is thrown.
+ </para>
+
<programlisting language="Java" role="java">session.checkPermission("/Groups/organization", "add_node,set_property")
</programlisting>
- </example>
- <example>
- <title></title>
- <para>
- The following will check if the session is allowed to read and change the <literal>exo:name</literal> property of the <emphasis>organization</emphasis> node:
- </para>
-
+ </example>
+ <example>
+ <title></title>
+ <para>
+ The following will check if the session is allowed to read and change the <literal>exo:name</literal> property of the <emphasis>organization</emphasis> node:
+ </para>
+
<programlisting language="Java" role="java">session.checkPermission("/Groups/organization/exo:name", "read,set_property")
</programlisting>
- </example>
- <example>
- <title></title>
- <para>
- The following will check if the session allowed to remove <literal>exo:name</literal> property or node:
- </para>
-
+ </example>
+ <example>
+ <title></title>
+ <para>
+ The following will check if the session allowed to remove <literal>exo:name</literal> property or node:
+ </para>
+
<programlisting language="Java" role="java">session.checkPermission("/Groups/organization/exo:name", "remove")
</programlisting>
- </example>
+ </example>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control-eXo_Access_Control">
- <title>eXo Access Control</title>
- <para>
- The JSR-170 specification does not define how permissions are managed or checked. Therefore the eXo JCR has a proprietary extension to manage and check permissions on nodes. In essence, this extension uses an <ulink url="http://en.wikipedia.org/wiki/Access_control_list">Access Control List (ACL)</ulink> policy model applied to the eXo Organization model.
- </para>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_Access_Control-Principal_and_Identity">
- <title>Principal and Identity</title>
- <para>
- The eXo Access Control is built around the notion of the <emphasis role="bold">identity</emphasis> concept. Access to the JCR is made through sessions acquired against a repository.
- </para>
- <para>
- Sessions can be authenticated through the standard (but optional) repository login mechanism. Each session is associated with a <emphasis role="bold">principal</emphasis>. The principal is an authenticated user or group that may act on JCR data. The identity is a string identifying this <emphasis role="bold">group or user</emphasis>.'
- </para>
- <para>
- There are three reserved identities that have special meanings in eXo JCR:
- </para>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>any</term>
- <listitem>
- <para>
- Represents any authenticated session.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Access_Control-eXo_Access_Control">
+ <title>eXo Access Control</title>
+ <para>
+ The JSR-170 specification does not define how permissions are managed or checked. Therefore the eXo JCR has a proprietary extension to manage and check permissions on nodes. In essence, this extension uses an <ulink url="http://en.wikipedia.org/wiki/Access_control_list">Access Control List (ACL)</ulink> policy model applied to the eXo Organization model.
+ </para>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_Access_Control-Principal_and_Identity">
+ <title>Principal and Identity</title>
+ <para>
+ The eXo Access Control is built around the notion of the <emphasis role="bold">identity</emphasis> concept. Access to the JCR is made through sessions acquired against a repository.
+ </para>
+ <para>
+ Sessions can be authenticated through the standard (but optional) repository login mechanism. Each session is associated with a <emphasis role="bold">principal</emphasis>. The principal is an authenticated user or group that may act on JCR data. The identity is a string identifying this <emphasis role="bold">group or user</emphasis>.'
+ </para>
+ <para>
+ There are three reserved identities that have special meanings in eXo JCR:
+ </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>any</term>
+ <listitem>
+ <para>
+ Represents any authenticated session.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>anonim</term>
- <listitem>
- <para>
- Represents a principal for non authenticated sessions.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>anonim</term>
+ <listitem>
+ <para>
+ Represents a principal for non authenticated sessions.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>system</term>
- <listitem>
- <para>
- Represents a principal for system sessions, typically used for administrative purposes. System session has full access (all permissions) to all nodes; therefore be careful when working with system sessions.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>system</term>
+ <listitem>
+ <para>
+ Represents a principal for system sessions, typically used for administrative purposes. System session has full access (all permissions) to all nodes; therefore be careful when working with system sessions.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
+ </variablelist>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_Access_Control-ACL">
- <title>ACL</title>
- <para>
- An access control list (<abbrev>ACL</abbrev>) is a list of permissions attached to an object. An ACL specifies which users, groups or system processes are granted access to JCR nodes, as well as what operations are allowed to be performed on given objects.
- </para>
- <para>
- The eXo JCR Access Control is based on two facets applied to nodes:
- </para>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>Privilegeable</term>
- <listitem>
- <para>
- Means that the user or group (also called principal) needs the appropriate privileges to access to this node. The privileges are defined as (positive) permissions that are granted to users or groups.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_Access_Control-ACL">
+ <title>ACL</title>
+ <para>
+ An access control list (<abbrev>ACL</abbrev>) is a list of permissions attached to an object. An ACL specifies which users, groups or system processes are granted access to JCR nodes, as well as what operations are allowed to be performed on given objects.
+ </para>
+ <para>
+ The eXo JCR Access Control is based on two facets applied to nodes:
+ </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>Privilegeable</term>
+ <listitem>
+ <para>
+ Means that the user or group (also called principal) needs the appropriate privileges to access to this node. The privileges are defined as (positive) permissions that are granted to users or groups.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Ownable</term>
- <listitem>
- <para>
- The node has an <emphasis role="bold">owner</emphasis>. The owner has always <emphasis role="bold">full access</emphasis> (all permissions) to the node, independent of the privilegeable facet.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Ownable</term>
+ <listitem>
+ <para>
+ The node has an <emphasis role="bold">owner</emphasis>. The owner has always <emphasis role="bold">full access</emphasis> (all permissions) to the node, independent of the privilegeable facet.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-ACL-Privilegeable">
- <title>Privilegeable</title>
- <para>
- A privilegeable node defines the permissions required for actions on this node. For this purpose, it contains an ACL.
- </para>
- <para>
- At JCR level, this is implemented by an <emphasis role="bold">exo:privilegeable</emphasis> mixin.
- </para>
-
+ </variablelist>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-ACL-Privilegeable">
+ <title>Privilegeable</title>
+ <para>
+ A privilegeable node defines the permissions required for actions on this node. For this purpose, it contains an ACL.
+ </para>
+ <para>
+ At JCR level, this is implemented by an <emphasis role="bold">exo:privilegeable</emphasis> mixin.
+ </para>
+
<programlisting language="XML" role="XML"><nodeType name="exo:privilegeable" isMixin="true" hasOrderableChildNodes="false" primaryItemName="">
<propertyDefinitions>
<propertyDefinition name="exo:permissions" requiredType="Permission" autoCreated="true" mandatory="true"
@@ -216,48 +216,48 @@
</propertyDefinition>
</propertyDefinitions>
</nodeType></programlisting>
- <para>
- A privilegeable node can have multiple exo:permissions values. The type of these values is the eXo JCR specific Permission type. The Permission type contains a list of ACL.
- </para>
- <para>
- The possible values are corresponding to JCR standard actions:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">read</emphasis>: The node or its properties can be read.
- </para>
+ <para>
+ A privilegeable node can have multiple exo:permissions values. The type of these values is the eXo JCR specific Permission type. The Permission type contains a list of ACL.
+ </para>
+ <para>
+ The possible values are corresponding to JCR standard actions:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">read</emphasis>: The node or its properties can be read.
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">remove</emphasis>: The node or its properties can be removed.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">remove</emphasis>: The node or its properties can be removed.
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">add_node</emphasis> : Child nodes can be added to this node.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">add_node</emphasis> : Child nodes can be added to this node.
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">set_property</emphasis> : The node's properties can be modified, added or removed.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">set_property</emphasis> : The node's properties can be modified, added or removed.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-ACL-Ownable">
- <title>Ownable</title>
- <para>
- An ownable node defines an owner identity. The <emphasis role="bold">owner</emphasis> has always <emphasis role="bold">full privileges</emphasis>. These privileges are independent of the permissions set by exo:permissions. At JCR level, the ownership is implemented by an <emphasis role="bold">exo:owneable</emphasis> mixin. This mixin holds an owner property.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-ACL-Ownable">
+ <title>Ownable</title>
+ <para>
+ An ownable node defines an owner identity. The <emphasis role="bold">owner</emphasis> has always <emphasis role="bold">full privileges</emphasis>. These privileges are independent of the permissions set by exo:permissions. At JCR level, the ownership is implemented by an <emphasis role="bold">exo:owneable</emphasis> mixin. This mixin holds an owner property.
+ </para>
+
<programlisting language="XML" role="XML"><nodeType name="exo:owneable" isMixin="true" hasOrderableChildNodes="false" primaryItemName="">
<propertyDefinitions>
<propertyDefinition name="exo:owner" requiredType="String" autoCreated="true" mandatory="true" onParentVersion="COPY"
@@ -266,80 +266,80 @@
</propertyDefinition>
</propertyDefinitions>
</nodeType></programlisting>
- <para>
- The exo:owner property value contains exactly one identity string value. There might be a long list of different permissions for different identities (user or groups). All permissions are always positive permissions; denials are not possible. When checking a permission of an action, it's therefore perfectly sufficient that the principal of a session belongs to the groups to which the concerned action is granted.
- </para>
+ <para>
+ The exo:owner property value contains exactly one identity string value. There might be a long list of different permissions for different identities (user or groups). All permissions are always positive permissions; denials are not possible. When checking a permission of an action, it's therefore perfectly sufficient that the principal of a session belongs to the groups to which the concerned action is granted.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-ACL-ACL_Inheritance">
- <title>ACL Inheritance</title>
- <para>
- To grant or deny access to a node, eXo JCR applies a privilege resolving logic at node access time.
- </para>
- <para>
- If a node is <emphasis role="bold">privilegeable</emphasis>, the node's ACL is used exclusively. If the ACL does not match the principal's identity, the principal has no access (except the owner of the node).
- </para>
- <para>
- Non-privilegeable nodes inherit permissions from their parent node. If the parent node is not privilegeable either, the resolving logic looks further up the node hierarchy and stops with the first privilegeable ancestor of the current node. All nodes potentially inherit from the <emphasis role="bold">workspace</emphasis> root node.
- </para>
- <para>
- The owner of a node is inherited in accordance with the same logic: If the node has no owner, the owner information of the closest owneable ancestor is inherited.
- </para>
- <para>
- This inheritance is implemented by browsing up the node's hierarchy. At access time, if the node does not have owner or permissions, the system looks up into the node's ancestor hierarchy for the <emphasis role="bold">first</emphasis> ACL.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-ACL-ACL_Inheritance">
+ <title>ACL Inheritance</title>
+ <para>
+ To grant or deny access to a node, eXo JCR applies a privilege resolving logic at node access time.
+ </para>
+ <para>
+ If a node is <emphasis role="bold">privilegeable</emphasis>, the node's ACL is used exclusively. If the ACL does not match the principal's identity, the principal has no access (except the owner of the node).
+ </para>
+ <para>
+ Non-privilegeable nodes inherit permissions from their parent node. If the parent node is not privilegeable either, the resolving logic looks further up the node hierarchy and stops with the first privilegeable ancestor of the current node. All nodes potentially inherit from the <emphasis role="bold">workspace</emphasis> root node.
+ </para>
+ <para>
+ The owner of a node is inherited in accordance with the same logic: If the node has no owner, the owner information of the closest owneable ancestor is inherited.
+ </para>
+ <para>
+ This inheritance is implemented by browsing up the node's hierarchy. At access time, if the node does not have owner or permissions, the system looks up into the node's ancestor hierarchy for the <emphasis role="bold">first</emphasis> ACL.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-ACL-Default_ACL_of_the_root_node">
- <title>Default ACL of the root node</title>
- <para>
- When no matching ACL is found in the ancestor hierarchy, the system may end up looking at the root node's ACL. As ACL are optional, even for the root node, if the root node has no ACL, the following rule is ultimately applied to resolve privileges:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">any</emphasis> identity (any authenticated session) is granted all permissions
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-ACL-Default_ACL_of_the_root_node">
+ <title>Default ACL of the root node</title>
+ <para>
+ When no matching ACL is found in the ancestor hierarchy, the system may end up looking at the root node's ACL. As ACL are optional, even for the root node, if the root node has no ACL, the following rule is ultimately applied to resolve privileges:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">any</emphasis> identity (any authenticated session) is granted all permissions
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_Access_Control-Notes">
- <title>Notes</title>
- <para>
- <emphasis role="bold">Access Control nodetypes are not extendible:</emphasis> The access control mechanism works for <emphasis role="bold">exo:owneable</emphasis> and <emphasis role="bold">exo:privilegeable</emphasis> nodetypes only, not for their subtypes! So you cannot extend those nodetypes.
- </para>
- <para>
- <emphasis role="bold">Autocreation:</emphasis> By default, newly created nodes are neither <emphasis role="bold">exo:privilegeable</emphasis> nor <emphasis role="bold">exo:owneable</emphasis> but it is possible to configure the repository to auto-create <emphasis role="bold">exo:privilegeable</emphasis> or/and <emphasis role="bold">exo:owneable</emphasis> thanks to eXo's JCR interceptors extension <!-- File not being called: (see <xref linkend="sect-Reference_Guide_eXo_JCR_1.14-JCR_Service_Extensions-Concept" />) -->
- </para>
- <para>
- <emphasis role="bold">OR-based Privilege Inheritance</emphasis>: Note, that eXo's Access Control implementation supports a privilege inheritance that follows a strategy of either...or/ and has only an ALLOW privilege mechanism (there is no DENY feature). This means that a session is allowed to perform some operations on some nodes if its identity has an appropriate permission assigned to this node. Only if there is no exo:permission property assigned to the node itself, the permissions of the node's ancestors are used.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_Access_Control-Notes">
+ <title>Notes</title>
+ <para>
+ <parameter>Access Control nodetypes are not extendible:</parameter> The access control mechanism works for <parameter>exo:owneable</parameter> and <parameter>exo:privilegeable</parameter> nodetypes only, not for their subtypes! So you cannot extend those nodetypes.
+ </para>
+ <para>
+ <parameter>Autocreation:</parameter> By default, newly created nodes are neither <parameter>exo:privilegeable</parameter> nor <parameter>exo:owneable</parameter> but it is possible to configure the repository to auto-create <parameter>exo:privilegeable</parameter> or/and <parameter>exo:owneable</parameter> thanks to eXo's JCR interceptors extension <!-- File not being called: (see <xref linkend="sect-Reference_Guide_eXo_JCR_1.14-JCR_Service_Extensions-Concept" />) -->
+ </para>
+ <para>
+ <parameter>OR-based Privilege Inheritance</parameter>: Note, that eXo's Access Control implementation supports a privilege inheritance that follows a strategy of either...or/ and has only an ALLOW privilege mechanism (there is no DENY feature). This means that a session is allowed to perform some operations on some nodes if its identity has an appropriate permission assigned to this node. Only if there is no exo:permission property assigned to the node itself, the permissions of the node's ancestors are used.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_Access_Control-Example">
- <title>Example</title>
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Example-XML_Example">
- <title>XML Example</title>
- <para>
- In the following example, you see a node named "Politics" which contains two nodes named "Cats" and "Dogs".
- </para>
- <note>
- <para>
- These examples are exported from eXo DMS using the \"document view\" representation of JCR. Each value of a multi-value property is separated by a whitespace, each whitespace is escaped by <emphasis>x0020</emphasis>.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_Access_Control-Example">
+ <title>Example</title>
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Example-XML_Example">
+ <title>XML Example</title>
+ <para>
+ In the following example, you see a node named "<emphasis>Politics</emphasis>" which contains two nodes named "<emphasis>Cats</emphasis>" and "<emphasis>Dogs</emphasis>".
+ </para>
+ <note>
+ <para>
+ These examples are exported from eXo DMS using the <literal>\"document view\"</literal> representation of JCR. Each value of a multi-value property is separated by a whitespace, each whitespace is escaped by <emphasis>x0020</emphasis>.
+ </para>
- </note>
-
+ </note>
+
<programlisting language="XML" role="XML"><Politics jcr:primaryType="nt:unstructured" jcr:mixinTypes="exo:owneable exo:datetime exo:privilegeable" exo:dateCreated="2009-10-08T18:02:43.687+02:00"
exo:dateModified="2009-10-08T18:02:43.703+02:00"
exo:owner="root"
@@ -358,241 +358,241 @@
exo:text="" exo:title="Dogs_x0020_are_x0020_friends" />
</Politics></programlisting>
- <para>
- The "Politics" node is <emphasis role="bold">exo:owneable</emphasis> and <emphasis role="bold">exo:privilegeable</emphasis>. It has both an <emphasis role="bold">exo:owner</emphasis> property and an <emphasis role="bold">exo:permissions</emphasis> property. There is an <emphasis role="bold">exo:owner="root"</emphasis> property so that the user root is the owner. In the exo:permissions value, you can see the ACL that is a list of access controls. In this example, the group <emphasis role="bold">*:/platform/administrators</emphasis> has all rights on this node (remember that the "<emphasis role="bold">*</emphasis>" means any kind of membership). <emphasis role="bold">any</emphasis> means that any users also have the read permission.s
- </para>
- <para>
- As you see in the jcr:mixinTypes property, the "Cats" node is <emphasis role="bold">exo:owneable</emphasis> and there is an <emphasis role="bold">exo:owner="marry"</emphasis> property so that the user marry is the owner. The "Cats" node is <emphasis role="bold">not exo:privilegeable</emphasis> and has <emphasis role="bold">no exo:permissions</emphasis>. In this case, we can see the <emphasis role="bold">inheritance mechanism</emphasis> here is that the "Cats" node has the same permissions as "Politics" node.
- </para>
- <para>
- Finally, the "Dogs" node is also a child node of "Politics". This node is <emphasis role="bold">not</emphasis> <emphasis role="bold">exo:owneable</emphasis> and inherits the owner of the "Politics" node (which is the user root). Otherwise, "Dogs" is <emphasis role="bold">exo:privilegeable</emphasis> and therefore, it has its own <emphasis role="bold">exo:permissions</emphasis>. That means only the users having a "manager" role in the group "/organization" and the user "root" have the rights to access this node.
- </para>
+ <para>
+ The "<emphasis>Politics</emphasis>" node is <parameter>exo:owneable</parameter> and <parameter>exo:privilegeable</parameter>. It has both an <parameter>exo:owner</parameter> property and an <parameter>exo:permissions</parameter> property. There is an <parameter>exo:owner="root"</parameter> property so that the user root is the owner. In the <parameter>exo:permissions</parameter> value, you can see the ACL that is a list of access controls. In this example, the group <parameter>*:/platform/administrators</parameter> has all rights on this node (remember that the "<parameter>*</parameter>" means any kind of membership). <parameter>any</parameter> means that any users also have the read permission.
+ </para>
+ <para>
+ As you see in the <literal>jcr:mixinTypes</literal> property, the "<emphasis>Cats</emphasis>" node is <parameter>exo:owneable</parameter> and there is an <parameter>exo:owner="marry"</parameter> property so that the user marry is the owner. The "Cats" node is <parameter>not exo:privilegeable</parameter> and has <parameter>no exo:permissions</parameter>. In this case, we can see the <parameter>inheritance mechanism</parameter> here is that the "Cats" node has the same permissions as "Politics" node.
+ </para>
+ <para>
+ Finally, the "<emphasis>Dogs</emphasis>" node is also a child node of "<emphasis>Politics</emphasis>". This node is <parameter>not</parameter> <parameter>exo:owneable</parameter> and inherits the owner of the "<emphasis>Politics</emphasis>" node (which is the user root). Otherwise, "<emphasis>Dogs</emphasis>" is <parameter>exo:privilegeable</parameter> and therefore, it has its own <parameter>exo:permissions</parameter>. That means only the users having a "<emphasis role="bold">manager</emphasis>" role in the group "<emphasis role="bold">/organization</emphasis>" and the user "<emphasis role="bold">root</emphasis>" have the rights to access this node.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Example-Inheritance_Examples">
- <title>Inheritance Examples</title>
- <para>
- Here is an example showing the accessibility of two nodes (to show inheritance) for two sample users named <emphasis role="bold">manager</emphasis> and <emphasis role="bold">user</emphasis>:
- </para>
- <para>
- The "+" symbol means that there is a child node "exo:owneable".
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/other/acl.gif" width="444" />
- </imageobject>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Example-Inheritance_Examples">
+ <title>Inheritance Examples</title>
+ <para>
+ Here is an example showing the accessibility of two nodes (to show inheritance) for two sample users named <emphasis role="bold">manager</emphasis> and <emphasis role="bold">user</emphasis>:
+ </para>
+ <para>
+ The "+" symbol means that there is a child node "exo:owneable".
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/other/acl.gif" width="444" />
+ </imageobject>
- </mediaobject>
+ </mediaobject>
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-Example-Permission_validation">
- <title>Permission validation</title>
- <para>
- This session describes how permission is validated for different JCR actions.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">read node</emphasis>: Check the read permission on a target node.
- </para>
- <para>
- For example: Read /node1/<emphasis role="bold">subnode</emphasis> node, JCR will check the "read" permission exactly on "subnode".
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-Example-Permission_validation">
+ <title>Permission validation</title>
+ <para>
+ This session describes how permission is validated for different JCR actions.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">read node</emphasis>: Check the read permission on a target node.
+ </para>
+ <para>
+ For example: Read <emphasis>/node1/<emphasis role="bold">subnode</emphasis></emphasis> node, JCR will check the "read" permission exactly on "<emphasis role="bold">subnode</emphasis>".
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">read property</emphasis> : Check the read permission on a parent node.
- </para>
- <para>
- For example: Read /<emphasis role="bold">node1</emphasis>/myprop - JCR will check the "read" permission on "node1".
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">read property</emphasis> : Check the read permission on a parent node.
+ </para>
+ <para>
+ For example: Read /<emphasis role="bold">node1</emphasis>/myprop - JCR will check the "read" permission on "node1".
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">add node</emphasis>: Check add_node on a parent node.
- </para>
- <para>
- For example: Add /<emphasis role="bold">node1</emphasis>/subnode node, JCR will check the "add_node" permission on "node1".
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">add node</emphasis>: Check add_node on a parent node.
+ </para>
+ <para>
+ For example: Add /<emphasis role="bold">node1</emphasis>/subnode node, JCR will check the "add_node" permission on "node1".
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">set property</emphasis>: set_property on a parent node.
- </para>
- <para>
- For example: Try to set /<emphasis role="bold">node1</emphasis>/myprop property, JCR will check the "set_property" permission on "node1".
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">set property</emphasis>: set_property on a parent node.
+ </para>
+ <para>
+ For example: Try to set /<emphasis role="bold">node1</emphasis>/myprop property, JCR will check the "set_property" permission on "node1".
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">remove node</emphasis>: Check the remove permission on a target node.
- </para>
- <para>
- For example: Try to remove /node1/<emphasis role="bold">subnode</emphasis> node, JCR will check the "remove" permission on "subnode".
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">remove node</emphasis>: Check the remove permission on a target node.
+ </para>
+ <para>
+ For example: Try to remove <emphasis>/node1/<emphasis role="bold">subnode</emphasis></emphasis> node, JCR will check the "remove" permission on "subnode".
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">remove property</emphasis>: Check the remove permission on a parent node.
- </para>
- <para>
- For example: Try to remove /<emphasis role="bold">node1</emphasis>/myprop property, JCR will check the "remove" permission on "node1".
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">remove property</emphasis>: Check the remove permission on a parent node.
+ </para>
+ <para>
+ For example: Try to remove /<emphasis role="bold">node1</emphasis>/myprop property, JCR will check the "remove" permission on "node1".
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">add mixin</emphasis>: Check the "add_node" and "set_property" permission on a target node.
- </para>
- <para>
- For example: Try to add mixin to /node1/<emphasis role="bold">subnode</emphasis> node, JCR will check the "add_node" and "set_property" permission on "subnode".
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">add mixin</emphasis>: Check the "add_node" and "set_property" permission on a target node.
+ </para>
+ <para>
+ For example: Try to add mixin to <emphasis>/node1/<emphasis role="bold">subnode</emphasis></emphasis> node, JCR will check the "add_node" and "set_property" permission on "subnode".
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <note>
- <para>
- The behavior of the permission "remove" and "add mixin" validation has changed since JCR 1.12.6-GA. The old behavior is:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">remove node</emphasis>: Check the remove permission on a parent node.
- </para>
- <para>
- For example: Try to remove /<emphasis role="bold">node1</emphasis>/subnode node, JCR will check the "remove" permission on "node1".
- </para>
+ </itemizedlist>
+ <note>
+ <para>
+ The behavior of the permission "remove" and "add mixin" validation has changed since JCR 1.12.6-GA. The old behavior is:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">remove node</emphasis>: Check the remove permission on a parent node.
+ </para>
+ <para>
+ For example: Try to remove /<emphasis role="bold">node1</emphasis>/subnode node, JCR will check the "remove" permission on "node1".
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">add mixin</emphasis>: Check the "add_node" and "set_property" permission on a parent node.
- </para>
- <para>
- For example: Try to add mixin to /<emphasis role="bold">node1</emphasis>/subnode node, JCR will check the "add_node" and "set_property" permission on "node1".
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">add mixin</emphasis>: Check the "add_node" and "set_property" permission on a parent node.
+ </para>
+ <para>
+ For example: Try to add mixin to /<emphasis role="bold">node1</emphasis>/subnode node, JCR will check the "add_node" and "set_property" permission on "node1".
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </para>
+ </para>
- </note>
+ </note>
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_Access_Control-Java_API">
- <title>Java API</title>
- <para>
- eXo JCR's ExtendedNode interface which extends javax.jcr.Node interface provides additional methods for Access Control management.
- </para>
- <table id="tabl-Reference_Guide_eXo_JCR_1.14-Java_API-Additional_methods">
- <title>Additional methods</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Method signature
- </entry>
- <entry>
- Description
- </entry>
+ </section>
+
+ <section id="sect-Reference_Guide_eXo_JCR_1.14-eXo_Access_Control-Java_API">
+ <title>Java API</title>
+ <para>
+ eXo JCR's <literal>ExtendedNode</literal> interface which extends <literal>javax.jcr.Node</literal> interface provides additional methods for Access Control management.
+ </para>
+ <table id="tabl-Reference_Guide_eXo_JCR_1.14-Java_API-Additional_methods">
+ <title>Additional methods</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ Method signature
+ </entry>
+ <entry>
+ Description
+ </entry>
- </row>
+ </row>
- </thead>
- <tbody>
- <row>
- <entry>
- void setPermissions(Map<String, String[]> permissions)
- </entry>
- <entry>
- Assigns a set of Permissions to a node
- </entry>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>void setPermissions(Map<String, String[]> permissions)</literal>
+ </entry>
+ <entry>
+ Assigns a set of Permissions to a node
+ </entry>
- </row>
- <row>
- <entry>
- void setPermission(String identity, String[] permission)
- </entry>
- <entry>
- Assigns some Identities' Permission to a node
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>void setPermission(String identity, String[] permission)</literal>
+ </entry>
+ <entry>
+ Assigns some Identities' Permission to a node
+ </entry>
- </row>
- <row>
- <entry>
- void removePermission(String identity)
- </entry>
- <entry>
- Removes an Identity's Permission
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>void removePermission(String identity)</literal>
+ </entry>
+ <entry>
+ Removes an Identity's Permission
+ </entry>
- </row>
- <row>
- <entry>
- void removePermission(String identity, String permission)
- </entry>
- <entry>
- Removes the specified permission for a particular identity
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>void removePermission(String identity, String permission)</literal>
+ </entry>
+ <entry>
+ Removes the specified permission for a particular identity
+ </entry>
- </row>
- <row>
- <entry>
- void clearACL()
- </entry>
- <entry>
- Clears the current ACL so it becomes default
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>void clearACL()</literal>
+ </entry>
+ <entry>
+ Clears the current ACL so it becomes default
+ </entry>
- </row>
- <row>
- <entry>
- AccessControlList getACL()
- </entry>
- <entry>
- Returns the current ACL
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>AccessControlList getACL()</literal>
+ </entry>
+ <entry>
+ Returns the current ACL
+ </entry>
- </row>
- <row>
- <entry>
- void checkPermission(String actions)
- </entry>
- <entry>
- Checks Permission (AccessDeniedException will be thrown if denied)
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>void checkPermission(String actions)</literal>
+ </entry>
+ <entry>
+ Checks Permission (AccessDeniedException will be thrown if denied)
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <para>
- The "identity" parameter is a user or a group name. The permissions are the literal strings of the standard action permissions (add_node, set_property, remove, read).
- </para>
+ </table>
+ <para>
+ The "identity" parameter is a user or a group name. The permissions are the literal strings of the standard action permissions (<literal>add_node, set_property, remove, read</literal>).
+ </para>
- </section>
-
+ </section>
+
- </section>
-
+ </section>
+
</section>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/link-producer.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/link-producer.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/link-producer.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -4,94 +4,94 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide_eXo_JCR_1.14-Link_Producer_Service">
- <title>Link Producer Service</title>
- <para>
- Link Producer Service - a simple service, which generates an file, that is compatible with the Microsoft link file format. It is an extension of the REST Framework library and is included into the WebDav service. On dispatching a GET request the service generates the content of an <filename>.lnk</filename> file, which points to a JCR resource via WebDav.
- </para>
- <para>
- Link Producer has a simple configuration which is described below:
- </para>
-
+ <title>Link Producer Service</title>
+ <para>
+ The Link Producer Service is a simple service which generates an file that is compatible with the Microsoft link file format. It is an extension of the REST Framework library and is included into the WebDav service. On dispatching a <literal>GET</literal> request the service generates the content of an <filename>.lnk</filename> file, which points to a JCR resource via WebDav.
+ </para>
+ <para>
+ Link Producer has a simple configuration which is described below:
+ </para>
+
<programlisting language="XML" role="XML"><component>
<key>org.exoplatform.services.webdav.lnkproducer.LnkProducer</key>
<type>org.exoplatform.services.webdav.lnkproducer.LnkProducer</type>
</component></programlisting>
- <para>
- When using JCR the resource can be addressed by WebDav reference (href) like <uri>http://host:port/rest/jcr/repository/workspace/somenode/somefile.extention</uri> , the link servlet must be called for this resource by several hrefs, like <uri>http://localhost:8080/rest/lnkproducer/openit.lnk?path=/repository/worksp...</uri>
- </para>
- <para>
- Please note, that when using the portal mode the REST servlet is available using a reference (href) like <uri>http://localhost:8080/portal/rest/...</uri>
- </para>
- <para>
- The name of the <filename>.lnk</filename> file can be any. But for the best compatibility it must be the same as the name of the JCR resource.
- </para>
- <para>
- Here is a step by step sample of a use case of the link producer.
- </para>
- <procedure>
- <title></title>
- <step>
- <para>
- Type valid reference to the resource, using the link producer in your browser's adress field:
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/other/lnkproducer1.JPG" width="444" />
- </imageobject>
+ <para>
+ When using JCR the resource can be addressed by WebDav reference (href) like <uri>http://host:port/rest/jcr/repository/workspace/somenode/somefile.extention</uri> , the link servlet must be called for this resource by several hrefs, like <uri>http://localhost:8080/rest/lnkproducer/openit.lnk?path=/repository/worksp...</uri>
+ </para>
+ <para>
+ Please note, that when using the portal mode the REST servlet is available using a reference (href) like <uri>http://localhost:8080/portal/rest/...</uri>
+ </para>
+ <para>
+ The name of the <filename>.lnk</filename> file can be any. But for the best compatibility it must be the same as the name of the JCR resource.
+ </para>
+ <para>
+ Here is a step by step sample of a use case of the link producer.
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Type valid reference to the resource, using the link producer in your browser's adress field:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/other/lnkproducer1.JPG" width="444" />
+ </imageobject>
- </mediaobject>
+ </mediaobject>
- </step>
- <step>
- <para>
- Internet Explorer will give a dialog window requesting to Open a file or to Save it. Click on the Open button
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/other/lnkproducer2.JPG" width="444" />
- </imageobject>
+ </step>
+ <step>
+ <para>
+ Internet Explorer will give a dialog window requesting to Open a file or to Save it. Click on the Open button
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/other/lnkproducer2.JPG" width="444" />
+ </imageobject>
- </mediaobject>
+ </mediaobject>
- </step>
- <step>
- <para>
- In Windows system an <filename>.lnk</filename> file will be downloaded and opened with the application which is registered to open the files, which are pointed to by the <filename>.lnk</filename> file. In case of a .doc file, Windows opens Microsoft Office Word which will try to open a remote file (test0000.doc). Maybe it will be necessary to enter USERNAME and PASSWORD.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/other/lnkproducer3.JPG" width="444" />
- </imageobject>
+ </step>
+ <step>
+ <para>
+ In Windows system an <filename>.lnk</filename> file will be downloaded and opened with the application which is registered to open the files, which are pointed to by the <filename>.lnk</filename> file. In case of a .doc file, Windows opens Microsoft Office Word which will try to open a remote file (test0000.doc). Maybe it will be necessary to enter USERNAME and PASSWORD.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/other/lnkproducer3.JPG" width="444" />
+ </imageobject>
- </mediaobject>
+ </mediaobject>
- </step>
- <step>
- <para>
- Edit the file in Microsoft Word.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/other/lnkproducer4.JPG" width="444" />
- </imageobject>
+ </step>
+ <step>
+ <para>
+ Edit the file in Microsoft Word.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/other/lnkproducer4.JPG" width="444" />
+ </imageobject>
- </mediaobject>
+ </mediaobject>
- </step>
+ </step>
- </procedure>
-
- <para>
- The Link Producer is necessary for opening/editing and then saving the remote files in Microsoft Office Word, without any further updates.
- </para>
- <para>
- Also the Link Producer can be referenced to from an HTML page. If page contains code susch as...
- </para>
-
+ </procedure>
+
+ <para>
+ The Link Producer is necessary for opening/editing and then saving the remote files in Microsoft Office Word, without any further updates.
+ </para>
+ <para>
+ Also the Link Producer can be referenced to from an HTML page. If page contains code susch as...
+ </para>
+
<programlisting language="HTML" role="HTML"><a href="http://localhost:8080/rest/lnkproducer/openit.lnk?path=/repository/worksp...">somefile.extention</a></programlisting>
- <para>
- ...the file "somefile.extention" will open directly.
- </para>
+ <para>
+ ...the file "somefile.extention" will open directly.
+ </para>
</section>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/repository-creation-service.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/repository-creation-service.xml 2011-10-25 16:37:44 UTC (rev 7874)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/repository-creation-service.xml 2011-10-26 00:44:57 UTC (rev 7875)
@@ -34,7 +34,7 @@
</procedure>
<para>
- There is two ways to create repositry: make it in single step - just call createRepository(String backupId, RepositoryEntry); or reserve repositoryName at first (reserveRepositoryName(String repositoryName)), than create reserved repository (createRepository(String backupId, RepositoryEntry rEntry, String token)).
+ There is two ways to create repositry: make it in single step - just call <literal>createRepository(String backupId, RepositoryEntry)</literal>; or reserve <literal>repositoryName</literal> at first (<literal>reserveRepositoryName(String repositoryName)</literal>), then create reserved repository (<literal>createRepository(String backupId, RepositoryEntry rEntry, String token)</literal>).
</para>
</section>
13 years, 2 months
gatein SVN: r7874 - in components/wsrp/trunk/admin-gui/src/main: webapp/jsf/producer and 1 other directory.
by do-not-reply@jboss.org
Author: chris.laprun(a)jboss.com
Date: 2011-10-25 12:37:44 -0400 (Tue, 25 Oct 2011)
New Revision: 7874
Modified:
components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/ProducerBean.java
components/wsrp/trunk/admin-gui/src/main/webapp/jsf/producer/producer.xhtml
Log:
- JBEPP-1273, GTNWSRP-254: Use the proper set of registration properties when saving the configuration.
- JBEPP-1298: Now properly submit form when the registration required for full description and strict mode checkboxes are clicked.
- Added ProducerBean.isRegistrationPropertiesEmpty method to avoid retrieving the registration properties when not needed.
Modified: components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/ProducerBean.java
===================================================================
--- components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/ProducerBean.java 2011-10-25 15:07:11 UTC (rev 7873)
+++ components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/ProducerBean.java 2011-10-25 16:37:44 UTC (rev 7874)
@@ -40,6 +40,7 @@
import javax.faces.model.SelectItem;
import javax.xml.namespace.QName;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
@@ -149,9 +150,16 @@
public List<RegistrationPropertyDescription> getRegistrationProperties()
{
- return getLocalConfiguration().getRegistrationProperties();
+ ArrayList<RegistrationPropertyDescription> propertyDescriptions = new ArrayList<RegistrationPropertyDescription>(getLocalConfiguration().getRegistrationProperties().values());
+ Collections.sort(propertyDescriptions);
+ return propertyDescriptions;
}
+ public boolean isRegistrationPropertiesEmpty()
+ {
+ return getLocalConfiguration().getRegistrationProperties().isEmpty();
+ }
+
public List<SelectItem> getSupportedPropertyTypes()
{
return Collections.singletonList(new SelectItem("xsd:string"));
@@ -177,7 +185,7 @@
registrationRequirements.reloadPolicyFrom(policyClassName, validatorClassName);
- registrationRequirements.setRegistrationProperties(localConfiguration.getRegistrationRequirements().getRegistrationProperties());
+ registrationRequirements.setRegistrationProperties(localConfiguration.getRegistrationProperties());
currentlyPersistedConfiguration.setUsingStrictMode(localConfiguration.isUsingStrictMode());
@@ -349,9 +357,9 @@
return registrationRequirements.getPolicy();
}
- public List<RegistrationPropertyDescription> getRegistrationProperties()
+ public Map<QName, RegistrationPropertyDescription> getRegistrationProperties()
{
- return registrationProperties;
+ return registrationRequirements.getRegistrationProperties();
}
public void addEmptyRegistrationProperty(String propertyName)
Modified: components/wsrp/trunk/admin-gui/src/main/webapp/jsf/producer/producer.xhtml
===================================================================
--- components/wsrp/trunk/admin-gui/src/main/webapp/jsf/producer/producer.xhtml 2011-10-25 15:07:11 UTC (rev 7873)
+++ components/wsrp/trunk/admin-gui/src/main/webapp/jsf/producer/producer.xhtml 2011-10-25 16:37:44 UTC (rev 7874)
@@ -42,11 +42,11 @@
<h:panelGrid columns="2" width="100%">
<h:selectBooleanCheckbox id="cons-reg-req-check"
value="#{producer.registrationRequiredForFullDescription}"
- immediate="true"
+ immediate="true" onclick="this.form.submit()"
valueChangeListener="#{producer.requireRegistrationForFullDescListener}"/>
<h:outputText value="#{i18n.producer_config_sd_requires_reg}"/>
<h:selectBooleanCheckbox id="strict-mode-check" value="#{producer.strictMode}"
- immediate="true"
+ immediate="true" onclick="this.form.submit()"
valueChangeListener="#{producer.strictModeListener}"/>
<h:outputText value="#{i18n.producer_config_strict}"/>
@@ -104,7 +104,7 @@
</webui:blueHeaderBar>
- <f:subview rendered="#{!empty producer.registrationProperties}" id="reg-props">
+ <f:subview rendered="#{!producer.registrationPropertiesEmpty}" id="reg-props">
<h:dataTable id="reg-properties" value="#{producer.registrationProperties}" var="property"
rendered="#{producer.registrationRequired}"
rowClasses="EvenRow,OddRow"
@@ -137,7 +137,7 @@
</h:dataTable>
</f:subview>
- <f:subview rendered="#{empty producer.registrationProperties}" id="reg-props-none">
+ <f:subview rendered="#{producer.registrationPropertiesEmpty}" id="reg-props-none">
<h:outputText value="#{i18n.producer_config_no_reg_props}"/>
</f:subview>
13 years, 2 months
gatein SVN: r7873 - components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/services.
by do-not-reply@jboss.org
Author: chris.laprun(a)jboss.com
Date: 2011-10-25 11:07:11 -0400 (Tue, 25 Oct 2011)
New Revision: 7873
Modified:
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/services/SOAPServiceFactory.java
Log:
- Minor optimization.
Modified: components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/services/SOAPServiceFactory.java
===================================================================
--- components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/services/SOAPServiceFactory.java 2011-10-25 14:32:11 UTC (rev 7872)
+++ components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/services/SOAPServiceFactory.java 2011-10-25 15:07:11 UTC (rev 7873)
@@ -557,14 +557,26 @@
}
}
- protected class WSDLInfo
+ protected static class WSDLInfo
{
private final QName wsrp2ServiceQName;
private final QName wsrp1ServiceQName;
+ private final static WSDLFactory wsdlFactory;
+ static
+ {
+ try
+ {
+ wsdlFactory = WSDLFactory.newInstance();
+ }
+ catch (WSDLException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+
public WSDLInfo(String wsdlURL) throws WSDLException
{
- WSDLFactory wsdlFactory = WSDLFactory.newInstance();
WSDLReader wsdlReader = wsdlFactory.newWSDLReader();
wsdlReader.setFeature("javax.wsdl.verbose", false);
13 years, 2 months
gatein SVN: r7872 - components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry.
by do-not-reply@jboss.org
Author: chris.laprun(a)jboss.com
Date: 2011-10-25 10:32:11 -0400 (Tue, 25 Oct 2011)
New Revision: 7872
Modified:
components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/AbstractConsumerRegistry.java
Log:
- GTNWSRP-252: Consumer gets registered with federating invoker when the it is created so there's no need to register it again when the id is changed.
Modified: components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/AbstractConsumerRegistry.java
===================================================================
--- components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/AbstractConsumerRegistry.java 2011-10-25 14:27:20 UTC (rev 7871)
+++ components/wsrp/trunk/consumer/src/main/java/org/gatein/wsrp/consumer/registry/AbstractConsumerRegistry.java 2011-10-25 14:32:11 UTC (rev 7872)
@@ -272,7 +272,6 @@
if (federatingPortletInvoker.isResolved(oldId))
{
federatingPortletInvoker.unregisterInvoker(oldId);
- federatingPortletInvoker.registerInvoker(producerInfo.getId(), consumer);
}
// update cache
13 years, 2 months
gatein SVN: r7871 - in epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf: organization/picketlink-idm and 1 other directory.
by do-not-reply@jboss.org
Author: mposolda
Date: 2011-10-25 10:27:20 -0400 (Tue, 25 Oct 2011)
New Revision: 7871
Removed:
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/udp-mux.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/jboss-cache-cluster.xml
Log:
JBEPP-1210 Support for shared transport in JGroups configuration. Removing empty files.
Deleted: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/udp-mux.xml
===================================================================
Deleted: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/jboss-cache-cluster.xml
===================================================================
13 years, 2 months
gatein SVN: r7870 - in epp/portal/branches/EPP_5_2_Branch: component/identity/src/main/java/org/exoplatform/services/organization/idm and 11 other directories.
by do-not-reply@jboss.org
Author: mposolda
Date: 2011-10-25 10:23:45 -0400 (Tue, 25 Oct 2011)
New Revision: 7870
Added:
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/jgroups/
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/jgroups/gatein-tcp.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/jgroups/gatein-udp.xml
Modified:
epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/conf/configuration-jboss.properties
epp/portal/branches/EPP_5_2_Branch/component/identity/src/main/java/org/exoplatform/services/organization/idm/PicketLinkIDMServiceImpl.java
epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/src/patch/EAP/jboss-log4j.xml.patch
epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/conf/sample-ext/jcr/repository-configuration.xml
epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/conf/sample-portal/jcr/repository-configuration.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jbosscache/cluster/config.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/config.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/indexer-config.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/lock-config.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/udp-mux.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/repository-configuration.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/idm-configuration.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/jboss-cache-api-cluster.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/jboss-cache-cluster.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/jboss-cache-store-cluster.xml
epp/portal/branches/EPP_5_2_Branch/wsrp-integration/extension-war/src/main/webapp/WEB-INF/conf/wsrp/repository-configuration.xml
Log:
JBEPP-1210 Support for shared transport in JGroups configuration
Modified: epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/conf/configuration-jboss.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/conf/configuration-jboss.properties 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/conf/configuration-jboss.properties 2011-10-25 14:23:45 UTC (rev 7870)
@@ -36,7 +36,7 @@
gatein.jcr.index.data.dir=${gatein.jcr.data.dir}/lucene
gatein.jcr.index.changefilterclass=org.exoplatform.services.jcr.impl.core.query.DefaultChangesFilter
gatein.jcr.index.cache.config=war:/conf/jcr/jbosscache/cluster/indexer-config.xml
-gatein.jcr.jgroups.config=war:/conf/jcr/jbosscache/cluster/udp-mux.xml
+gatein.jcr.jgroups.config=classpath:/jgroups/gatein-${gatein.default.jgroups.stack:udp}.xml
# IDM
gatein.idm.datasource.name=java:gatein-idm
Modified: epp/portal/branches/EPP_5_2_Branch/component/identity/src/main/java/org/exoplatform/services/organization/idm/PicketLinkIDMServiceImpl.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/identity/src/main/java/org/exoplatform/services/organization/idm/PicketLinkIDMServiceImpl.java 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/component/identity/src/main/java/org/exoplatform/services/organization/idm/PicketLinkIDMServiceImpl.java 2011-10-25 14:23:45 UTC (rev 7870)
@@ -19,6 +19,7 @@
package org.exoplatform.services.organization.idm;
+import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.container.configuration.ConfigurationManager;
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.container.xml.ValueParam;
@@ -30,6 +31,7 @@
import org.jboss.cache.CacheFactory;
import org.jboss.cache.DefaultCacheFactory;
+import org.jboss.cache.config.Configuration;
import org.jgroups.JChannelFactory;
import org.picketlink.idm.api.IdentitySession;
import org.picketlink.idm.api.IdentitySessionFactory;
@@ -42,7 +44,6 @@
import org.picketlink.idm.spi.configuration.metadata.IdentityConfigurationMetaData;
import org.picocontainer.Startable;
-import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
@@ -97,6 +98,7 @@
}
public PicketLinkIDMServiceImpl(
+ ExoContainerContext exoContainerContext,
InitParams initParams,
HibernateService hibernateService,
ConfigurationManager confManager,
@@ -164,8 +166,16 @@
throw new IllegalArgumentException("JBoss Cache configuration InputStream is null");
}
- Cache cache = factory.createCache(configStream);
+ Cache cache = factory.createCache(configStream, false);
+ Configuration cfg = cache.getConfiguration();
+ // we need unique cluster name for each portal container
+ String clusterName = cfg.getClusterName();
+ if (clusterName != null && (clusterName = clusterName.trim()).length() > 0)
+ {
+ cfg.setClusterName(clusterName + "-" + exoContainerContext.getName());
+ }
+
applyJGroupsConfig(cache, confManager, jgroupsStack, jgroupsConfig);
cache.create();
@@ -200,8 +210,16 @@
throw new IllegalArgumentException("JBoss Cache configuration InputStream is null");
}
- Cache cache = factory.createCache(configStream);
+ Cache cache = factory.createCache(configStream, false);
+ Configuration cfg = cache.getConfiguration();
+ // we need unique cluster name for each portal container
+ String clusterName = cfg.getClusterName();
+ if (clusterName != null && (clusterName = clusterName.trim()).length() > 0)
+ {
+ cfg.setClusterName(clusterName + "-" + exoContainerContext.getName());
+ }
+
applyJGroupsConfig(cache, confManager, jgroupsStack, jgroupsConfig);
cache.create();
Modified: epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/src/patch/EAP/jboss-log4j.xml.patch
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/src/patch/EAP/jboss-log4j.xml.patch 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/src/patch/EAP/jboss-log4j.xml.patch 2011-10-25 14:23:45 UTC (rev 7870)
@@ -1,6 +1,6 @@
--- jboss-log4j.xml.orig 2011-06-24 10:50:16.000000000 +0200
+++ jboss-log4j.xml 2011-06-24 11:11:10.341965795 +0200
-@@ -180,7 +180,22 @@
+@@ -180,7 +180,17 @@
<category name="org.apache">
<priority value="INFO"/>
</category>
@@ -15,11 +15,6 @@
+ <priority value="INFO"/>
+ </category>
-+ <!-- Limit verbose jgroups when running in cluster -->
-+ <category name="org.jgroups.protocols.UDP">
-+ <priority value="ERROR" />
-+ </category>
-+
<!-- Limit the jacorb category to WARN as its INFO is verbose -->
<category name="jacorb">
<priority value="WARN"/>
Modified: epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/conf/sample-ext/jcr/repository-configuration.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/conf/sample-ext/jcr/repository-configuration.xml 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/conf/sample-ext/jcr/repository-configuration.xml 2011-10-25 14:23:45 UTC (rev 7870)
@@ -57,8 +57,9 @@
<properties>
<property name="jbosscache-configuration" value="${gatein.jcr.cache.config}" />
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="jcr-${container.name.suffix}-sample-ws" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcr${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
</properties>
</cache>
<query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
@@ -67,8 +68,9 @@
<property name="changesfilter-class" value="${gatein.jcr.index.changefilterclass}" />
<property name="jbosscache-configuration" value="${gatein.jcr.index.cache.config}" />
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="jcrindexer-${container.name.suffix}-sample-ws" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcrindexer${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
<property name="max-volatile-time" value="60" />
</properties>
</query-handler>
@@ -77,9 +79,10 @@
<property name="time-out" value="15m" />
<property name="jbosscache-configuration" value="${gatein.jcr.lock.cache.config}" />
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="jcrlock-${container.name.suffix}-sample-ws" />
- <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlock_sample_ws" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcrlock${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
+ <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlock" />
<property name="jbosscache-cl-cache.jdbc.table.create" value="true" />
<property name="jbosscache-cl-cache.jdbc.table.drop" value="false" />
<property name="jbosscache-cl-cache.jdbc.table.primarykey" value="pk" />
Modified: epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/conf/sample-portal/jcr/repository-configuration.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/conf/sample-portal/jcr/repository-configuration.xml 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/conf/sample-portal/jcr/repository-configuration.xml 2011-10-25 14:23:45 UTC (rev 7870)
@@ -57,8 +57,9 @@
<properties>
<property name="jbosscache-configuration" value="${gatein.jcr.cache.config}" />
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="jcr-${container.name.suffix}-sample-ws" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcr${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
</properties>
</cache>
<query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
@@ -67,8 +68,9 @@
<property name="changesfilter-class" value="${gatein.jcr.index.changefilterclass}" />
<property name="jbosscache-configuration" value="${gatein.jcr.index.cache.config}" />
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="jcrindexer-${container.name.suffix}-sample-ws" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcrindexer${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
<property name="max-volatile-time" value="60" />
</properties>
</query-handler>
@@ -77,9 +79,10 @@
<property name="time-out" value="15m" />
<property name="jbosscache-configuration" value="${gatein.jcr.lock.cache.config}" />
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="jcrlock-${container.name.suffix}-sample-ws" />
- <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlock_sample_ws" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcrlock${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
+ <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlock" />
<property name="jbosscache-cl-cache.jdbc.table.create" value="true" />
<property name="jbosscache-cl-cache.jdbc.table.drop" value="false" />
<property name="jbosscache-cl-cache.jdbc.table.primarykey" value="pk" />
Added: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/jgroups/gatein-tcp.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/jgroups/gatein-tcp.xml (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/jgroups/gatein-tcp.xml 2011-10-25 14:23:45 UTC (rev 7870)
@@ -0,0 +1,73 @@
+ <config>
+ <TCP
+ singleton_name="gatein-tcp"
+ start_port="${gatein.jgroups.tcp.tcp_port:8600}"
+ tcp_nodelay="true"
+ 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"
+ timer.num_threads="12"
+ enable_diagnostics="${jboss.jgroups.enable_diagnostics:true}"
+ diagnostics_addr="${jboss.jgroups.diagnostics_addr:224.0.75.75}"
+ diagnostics_port="${jboss.jgroups.diagnostics_port:7500}"
+
+ thread_pool.enabled="true"
+ thread_pool.min_threads="20"
+ thread_pool.max_threads="200"
+ 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="20"
+ oob_thread_pool.max_threads="200"
+ oob_thread_pool.keep_alive_time="1000"
+ oob_thread_pool.queue_enabled="false"
+ oob_thread_pool.rejection_policy="discard"/>
+ <!-- Alternative 1: multicast-based automatic discovery. -->
+ <MPING timeout="3000"
+ num_initial_members="3"
+ mcast_addr="${gatein.jgroups.tcp.mping_mcast_addr:235.15.15.15}"
+ mcast_port="${gatein.tcp.mping_mcast_port:46700}"
+ ip_ttl="${jgroups.udp.ip_ttl:2}"/>
+ <!-- Alternative 2: non multicast-based replacement for MPING. Requires a static configuration
+ of *all* possible cluster members.
+ <TCPPING timeout="3000"
+ initial_hosts="${gatein.jgroups.tcp.tcpping.initial_hosts:localhost[8600],localhost[8601]}"
+ port_range="1"
+ num_initial_members="3"/>
+ -->
+ <MERGE2 max_interval="100000" min_interval="20000"/>
+ <FD_SOCK start_port="${gatein.jgroups.tcp.fd_sock_port:58600}"/>
+ <FD timeout="6000" max_tries="5" shun="true"/>
+ <VERIFY_SUSPECT timeout="1500"/>
+ <BARRIER/>
+ <pbcast.NAKACK use_mcast_xmit="false" gc_lag="0"
+ retransmit_timeout="300,600,1200,2400,4800"
+ discard_delivered_msgs="true"/>
+ <UNICAST timeout="300,600,1200,2400,3600"/>
+ <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
+ max_bytes="400000"/>
+ <VIEW_SYNC avg_send_interval="10000"/>
+ <pbcast.GMS print_local_addr="true" join_timeout="3000"
+ shun="true"
+ view_bundling="true"
+ view_ack_collection_timeout="5000"
+ resume_task_timeout="7500"/>
+ <FC max_credits="2000000" min_threshold="0.10"
+ ignore_synchronous_response="true"/>
+ <FRAG2 frag_size="60000"/>
+ <!-- pbcast.STREAMING_STATE_TRANSFER/ -->
+ <pbcast.STATE_TRANSFER/>
+ <pbcast.FLUSH timeout="0" start_flush_timeout="10000"/>
+ </config>
+
Added: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/jgroups/gatein-udp.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/jgroups/gatein-udp.xml (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/jgroups/gatein-udp.xml 2011-10-25 14:23:45 UTC (rev 7870)
@@ -0,0 +1,52 @@
+<!--
+ ~ Copyright (C) 2009 eXo Platform SAS.
+ ~
+ ~ This is free software; you can redistribute it and/or modify it
+ ~ under the terms of the GNU Lesser General Public License as
+ ~ published by the Free Software Foundation; either version 2.1 of
+ ~ the License, or (at your option) any later version.
+ ~
+ ~ This software is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ ~ Lesser General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public
+ ~ License along with this software; if not, write to the Free
+ ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ -->
+ <config>
+ <UDP
+ singleton_name="gatein-udp"
+ bind_port="${gatein.jgroups.udp.bind_port:56200}"
+ mcast_addr="${jboss.jgroups.udp_async.mcast_addr:228.10.10.10}" mcast_port="${jboss.jgroups.udp_async.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="${jgroups.udp.ip_ttl:2}" enable_bundling="false" enable_diagnostics="${jboss.jgroups.enable_diagnostics:true}"
+ diagnostics_addr="${jboss.jgroups.diagnostics_addr:224.0.75.75}" diagnostics_port="${jboss.jgroups.diagnostics_port:7500}"
+ 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" />
+
+ <PING timeout="2000" num_initial_members="3" />
+ <MERGE2 max_interval="30000" min_interval="10000" />
+ <FD_SOCK />
+ <FD timeout="10000" max_tries="5" shun="true" />
+ <VERIFY_SUSPECT timeout="1500" />
+ <BARRIER />
+ <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" />
+ <UNICAST timeout="300,600,1200" />
+ <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000" max_bytes="1000000" />
+ <VIEW_SYNC avg_send_interval="60000" />
+ <pbcast.GMS print_local_addr="true" join_timeout="3000" shun="false" view_bundling="true" />
+ <FC max_credits="500000" min_threshold="0.20" />
+ <FRAG2 frag_size="60000" />
+ <!--pbcast.STREAMING_STATE_TRANSFER /-->
+ <pbcast.STATE_TRANSFER />
+ <pbcast.FLUSH />
+ </config>
+
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jbosscache/cluster/config.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jbosscache/cluster/config.xml 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jbosscache/cluster/config.xml 2011-10-25 14:23:45 UTC (rev 7870)
@@ -21,7 +21,7 @@
<!-- The cluster name should be changed by the kernel cache configuration -->
<clustering mode="replication" clusterName="${jboss.partition.name:DefaultPartition}-gatein">
-<jgroupsConfig configFile="${jboss.default.jgroups.stack:udp}.xml" />
+<jgroupsConfig configFile="jgroups/gatein-${gatein.default.jgroups.stack:udp}.xml" />
</clustering>
</jbosscache>
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/config.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/config.xml 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/config.xml 2011-10-25 14:23:45 UTC (rev 7870)
@@ -24,7 +24,7 @@
<clustering mode="replication" clusterName="${jboss.partition.name:DefaultPartition}-${jbosscache-cluster-name}">
<stateRetrieval timeout="20000" fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
+ <jgroupsConfig configFile="jgroups/gatein-${gatein.default.jgroups.stack:udp}.xml" />
<sync />
</clustering>
@@ -37,4 +37,4 @@
<property name="timeToLive" value="20000" />
</default>
</eviction>
-</jbosscache>
\ No newline at end of file
+</jbosscache>
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/indexer-config.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/indexer-config.xml 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/indexer-config.xml 2011-10-25 14:23:45 UTC (rev 7870)
@@ -26,7 +26,7 @@
<clustering mode="replication" clusterName="${jboss.partition.name:DefaultPartition}-${jbosscache-cluster-name}">
<stateRetrieval timeout="20000" fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
+ <jgroupsConfig configFile="jgroups/gatein-${gatein.default.jgroups.stack:udp}.xml" />
<sync />
</clustering>
<!-- Eviction configuration -->
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/lock-config.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/lock-config.xml 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/lock-config.xml 2011-10-25 14:23:45 UTC (rev 7870)
@@ -23,7 +23,7 @@
<clustering mode="replication" clusterName="${jboss.partition.name:DefaultPartition}-${jbosscache-cluster-name}">
<stateRetrieval timeout="20000" fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
+ <jgroupsConfig configFile="jgroups/gatein-${gatein.default.jgroups.stack:udp}.xml" />
<sync />
</clustering>
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/udp-mux.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/udp-mux.xml 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/jbosscache/cluster/udp-mux.xml 2011-10-25 14:23:45 UTC (rev 7870)
@@ -1,51 +0,0 @@
-<!--
- ~ Copyright (C) 2009 eXo Platform SAS.
- ~
- ~ This is free software; you can redistribute it and/or modify it
- ~ under the terms of the GNU Lesser General Public License as
- ~ published by the Free Software Foundation; either version 2.1 of
- ~ the License, or (at your option) any later version.
- ~
- ~ This software is distributed in the hope that it will be useful,
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
- ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- ~ Lesser General Public License for more details.
- ~
- ~ You should have received a copy of the GNU Lesser General Public
- ~ License along with this software; if not, write to the Free
- ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- -->
-<protocol_stacks>
- <stack name="jcr.stack">
- <config>
- <UDP mcast_addr="${jboss.jgroups.udp_async.mcast_addr:228.10.10.10}" mcast_port="${jboss.jgroups.udp_async.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" />
-
- <PING timeout="2000" num_initial_members="3" />
- <MERGE2 max_interval="30000" min_interval="10000" />
- <FD_SOCK />
- <FD timeout="10000" max_tries="5" shun="true" />
- <VERIFY_SUSPECT timeout="1500" />
- <BARRIER />
- <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" />
- <UNICAST timeout="300,600,1200" />
- <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000" max_bytes="1000000" />
- <VIEW_SYNC avg_send_interval="60000" />
- <pbcast.GMS print_local_addr="true" join_timeout="3000" shun="false" view_bundling="true" />
- <FC max_credits="500000" min_threshold="0.20" />
- <FRAG2 frag_size="60000" />
- <!--pbcast.STREAMING_STATE_TRANSFER /-->
- <pbcast.STATE_TRANSFER />
- <!-- pbcast.FLUSH /-->
- </config>
- </stack>
-</protocol_stacks>
\ No newline at end of file
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/repository-configuration.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/repository-configuration.xml 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/jcr/repository-configuration.xml 2011-10-25 14:23:45 UTC (rev 7870)
@@ -59,8 +59,9 @@
<properties>
<property name="jbosscache-configuration" value="${gatein.jcr.cache.config}" />
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="jcr-${container.name.suffix}-system" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcr${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
</properties>
</cache>
<query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
@@ -69,8 +70,9 @@
<property name="changesfilter-class" value="${gatein.jcr.index.changefilterclass}" />
<property name="jbosscache-configuration" value="${gatein.jcr.index.cache.config}" />
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="jcrindexer-${container.name.suffix}-system" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcrindexer${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
<property name="max-volatile-time" value="60" />
</properties>
</query-handler>
@@ -79,9 +81,10 @@
<property name="time-out" value="15m" />
<property name="jbosscache-configuration" value="${gatein.jcr.lock.cache.config}" />
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="jcrlock-${container.name.suffix}-system" />
- <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlock_system" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcrlock${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
+ <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlock" />
<property name="jbosscache-cl-cache.jdbc.table.create" value="true" />
<property name="jbosscache-cl-cache.jdbc.table.drop" value="false" />
<property name="jbosscache-cl-cache.jdbc.table.primarykey" value="pk" />
@@ -125,8 +128,9 @@
<properties>
<property name="jbosscache-configuration" value="${gatein.jcr.cache.config}" />
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="jcr-${container.name.suffix}-portal-system" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcr${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
</properties>
</cache>
<query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
@@ -135,8 +139,9 @@
<property name="changesfilter-class" value="${gatein.jcr.index.changefilterclass}" />
<property name="jbosscache-configuration" value="${gatein.jcr.index.cache.config}" />
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="jcrindexer-${container.name.suffix}-portal-system" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcrindexer${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
<property name="max-volatile-time" value="60" />
</properties>
</query-handler>
@@ -145,9 +150,10 @@
<property name="time-out" value="15m" />
<property name="jbosscache-configuration" value="${gatein.jcr.lock.cache.config}" />
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="jcrlock-${container.name.suffix}-portal-system" />
- <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlock_portal_system" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcrlock${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
+ <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlock" />
<property name="jbosscache-cl-cache.jdbc.table.create" value="true" />
<property name="jbosscache-cl-cache.jdbc.table.drop" value="false" />
<property name="jbosscache-cl-cache.jdbc.table.primarykey" value="pk" />
@@ -191,8 +197,9 @@
<properties>
<property name="jbosscache-configuration" value="${gatein.jcr.cache.config}" />
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="jcr-${container.name.suffix}-portal-work" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcr${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
</properties>
</cache>
<query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
@@ -201,8 +208,9 @@
<property name="changesfilter-class" value="${gatein.jcr.index.changefilterclass}" />
<property name="jbosscache-configuration" value="${gatein.jcr.index.cache.config}" />
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="jcrindexer-${container.name.suffix}-portal-work" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcrindexer${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
<property name="max-volatile-time" value="60" />
</properties>
</query-handler>
@@ -211,9 +219,10 @@
<property name="time-out" value="15m" />
<property name="jbosscache-configuration" value="${gatein.jcr.lock.cache.config}" />
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="jcrlock-${container.name.suffix}-portal-work" />
- <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlock_portal_work" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcrlock${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
+ <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlock" />
<property name="jbosscache-cl-cache.jdbc.table.create" value="true" />
<property name="jbosscache-cl-cache.jdbc.table.drop" value="false" />
<property name="jbosscache-cl-cache.jdbc.table.primarykey" value="pk" />
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/idm-configuration.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/idm-configuration.xml 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/idm-configuration.xml 2011-10-25 14:23:45 UTC (rev 7870)
@@ -152,7 +152,7 @@
<value-param profiles="cluster">
<name>jgroups-multiplexer-stack</name>
- <value>true</value>
+ <value>false</value>
</value-param>
<value-param>
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/jboss-cache-api-cluster.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/jboss-cache-api-cluster.xml 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/jboss-cache-api-cluster.xml 2011-10-25 14:23:45 UTC (rev 7870)
@@ -1,8 +1,9 @@
<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
+ <!-- The cluster name will be changed programmatically. Portal container name will be added to the end of name. -->
<clustering mode="replication" clusterName="${jboss.partition.name:DefaultPartition}-idm-api-cluster">
<stateRetrieval timeout="20000" fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
+ <jgroupsConfig configFile="jgroups/gatein-${gatein.default.jgroups.stack:udp}.xml" />
<sync />
</clustering>
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/jboss-cache-cluster.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/jboss-cache-cluster.xml 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/jboss-cache-cluster.xml 2011-10-25 14:23:45 UTC (rev 7870)
@@ -1,19 +0,0 @@
-<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
-
- <clustering mode="replication" clusterName="${jboss.partition.name:DefaultPartition}-idm-cluster">
- <stateRetrieval timeout="20000" fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
- <sync />
- </clustering>
-
- <!-- Eviction configuration -->
- <eviction wakeUpInterval="5000">
- <default algorithmClass="org.jboss.cache.eviction.ExpirationAlgorithm"
- eventQueueSize="1000000">
- <property name="maxNodes" value="100000" />
- <property name="timeToLive" value="120000" />
- <property name="warnNoExpirationKey" value="false" />
- </default>
- </eviction>
-
-</jbosscache>
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/jboss-cache-store-cluster.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/jboss-cache-store-cluster.xml 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/jboss-cache-store-cluster.xml 2011-10-25 14:23:45 UTC (rev 7870)
@@ -1,8 +1,9 @@
<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
+ <!-- The cluster name will be changed programmatically. Portal container name will be added to the end of name. -->
<clustering mode="replication" clusterName="${jboss.partition.name:DefaultPartition}-idm-store-cluster">
<stateRetrieval timeout="20000" fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
+ <jgroupsConfig configFile="jgroups/gatein-${gatein.default.jgroups.stack:udp}.xml" />
<sync />
</clustering>
Modified: epp/portal/branches/EPP_5_2_Branch/wsrp-integration/extension-war/src/main/webapp/WEB-INF/conf/wsrp/repository-configuration.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/wsrp-integration/extension-war/src/main/webapp/WEB-INF/conf/wsrp/repository-configuration.xml 2011-10-25 10:54:20 UTC (rev 7869)
+++ epp/portal/branches/EPP_5_2_Branch/wsrp-integration/extension-war/src/main/webapp/WEB-INF/conf/wsrp/repository-configuration.xml 2011-10-25 14:23:45 UTC (rev 7870)
@@ -64,8 +64,9 @@
<properties>
<property name="jbosscache-configuration" value="${gatein.jcr.cache.config}"/>
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}"/>
- <property name="jgroups-multiplexer-stack" value="true"/>
- <property name="jbosscache-cluster-name" value="jcr-${container.name.suffix}-wsrp-system"/>
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcr${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
</properties>
</cache>
<query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
@@ -75,8 +76,9 @@
<property name="changesfilter-class" value="${gatein.jcr.index.changefilterclass}"/>
<property name="jbosscache-configuration" value="${gatein.jcr.index.cache.config}"/>
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}"/>
- <property name="jgroups-multiplexer-stack" value="true"/>
- <property name="jbosscache-cluster-name" value="jcrindexer-${container.name.suffix}-wsrp-system"/>
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcrindexer${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
<property name="max-volatile-time" value="60"/>
</properties>
</query-handler>
@@ -85,9 +87,10 @@
<property name="time-out" value="15m"/>
<property name="jbosscache-configuration" value="${gatein.jcr.lock.cache.config}"/>
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}"/>
- <property name="jgroups-multiplexer-stack" value="true"/>
- <property name="jbosscache-cluster-name" value="jcrlock-${container.name.suffix}-wsrp-system"/>
- <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlock_wsrp_system"/>
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcrlock${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
+ <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlock" />
<property name="jbosscache-cl-cache.jdbc.table.create" value="true"/>
<property name="jbosscache-cl-cache.jdbc.table.drop" value="false"/>
<property name="jbosscache-cl-cache.jdbc.table.primarykey" value="pk"/>
@@ -136,8 +139,9 @@
<properties>
<property name="jbosscache-configuration" value="${gatein.jcr.cache.config}"/>
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}"/>
- <property name="jgroups-multiplexer-stack" value="true"/>
- <property name="jbosscache-cluster-name" value="jcr-${container.name.suffix}-pc-system"/>
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcr${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
</properties>
</cache>
<query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
@@ -146,8 +150,9 @@
<property name="changesfilter-class" value="${gatein.jcr.index.changefilterclass}"/>
<property name="jbosscache-configuration" value="${gatein.jcr.index.cache.config}"/>
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}"/>
- <property name="jgroups-multiplexer-stack" value="true"/>
- <property name="jbosscache-cluster-name" value="jcrindexer-${container.name.suffix}-pc-system"/>
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcrindexer${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
<property name="max-volatile-time" value="60"/>
</properties>
</query-handler>
@@ -156,9 +161,10 @@
<property name="time-out" value="15m"/>
<property name="jbosscache-configuration" value="${gatein.jcr.lock.cache.config}"/>
<property name="jgroups-configuration" value="${gatein.jcr.jgroups.config}"/>
- <property name="jgroups-multiplexer-stack" value="true"/>
- <property name="jbosscache-cluster-name" value="jcrlock-${container.name.suffix}-pc-system"/>
- <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlock_portlet_state_system"/>
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="jcrlock${container.name.suffix}" />
+ <property name="jbosscache-shareable" value="true" />
+ <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlock" />
<property name="jbosscache-cl-cache.jdbc.table.create" value="true"/>
<property name="jbosscache-cl-cache.jdbc.table.drop" value="false"/>
<property name="jbosscache-cl-cache.jdbc.table.primarykey" value="pk"/>
13 years, 2 months
gatein SVN: r7869 - epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/portletbridge.
by do-not-reply@jboss.org
Author: hfnukal
Date: 2011-10-25 06:54:20 -0400 (Tue, 25 Oct 2011)
New Revision: 7869
Modified:
epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/portletbridge/pom.xml
Log:
JBEPP-1312 Exclude commons-collections-3.2.1.jar in jboss-epp-5.2/portletbridge
Modified: epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/portletbridge/pom.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/portletbridge/pom.xml 2011-10-25 10:40:10 UTC (rev 7868)
+++ epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/portletbridge/pom.xml 2011-10-25 10:54:20 UTC (rev 7869)
@@ -20,6 +20,12 @@
<artifactId>portletbridge-impl</artifactId>
<version>${portletbridge.version}</version>
<type>jar</type>
+ <exclusions>
+ <exclusion>
+ <artifactId>commons-collections</artifactId>
+ <groupId>commons-collections</groupId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.jboss.portletbridge</groupId>
13 years, 2 months
gatein SVN: r7868 - in portal/trunk/component/portal/src: test/java/org/exoplatform/portal/config and 1 other directory.
by do-not-reply@jboss.org
Author: haint
Date: 2011-10-25 06:40:10 -0400 (Tue, 25 Oct 2011)
New Revision: 7868
Modified:
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/pom/data/Mapper.java
portal/trunk/component/portal/src/test/java/org/exoplatform/portal/config/TestDataStorage.java
Log:
GTNPORTAL-2193 Cannot store Dashboard portlet attributes at the first time
Modified: portal/trunk/component/portal/src/main/java/org/exoplatform/portal/pom/data/Mapper.java
===================================================================
--- portal/trunk/component/portal/src/main/java/org/exoplatform/portal/pom/data/Mapper.java 2011-10-25 10:36:54 UTC (rev 7867)
+++ portal/trunk/component/portal/src/main/java/org/exoplatform/portal/pom/data/Mapper.java 2011-10-25 10:40:10 UTC (rev 7868)
@@ -311,6 +311,13 @@
boolean showMode = attrs.getValue(MappedAttributes.SHOW_MODE, false);
boolean showWindowState = attrs.getValue(MappedAttributes.SHOW_WINDOW_STATE, false);
String theme = attrs.getValue(MappedAttributes.THEME, null);
+
+ Described described = srcContainer.adapt(Described.class);
+
+ String id = attrs.getValue(MappedAttributes.ID, null);
+ String icon = attrs.getValue(MappedAttributes.ICON, null);
+ String width = attrs.getValue(MappedAttributes.WIDTH, null);
+ String height = attrs.getValue(MappedAttributes.HEIGHT, null);
//
List<String> a = Collections.singletonList(UserACL.EVERYONE);
@@ -325,16 +332,16 @@
component.getName(),
ApplicationType.PORTLET,
state,
- null,
- null,
- null,
- null,
+ id,
+ described.getName(),
+ icon,
+ described.getDescription(),
showInfoBar,
showWindowState,
showMode,
theme,
- null,
- null,
+ width,
+ height,
Collections.<String, String>emptyMap(),
a);
}
@@ -533,6 +540,8 @@
for (ModelData srcChild : src.getChildren())
{
String srcChildId = srcChild.getStorageId();
+ //Flag variable, become non null if and only if we are saving a transient dashboard
+ ApplicationData<?> transientDashboardData = null;
// Replace dashboard application by container if needed
// this should be removed once we make the dashboard as first class
@@ -564,20 +573,36 @@
else
{
data = DashboardData.INITIAL_DASHBOARD;
+ transientDashboardData = (ApplicationData<?>)srcChild;
}
//
+ String icon = data.getIcon();
+ if(icon == null) icon = app.getIcon();
+
+ String title = data.getTitle();
+ if(title == null) title = app.getTitle();
+
+ String description = data.getDescription();
+ if(description == null) description = app.getDescription();
+
+ String width = data.getWidth();
+ if(width == null) width = app.getWidth();
+
+ String height = data.getHeight();
+ if(height == null) height = app.getHeight();
+
data = new DashboardData(
data.getStorageId(),
data.getId(),
data.getName(),
- data.getIcon(),
+ icon,
data.getTemplate(),
data.getFactoryId(),
- data.getTitle(),
- data.getDescription(),
- data.getWidth(),
- data.getHeight(),
+ title,
+ description,
+ width,
+ height,
app.getAccessPermissions(),
data.getChildren()
);
@@ -667,6 +692,14 @@
}
//
+ if(transientDashboardData != null)
+ {
+ Attributes attrs = dstChild.getAttributes();
+ attrs.setValue(MappedAttributes.SHOW_INFO_BAR, transientDashboardData.isShowInfoBar());
+ attrs.setValue(MappedAttributes.SHOW_MODE, transientDashboardData.isShowApplicationMode());
+ attrs.setValue(MappedAttributes.SHOW_WINDOW_STATE, transientDashboardData.isShowApplicationState());
+ attrs.setValue(MappedAttributes.THEME, transientDashboardData.getTheme());
+ }
save(srcChild, dstChild, changes, hierarchyRelationships);
//
Modified: portal/trunk/component/portal/src/test/java/org/exoplatform/portal/config/TestDataStorage.java
===================================================================
--- portal/trunk/component/portal/src/test/java/org/exoplatform/portal/config/TestDataStorage.java 2011-10-25 10:36:54 UTC (rev 7867)
+++ portal/trunk/component/portal/src/test/java/org/exoplatform/portal/config/TestDataStorage.java 2011-10-25 10:40:10 UTC (rev 7868)
@@ -692,6 +692,76 @@
assertEquals("foo/bar", storage_.getId(app.getState()));
}
+ @SuppressWarnings("unchecked")
+ public void testInitialDashboard() throws Exception
+ {
+ // Add dashboard portlet to a page first time
+ String dashboardTheme = "dashboardTheme";
+ String dashboardIcon = "dashboardIcon";
+ String dashboardTitle = "dashboardTitle";
+ String dashboardDesc = "dashboardDesc";
+ String dashboardWidth = "dashboardWidth";
+ String dashboardHeight = "dashboardHeight";
+
+ String normalTheme = "normalTheme";
+
+
+ Page page = new Page();
+ String pageId = "portal::test::bit";
+ page.setPageId(pageId );
+ Application<Portlet> dashboardPortlet = Application.createPortletApplication();
+ Application<Portlet> normalPortlet = Application.createPortletApplication();
+
+ dashboardPortlet.setState(new TransientApplicationState<Portlet>("dashboard/DashboardPortlet"));
+ dashboardPortlet.setTheme(dashboardTheme);
+ dashboardPortlet.setIcon(dashboardIcon);
+ dashboardPortlet.setTitle(dashboardTitle);
+ dashboardPortlet.setDescription(dashboardDesc);
+ dashboardPortlet.setWidth(dashboardWidth);
+ dashboardPortlet.setHeight(dashboardHeight);
+
+ normalPortlet.setState(new TransientApplicationState<Portlet>("normalPortlet"));
+ normalPortlet.setTheme(normalTheme);
+
+ page.getChildren().add(dashboardPortlet);
+ page.getChildren().add(normalPortlet);
+ storage_.save(page);
+
+ //
+ page = storage_.getPage("portal::test::bit");
+ assertEquals(2, page.getChildren().size());
+ dashboardPortlet = (Application<Portlet>) page.getChildren().get(0);
+ normalPortlet = (Application<Portlet>) page.getChildren().get(1);
+ assertNotNull(dashboardPortlet);
+ assertNotNull(normalPortlet);
+
+ assertEquals(normalTheme, normalPortlet.getTheme());
+ assertEquals(dashboardTheme, dashboardPortlet.getTheme());
+ assertEquals(dashboardIcon, dashboardPortlet.getIcon());
+ assertEquals(dashboardTitle, dashboardPortlet.getTitle());
+ assertEquals(dashboardDesc, dashboardPortlet.getDescription());
+ assertEquals(dashboardWidth, dashboardPortlet.getWidth());
+ assertEquals(dashboardHeight, dashboardPortlet.getHeight());
+
+ // Update the dashboard portlet and save
+ dashboardPortlet.setTheme(dashboardTheme);
+ page.getChildren().clear();
+ page.getChildren().add(dashboardPortlet);
+ storage_.save(page);
+
+ //
+ page = storage_.getPage("portal::test::bit");
+ assertEquals(1, page.getChildren().size());
+ dashboardPortlet = (Application<Portlet>) page.getChildren().get(0);
+ assertNotNull(dashboardPortlet);
+ assertEquals(dashboardTheme, dashboardPortlet.getTheme());
+ assertEquals(dashboardIcon, dashboardPortlet.getIcon());
+ assertEquals(dashboardTitle, dashboardPortlet.getTitle());
+ assertEquals(dashboardDesc, dashboardPortlet.getDescription());
+ assertEquals(dashboardWidth, dashboardPortlet.getWidth());
+ assertEquals(dashboardHeight, dashboardPortlet.getHeight());
+ }
+
public void testDashboardLayout() throws Exception
{
Application<Portlet> dashboardPortlet = Application.createPortletApplication();
13 years, 2 months
gatein SVN: r7867 - portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/page.
by do-not-reply@jboss.org
Author: haint
Date: 2011-10-25 06:36:54 -0400 (Tue, 25 Oct 2011)
New Revision: 7867
Modified:
portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/page/UIWizardPageSetInfo.gtmpl
Log:
GTNPORTAL-2206 Error UI when uncheck Extended label mode in Create new page
Modified: portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/page/UIWizardPageSetInfo.gtmpl
===================================================================
--- portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/page/UIWizardPageSetInfo.gtmpl 2011-10-25 10:32:29 UTC (rev 7866)
+++ portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/page/UIWizardPageSetInfo.gtmpl 2011-10-25 10:36:54 UTC (rev 7867)
@@ -9,7 +9,7 @@
%>
<div class="UIWizardPageSetInfo">
<%uiform.begin()%>
- <div class="<%=isNoSelecter ? "NoPageSelecter" : ""%>">
+ <div class="<%=isNoSelecter ? "NoPageSelecter" : "ClearFix"%>">
<%if(!isNoSelecter) {
def pageNode = uicomponent.getSelectedPageNode();
if( pageNode != null && pageNode.getResolvedLabel() != null ) nodeName += pageNode.getResolvedLabel();
@@ -61,4 +61,4 @@
</div>
</div>
<%uiform.end()%>
-</div>
\ No newline at end of file
+</div>
13 years, 2 months