exo-jcr SVN: r5818 - jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-06 08:47:53 -0500 (Tue, 06 Mar 2012)
New Revision: 5818
Modified:
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java
Log:
EXOJCR-1762: auto-repair for LOCK inconsistency
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java 2012-03-06 13:32:25 UTC (rev 5817)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java 2012-03-06 13:47:53 UTC (rev 5818)
@@ -23,6 +23,10 @@
import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
import org.exoplatform.services.jcr.core.security.JCRRuntimePermissions;
+import org.exoplatform.services.jcr.datamodel.ItemType;
+import org.exoplatform.services.jcr.datamodel.NodeData;
+import org.exoplatform.services.jcr.datamodel.PropertyData;
+import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.checker.DummyRepair;
import org.exoplatform.services.jcr.impl.checker.EarlierVersionsRemover;
@@ -168,11 +172,19 @@
WorkspaceStorageConnection conn = jdbcDataContainer.openConnection();
try
{
- if (conn instanceof JDBCStorageConnection)
- {
- ((JDBCStorageConnection)conn).deleteLockProperties(nodeId);
- }
+ NodeData parent = (NodeData)conn.getItemData(nodeId);
+ PropertyData prop =
+ (PropertyData)conn.getItemData(parent, new QPathEntry(Constants.JCR_LOCKISDEEP, 0),
+ ItemType.PROPERTY);
+ conn.delete(prop);
+
+ prop =
+ (PropertyData)conn.getItemData(parent, new QPathEntry(Constants.JCR_LOCKOWNER, 0),
+ ItemType.PROPERTY);
+ conn.delete(prop);
+
conn.commit();
+
logComment("Lock has been removed form ITEM table. Node UUID: " + nodeId);
}
catch (RepositoryException e)
@@ -180,11 +192,6 @@
conn.rollback();
throw e;
}
- catch (SQLException e)
- {
- conn.rollback();
- throw e;
- }
}
}
}
14 years, 1 month
exo-jcr SVN: r5817 - in jcr/branches/1.15.x: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query and 4 other directories.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-06 08:32:25 -0500 (Tue, 06 Mar 2012)
New Revision: 5817
Modified:
jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/AbstractQueryHandler.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/ExoJBossCacheFactory.java
Log:
EXOJCR-1783: stopping shareable JBC
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java 2012-03-06 13:23:03 UTC (rev 5816)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java 2012-03-06 13:32:25 UTC (rev 5817)
@@ -506,6 +506,7 @@
public void stop()
{
super.stop();
+
if (shareable)
{
// The cache cannot be stopped since it can be shared so we evict the root node instead
@@ -513,10 +514,16 @@
cache.evict(lockRoot, true);
cache.getRegion(lockRoot, false).processEvictionQueues();
}
- else
+
+ try
{
- PrivilegedJBossCacheHelper.stop(cache);
+ ExoJBossCacheFactory.releaseUniqueInstance(CacheType.LOCK_CACHE, cache);
}
+ catch (RepositoryConfigurationException e)
+ {
+ LOG.error("Can not release cache instance", e);
+ }
+
if (jmxManager != null)
{
SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/AbstractQueryHandler.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/AbstractQueryHandler.java 2012-03-06 13:23:03 UTC (rev 5816)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/AbstractQueryHandler.java 2012-03-06 13:32:25 UTC (rev 5817)
@@ -155,7 +155,6 @@
{
addNode(add.next());
}
-
}
/**
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java 2012-03-06 13:23:03 UTC (rev 5816)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java 2012-03-06 13:32:25 UTC (rev 5817)
@@ -282,6 +282,13 @@
LOG.warn("Not all JBoss Cache MBeans were unregistered.");
}
- PrivilegedJBossCacheHelper.stop(cache);
+ try
+ {
+ ExoJBossCacheFactory.releaseUniqueInstance(CacheType.INDEX_CACHE, cache);
+ }
+ catch (RepositoryConfigurationException e)
+ {
+ LOG.error("Can not release cache instance", e);
+ }
}
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java 2012-03-06 13:23:03 UTC (rev 5816)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java 2012-03-06 13:32:25 UTC (rev 5817)
@@ -30,12 +30,13 @@
import org.exoplatform.services.jcr.impl.core.query.QueryHandler;
import org.exoplatform.services.jcr.impl.core.query.SearchManager;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
+import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
-import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
import org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.jboss.cache.Cache;
+import org.jboss.cache.CacheException;
import org.jboss.cache.CacheSPI;
import org.jboss.cache.Fqn;
import org.jboss.cache.config.CacheLoaderConfig;
@@ -45,6 +46,8 @@
import java.io.IOException;
import java.io.Serializable;
import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import javax.jcr.RepositoryException;
@@ -176,19 +179,20 @@
cache.put(Fqn.fromRelativeElements(rootFqn, id), LISTWRAPPER, changes);
}
+
/**
- * @see java.lang.Object#finalize()
+ * {@inheritDoc}
*/
@Override
- protected void finalize() throws Throwable
+ public void close()
{
try
{
if (jmxManager != null)
{
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
+ SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Void>()
{
- public Void run()
+ public Void run() throws CacheException
{
jmxManager.unregisterAllMBeans();
return null;
@@ -196,9 +200,18 @@
});
}
}
- finally
+ catch (PrivilegedActionException e)
{
- super.finalize();
+ log.warn("Not all JBoss Cache MBeans were unregistered.");
}
+
+ try
+ {
+ ExoJBossCacheFactory.releaseUniqueInstance(CacheType.INDEX_CACHE, cache);
+ }
+ catch (RepositoryConfigurationException e)
+ {
+ log.error("Can not release cache instance", e);
+ }
}
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java 2012-03-06 13:23:03 UTC (rev 5816)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java 2012-03-06 13:32:25 UTC (rev 5817)
@@ -19,8 +19,11 @@
package org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache;
import org.exoplatform.commons.utils.SecurityHelper;
+import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
import org.exoplatform.services.jcr.datamodel.ItemData;
import org.exoplatform.services.jcr.impl.core.itemfilters.QPathEntryFilter;
+import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
+import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -741,7 +744,14 @@
*/
public void stop()
{
- PrivilegedJBossCacheHelper.stop(parentCache);
+ try
+ {
+ ExoJBossCacheFactory.releaseUniqueInstance(CacheType.JCR_CACHE, parentCache);
+ }
+ catch (RepositoryConfigurationException e)
+ {
+ LOG.error("Can not release cache instance", e);
+ }
}
public TransactionManager getTransactionManager()
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2012-03-06 13:23:03 UTC (rev 5816)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2012-03-06 13:32:25 UTC (rev 5817)
@@ -734,8 +734,10 @@
return null;
}
});
- }
+ }
+ cache.stop();
+
if (shareable)
{
// The cache cannot be stopped since it can be shared so we evict the root node instead
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/ExoJBossCacheFactory.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/ExoJBossCacheFactory.java 2012-03-06 13:23:03 UTC (rev 5816)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/ExoJBossCacheFactory.java 2012-03-06 13:32:25 UTC (rev 5817)
@@ -40,9 +40,11 @@
import java.io.IOException;
import java.io.InputStream;
+import java.io.Serializable;
import java.security.PrivilegedAction;
import java.util.HashMap;
import java.util.Map;
+import java.util.Map.Entry;
import javax.management.ObjectName;
import javax.transaction.TransactionManager;
@@ -88,8 +90,8 @@
* A Map that contains all the registered JBC instances, ordered by
* {@link ExoContainer} instances, {@link CacheType} and JBC Configuration.
*/
- private static Map<ExoContainer, Map<CacheType, Map<ConfigurationKey, Cache>>> CACHES =
- new HashMap<ExoContainer, Map<CacheType, Map<ConfigurationKey, Cache>>>();
+ private static Map<ExoContainer, Map<CacheType, Map<ConfigurationKey, CacheInstance>>> CACHES =
+ new HashMap<ExoContainer, Map<CacheType, Map<ConfigurationKey, CacheInstance>>>();
private final TemplateConfigurationHelper configurationHelper;
@@ -272,16 +274,16 @@
return cache;
}
ExoContainer container = ExoContainerContext.getCurrentContainer();
- Map<CacheType, Map<ConfigurationKey, Cache>> allCacheTypes = CACHES.get(container);
+ Map<CacheType, Map<ConfigurationKey, CacheInstance>> allCacheTypes = CACHES.get(container);
if (allCacheTypes == null)
{
- allCacheTypes = new HashMap<CacheType, Map<ConfigurationKey, Cache>>();
+ allCacheTypes = new HashMap<CacheType, Map<ConfigurationKey, CacheInstance>>();
CACHES.put(container, allCacheTypes);
}
- Map<ConfigurationKey, Cache> caches = allCacheTypes.get(cacheType);
+ Map<ConfigurationKey, CacheInstance> caches = allCacheTypes.get(cacheType);
if (caches == null)
{
- caches = new HashMap<ConfigurationKey, Cache>();
+ caches = new HashMap<ConfigurationKey, CacheInstance>();
allCacheTypes.put(cacheType, caches);
}
Configuration cfg = cache.getConfiguration();
@@ -294,13 +296,21 @@
{
throw new RepositoryConfigurationException("Cannot clone the configuration.", e);
}
+
if (caches.containsKey(key))
{
- cache = caches.get(key);
+ CacheInstance cacheInstance = caches.get(key);
+ cacheInstance.acquire();
+
+ cache = cacheInstance.cache;
}
else
{
- caches.put(key, cache);
+ CacheInstance cacheInstance = new CacheInstance(cache);
+ cacheInstance.acquire();
+
+ caches.put(key, cacheInstance);
+
if (LOG.isInfoEnabled())
{
LOG.info("A new JBoss Cache instance has been registered for the region " + rootFqn + ", a cache of type "
@@ -316,6 +326,29 @@
return cache;
}
+ public static synchronized <K, V> void releaseUniqueInstance(CacheType cacheType, Cache<K, V> cache)
+ throws RepositoryConfigurationException
+ {
+ ExoContainer container = ExoContainerContext.getCurrentContainer();
+ Map<CacheType, Map<ConfigurationKey, CacheInstance>> allCacheTypes = CACHES.get(container);
+ Map<ConfigurationKey, CacheInstance> caches = allCacheTypes.get(cacheType);
+
+ for (Entry<ConfigurationKey, CacheInstance> entry : caches.entrySet())
+ {
+ CacheInstance cacheInstance = entry.getValue();
+ if (cacheInstance.isSame(cache))
+ {
+ cacheInstance.release();
+
+ if (!cacheInstance.hasReferences())
+ {
+ caches.remove(entry.getKey());
+ PrivilegedJBossCacheHelper.stop((Cache<Serializable, Object>)cache);
+ }
+ }
+ }
+ }
+
/**
* Gives the {@link JmxRegistrationManager} instance corresponding to the given context
*/
@@ -422,4 +455,39 @@
return true;
}
}
+
+ /**
+ * This class is used to store the actual amount of times cache was used.
+ */
+ private static class CacheInstance
+ {
+ private final Cache cache;
+
+ private int references;
+
+ public CacheInstance(Cache cache)
+ {
+ this.cache = cache;
+ }
+
+ private void acquire()
+ {
+ references++;
+ }
+
+ private void release()
+ {
+ references--;
+ }
+
+ private boolean hasReferences()
+ {
+ return references > 0;
+ }
+
+ private boolean isSame(Cache cache)
+ {
+ return this.cache == cache;
+ }
+ }
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java 2012-03-06 13:23:03 UTC (rev 5816)
+++ jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java 2012-03-06 13:32:25 UTC (rev 5817)
@@ -29,6 +29,7 @@
import org.exoplatform.services.jcr.impl.core.query.QueryHandler;
import org.exoplatform.services.jcr.impl.core.query.SearchManager;
import org.exoplatform.services.jcr.infinispan.ISPNCacheFactory;
+import org.exoplatform.services.jcr.infinispan.PrivilegedISPNCacheHelper;
import org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -112,4 +113,12 @@
ChangesKey changesKey = new ChangesKey(wsId, IdGenerator.generate());
cache.getAdvancedCache().withFlags(Flag.SKIP_LOCKING).put(changesKey, changes);
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public void close()
+ {
+ PrivilegedISPNCacheHelper.stop(cache);
+ }
}
14 years, 1 month
exo-jcr SVN: r5816 - jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/util.
by do-not-reply@jboss.org
Author: areshetnyak
Date: 2012-03-06 08:23:03 -0500 (Tue, 06 Mar 2012)
New Revision: 5816
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java
Log:
EXOJCR-1758 : The problem with eviction and stoping cache on repository stop was fixed.
Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java 2012-03-06 13:13:36 UTC (rev 5815)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java 2012-03-06 13:23:03 UTC (rev 5816)
@@ -297,7 +297,7 @@
ArrayList cacheParams = new ArrayList();
cacheParams.add(new SimpleParameterEntry("jbosscache-configuration",
"conf/standalone/test-jbosscache-config.xml"));
- cacheParams.add(new SimpleParameterEntry("jbosscache-shareable", "true"));
+ cacheParams.add(new SimpleParameterEntry("jbosscache-shareable", Boolean.toString(cacheShared)));
cacheEntry = new CacheEntry(cacheParams);
cacheEntry
.setType("org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache");
14 years, 1 month
exo-jcr SVN: r5815 - in jcr/branches/1.15.x: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache and 8 other directories.
by do-not-reply@jboss.org
Author: areshetnyak
Date: 2012-03-06 08:13:36 -0500 (Tue, 06 Mar 2012)
New Revision: 5815
Modified:
jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java
jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/ISPNIndexChangesFilter.java
jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java
jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/TestRepositoryCheckController.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestRepositoryManagement.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceManagement.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceRestore.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java
Log:
EXOJCR-1758 : The problem with eviction and stoping cache on repository stop was fixed.
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -33,8 +33,8 @@
import org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager;
import org.exoplatform.services.jcr.impl.storage.jdbc.DBConstants;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
+import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
-import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.exoplatform.services.naming.InitialContextInitializer;
@@ -509,7 +509,9 @@
if (shareable)
{
// The cache cannot be stopped since it can be shared so we evict the root node instead
- cache.evict(lockRoot);
+ cache.getNode(lockRoot).setResident(false);
+ cache.evict(lockRoot, true);
+ cache.getRegion(lockRoot, false).processEvictionQueues();
}
else
{
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -32,8 +32,8 @@
import org.exoplatform.services.jcr.impl.core.query.lucene.IndexInfos;
import org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
+import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
-import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -281,5 +281,7 @@
{
LOG.warn("Not all JBoss Cache MBeans were unregistered.");
}
+
+ PrivilegedJBossCacheHelper.stop(cache);
}
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -21,6 +21,7 @@
import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.jcr.datamodel.ItemData;
import org.exoplatform.services.jcr.impl.core.itemfilters.QPathEntryFilter;
+import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.jboss.cache.Cache;
@@ -724,15 +725,7 @@
*/
public void start() throws CacheException
{
- PrivilegedAction<Object> action = new PrivilegedAction<Object>()
- {
- public Object run()
- {
- parentCache.start();
- return null;
- }
- };
- SecurityHelper.doPrivilegedAction(action);
+ PrivilegedJBossCacheHelper.start(parentCache);
}
/* (non-Javadoc)
@@ -748,15 +741,7 @@
*/
public void stop()
{
- PrivilegedAction<Object> action = new PrivilegedAction<Object>()
- {
- public Object run()
- {
- parentCache.stop();
- return null;
- }
- };
- SecurityHelper.doPrivilegedAction(action);
+ PrivilegedJBossCacheHelper.stop(parentCache);
}
public TransactionManager getTransactionManager()
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -51,6 +51,7 @@
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
+import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -60,8 +61,8 @@
import org.jboss.cache.CacheStatus;
import org.jboss.cache.Fqn;
import org.jboss.cache.Node;
+import org.jboss.cache.config.EvictionRegionConfig;
import org.jboss.cache.config.Configuration.CacheMode;
-import org.jboss.cache.config.EvictionRegionConfig;
import org.jboss.cache.eviction.ExpirationAlgorithmConfig;
import org.jboss.cache.jmx.JmxRegistrationManager;
import org.picocontainer.Startable;
@@ -124,6 +125,8 @@
private final boolean enabled;
+ private final boolean shareable;
+
public static final String JBOSSCACHE_CONFIG = "jbosscache-configuration";
public static final String JBOSSCACHE_EXPIRATION = "jbosscache-expiration-time";
@@ -568,6 +571,9 @@
enabled = wsConfig.getCache().isEnabled();
+ shareable =
+ wsConfig.getCache().getParameterBoolean(JBOSSCACHE_SHAREABLE, JBOSSCACHE_SHAREABLE_DEFAULT).booleanValue();
+
// create cache using custom factory
ExoJBossCacheFactory<Serializable, Object> factory;
@@ -729,6 +735,51 @@
}
});
}
+
+ if (shareable)
+ {
+ // The cache cannot be stopped since it can be shared so we evict the root node instead
+ cache.getNode(itemsRoot).setResident(false);
+ cache.evict(itemsRoot, true);
+ cache.getRegion(itemsRoot, false).processEvictionQueues();
+
+ cache.getNode(refRoot).setResident(false);;
+ cache.evict(refRoot, true);
+ cache.getRegion(refRoot, false).processEvictionQueues();
+
+ cache.getNode(childNodes).setResident(false);;
+ cache.evict(childNodes, true);
+ cache.getRegion(childNodes, false).processEvictionQueues();
+
+ cache.getNode(childProps).setResident(false);;
+ cache.evict(childProps, true);
+ cache.getRegion(childProps, false).processEvictionQueues();
+
+ cache.getNode(childNodesList).setResident(false);
+ cache.evict(childNodesList, true);
+ cache.getRegion(childNodesList, false).processEvictionQueues();
+
+ cache.getNode(childPropsList).setResident(false);
+ cache.evict(childPropsList, true);
+ cache.getRegion(childPropsList, false).processEvictionQueues();
+
+ cache.getNode(childNodesByPageList).setResident(false);
+ cache.evict(childNodesByPageList, true);
+ cache.getRegion(childNodesByPageList, false).processEvictionQueues();
+
+ cache.getNode(childNodesByPatternList).setResident(false);
+ cache.evict(childNodesByPatternList, true);
+ cache.getRegion(childNodesByPatternList, false).processEvictionQueues();
+
+ cache.getNode(childPropsByPatternList).setResident(false);
+ cache.evict(childPropsByPatternList, true);
+ cache.getRegion(childPropsByPatternList, false).processEvictionQueues();
+
+ }
+ else
+ {
+ PrivilegedJBossCacheHelper.stop(cache);
+ }
}
/**
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -142,7 +142,7 @@
String loginConf = BaseStandaloneTest.class.getResource("/login.conf").toString();
- container = StandaloneContainer.getInstance();
+ container = StandaloneContainer.getInstance();
if (System.getProperty("java.security.auth.login.config") == null)
{
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/TestRepositoryCheckController.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/TestRepositoryCheckController.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/TestRepositoryCheckController.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -128,34 +128,54 @@
private void checkConsistentLocksInDataBase(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- lockNode(node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ Node node = addTestNode(repository);
+ lockNode(node);
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- removePropertyInDB(repository, (PropertyImpl)node.getProperty("jcr:lockIsDeep"));
- removePropertyInDB(repository, (PropertyImpl)node.getProperty("jcr:lockOwner"));
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ removePropertyInDB(repository, (PropertyImpl)node.getProperty("jcr:lockIsDeep"));
+ removePropertyInDB(repository, (PropertyImpl)node.getProperty("jcr:lockOwner"));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
private void checkInconsistentLocksInLockTable(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- lockNode(node);
+ Node node = addTestNode(repository);
+ lockNode(node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- clearLockTable(repository);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ clearLockTable(repository);
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
public void testCheckValueStorage() throws Exception
@@ -187,14 +207,25 @@
*/
public void testIndexUsecaseWrongDocumentId() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, SINGLE_DB, CACHE_DISABLED);
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
-
- Node node = addTestNode(repository);
- assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, SINGLE_DB, CACHE_DISABLED);
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- removeNodeInDB(repository, node);
- assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ Node node = addTestNode(repository);
+ assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+
+ removeNodeInDB(repository, node);
+ assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -202,14 +233,25 @@
*/
public void testIndexUsecaseMultipleDocuments() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, SINGLE_DB, CACHE_DISABLED);
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, SINGLE_DB, CACHE_DISABLED);
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ Node node = addTestNode(repository);
+ assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- indexNode(repository, node, ItemState.ADDED);
- assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ indexNode(repository, node, ItemState.ADDED);
+ assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -217,14 +259,25 @@
*/
public void testIndexUsecaseDocumentNotExists() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, SINGLE_DB, CACHE_DISABLED);
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, SINGLE_DB, CACHE_DISABLED);
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ Node node = addTestNode(repository);
+ assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- indexNode(repository, node, ItemState.DELETED);
- assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ indexNode(repository, node, ItemState.DELETED);
+ assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -241,33 +294,52 @@
private void checkDBUsecasesTheParentIdIsIdOfThisNode(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ Node node = addTestNode(repository);
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- assingItsOwnParent(repository, (ItemImpl)node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ assingItsOwnParent(repository, (ItemImpl)node);
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
-
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
private void checkDBUsecasesTheParentIdIsIdOfThisNode2(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- Property prop = addTestProperty(repository, node);
+ Node node = addTestNode(repository);
+ Property prop = addTestProperty(repository, node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- assingItsOwnParent(repository, (ItemImpl)prop);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ assingItsOwnParent(repository, (ItemImpl)prop);
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -281,18 +353,28 @@
private void checkSeveralVersionsOfSameItem(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
+ Node node = addTestNode(repository);
+ PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- insertPropertyRecord(repository, prop.getInternalIdentifier(), prop.getParentIdentifier(), prop.getName());
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ insertPropertyRecord(repository, prop.getInternalIdentifier(), prop.getParentIdentifier(), prop.getName());
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -306,14 +388,24 @@
private void checkDBUsecasesPropertyWithoutParent(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- insertPropertyRecord(repository, IdGenerator.generate(), IdGenerator.generate(), "testName");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ insertPropertyRecord(repository, IdGenerator.generate(), IdGenerator.generate(), "testName");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -327,18 +419,28 @@
private void checkDBUsecasesIncorrectValueRecords(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
+ Node node = addTestNode(repository);
+ PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- updateValueRecord(repository, prop.getInternalIdentifier());
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ updateValueRecord(repository, prop.getInternalIdentifier());
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -352,18 +454,28 @@
private void checkDBUsecasesValueRecordHasNoItemRecord(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
+ Node node = addTestNode(repository);
+ PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- removeItemRecord(repository, prop.getInternalIdentifier());
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ removeItemRecord(repository, prop.getInternalIdentifier());
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -380,30 +492,50 @@
private void checkDBUsecasesPropertiesHasNoSingleValueRecord(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
+ Node node = addTestNode(repository);
+ PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- removeValueRecord(repository, prop.getInternalIdentifier());
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ removeValueRecord(repository, prop.getInternalIdentifier());
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
private void checkDBUsecasesPropertiesHasEmptyMultiValueRecord(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- node.setProperty("prop", new String[]{});
- node.save();
+ Node node = addTestNode(repository);
+ node.setProperty("prop", new String[]{});
+ node.save();
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -420,20 +552,30 @@
private void checkDBUsecasesReferencePropertyWithoutReferenceRecord(ManageableRepository repository)
throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- Node node2 = addTestNode(repository);
- PropertyImpl prop = (PropertyImpl)node2.setProperty("prop", node);
- node2.save();
+ Node node = addTestNode(repository);
+ Node node2 = addTestNode(repository);
+ PropertyImpl prop = (PropertyImpl)node2.setProperty("prop", node);
+ node2.save();
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- removeReferenceRecord(repository, prop.getInternalIdentifier());
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ removeReferenceRecord(repository, prop.getInternalIdentifier());
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -447,16 +589,26 @@
private void checkDBUsecasesNodeHasNotPrimaryTypeProperties(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ Node node = addTestNode(repository);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- removePropertyInDB(repository, (PropertyImpl)node.getProperty("jcr:primaryType"));
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ removePropertyInDB(repository, (PropertyImpl)node.getProperty("jcr:primaryType"));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -470,20 +622,30 @@
private void checkValueStorageUsecases(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- PropertyImpl prop = (PropertyImpl)node.setProperty("prop", new FileInputStream(createBLOBTempFile(300)));
- node.save();
+ Node node = addTestNode(repository);
+ PropertyImpl prop = (PropertyImpl)node.setProperty("prop", new FileInputStream(createBLOBTempFile(300)));
+ node.save();
- assertTrue(checkController.checkValueStorage().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkValueStorage().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- removeFileFromVS(repository, prop.getInternalIdentifier());
- assertTrue(checkController.checkValueStorage()
- .startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ removeFileFromVS(repository, prop.getInternalIdentifier());
+ assertTrue(checkController.checkValueStorage().startsWith(
+ RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairValueStorage("yes");
- assertTrue(checkController.checkValueStorage().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairValueStorage("yes");
+ assertTrue(checkController.checkValueStorage().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
private Node addTestNode(ManageableRepository repository) throws LoginException, NoSuchWorkspaceException,
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestRepositoryManagement.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestRepositoryManagement.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestRepositoryManagement.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -22,9 +22,12 @@
import org.exoplatform.container.xml.PropertiesParam;
import org.exoplatform.services.jcr.JcrImplBaseTest;
import org.exoplatform.services.jcr.RepositoryService;
+import org.exoplatform.services.jcr.config.CacheEntry;
import org.exoplatform.services.jcr.config.RepositoryEntry;
import org.exoplatform.services.jcr.config.RepositoryServiceConfiguration;
+import org.exoplatform.services.jcr.config.SimpleParameterEntry;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
+import org.exoplatform.services.jcr.core.CredentialsImpl;
import org.exoplatform.services.jcr.core.ManageableRepository;
import org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister;
import org.exoplatform.services.jcr.util.TesterConfigurationHelper;
@@ -36,8 +39,12 @@
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
+import java.util.List;
import java.util.concurrent.CountDownLatch;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.Session;
+
/**
* @author <a href="mailto:Sergey.Kabashnyuk@gmail.com">Sergey Kabashnyuk</a>
* @version $Id: TestRepositoryManagement.java 11907 2008-03-13 15:36:21Z ksm $
@@ -57,6 +64,7 @@
private final TesterConfigurationHelper helper;
+
public TestRepositoryManagement()
{
super();
@@ -65,119 +73,231 @@
public void testAddNewRepository() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, false, null);
- assertNotNull(repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName()).getRootNode());
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, false, null);
+
+ Session session = null;
+ try
+ {
+ session = repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName());
+ assertNotNull(session.getRootNode());
+ }
+ finally
+ {
+ if (session != null)
+ {
+ session.logout();
+ }
+ }
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
public void testMarshalUnmarshalRepositoryConfiguration() throws Exception
{
- ManageableRepository newRepository = helper.createRepository(container, false, null);
- // 1st marshal configuration
- File tempFile = PrivilegedFileHelper.createTempFile("test-config", "xml");
- PrivilegedFileHelper.deleteOnExit(tempFile);
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, false, null);
- IBindingFactory factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
- IMarshallingContext mctx = factory.createMarshallingContext();
+ final long lockManagerTimeOut =
+ repository.getConfiguration().getWorkspaceEntries().get(0).getLockManager().getParameterLong("time-out");
- FileOutputStream saveStream = new FileOutputStream(tempFile);
- ArrayList<RepositoryEntry> repositoryEntries = new ArrayList<RepositoryEntry>();
- repositoryEntries.add(newRepository.getConfiguration());
+ // 1st marshal configuration
+ File tempFile = PrivilegedFileHelper.createTempFile("test-config", "xml");
+ PrivilegedFileHelper.deleteOnExit(tempFile);
- RepositoryServiceConfiguration newRepositoryServiceConfiguration =
- new RepositoryServiceConfiguration(repositoryService.getConfig().getDefaultRepositoryName(), repositoryEntries);
- mctx.marshalDocument(newRepositoryServiceConfiguration, "ISO-8859-1", null, saveStream);
- saveStream.close();
+ IBindingFactory factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
+ IMarshallingContext mctx = factory.createMarshallingContext();
- // 1st unmarshal
- factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
- IUnmarshallingContext uctx = factory.createUnmarshallingContext();
- RepositoryServiceConfiguration conf =
- (RepositoryServiceConfiguration)uctx.unmarshalDocument(PrivilegedFileHelper.fileInputStream(tempFile), null);
+ FileOutputStream saveStream = new FileOutputStream(tempFile);
+ ArrayList<RepositoryEntry> repositoryEntries = new ArrayList<RepositoryEntry>();
+ repositoryEntries.add(repository.getConfiguration());
- // 1st check
- RepositoryEntry unmarshledRepositoryEntry =
- conf.getRepositoryConfiguration(newRepository.getConfiguration().getName());
+ RepositoryServiceConfiguration newRepositoryServiceConfiguration =
+ new RepositoryServiceConfiguration(repositoryService.getConfig().getDefaultRepositoryName(),
+ repositoryEntries);
+ mctx.marshalDocument(newRepositoryServiceConfiguration, "ISO-8859-1", null, saveStream);
+ saveStream.close();
-
- // 2nd marshal configuration
- tempFile = PrivilegedFileHelper.createTempFile("test-config", "xml");
- PrivilegedFileHelper.deleteOnExit(tempFile);
+ // 1st unmarshal
+ factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
+ IUnmarshallingContext uctx = factory.createUnmarshallingContext();
+ RepositoryServiceConfiguration conf =
+ (RepositoryServiceConfiguration)uctx
+ .unmarshalDocument(PrivilegedFileHelper.fileInputStream(tempFile), null);
- factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
- mctx = factory.createMarshallingContext();
- saveStream = new FileOutputStream(tempFile);
- repositoryEntries = new ArrayList<RepositoryEntry>();
- repositoryEntries.add(newRepository.getConfiguration());
+ // 1st check
+ RepositoryEntry unmarshledRepositoryEntry =
+ conf.getRepositoryConfiguration(repository.getConfiguration().getName());
+ assertEquals(lockManagerTimeOut, unmarshledRepositoryEntry.getWorkspaceEntries().get(0).getLockManager()
+ .getParameterLong("time-out").longValue());
- newRepositoryServiceConfiguration =
- new RepositoryServiceConfiguration(repositoryService.getConfig().getDefaultRepositoryName(), repositoryEntries);
- mctx.marshalDocument(newRepositoryServiceConfiguration, "ISO-8859-1", null, saveStream);
- saveStream.close();
-
- // 2nd unmarshal
- factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
- uctx = factory.createUnmarshallingContext();
- conf = (RepositoryServiceConfiguration)uctx.unmarshalDocument(PrivilegedFileHelper.fileInputStream(tempFile), null);
+ // 2nd marshal configuration
+ tempFile = PrivilegedFileHelper.createTempFile("test-config", "xml");
+ PrivilegedFileHelper.deleteOnExit(tempFile);
- // 2nd check
- unmarshledRepositoryEntry =
- conf.getRepositoryConfiguration(newRepository.getConfiguration().getName());
+ factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
+ mctx = factory.createMarshallingContext();
+ saveStream = new FileOutputStream(tempFile);
+ repositoryEntries = new ArrayList<RepositoryEntry>();
+ repositoryEntries.add(repository.getConfiguration());
+
+ newRepositoryServiceConfiguration =
+ new RepositoryServiceConfiguration(repositoryService.getConfig().getDefaultRepositoryName(),
+ repositoryEntries);
+ mctx.marshalDocument(newRepositoryServiceConfiguration, "ISO-8859-1", null, saveStream);
+ saveStream.close();
+
+ // 2nd unmarshal
+ factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
+ uctx = factory.createUnmarshallingContext();
+ conf =
+ (RepositoryServiceConfiguration)uctx
+ .unmarshalDocument(PrivilegedFileHelper.fileInputStream(tempFile), null);
+
+ // 2nd check
+ unmarshledRepositoryEntry = conf.getRepositoryConfiguration(repository.getConfiguration().getName());
+ assertEquals(lockManagerTimeOut, unmarshledRepositoryEntry.getWorkspaceEntries().get(0).getLockManager()
+ .getParameterLong("time-out").longValue());
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
public void testAddNewRepositoryWithSameName() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, false, null);
-
+ ManageableRepository repository = null;
try
{
- RepositoryEntry rEntry = helper.createRepositoryEntry(false, null, null, true);
- rEntry.setName(repository.getConfiguration().getName());
+ repository = helper.createRepository(container, false, null);
- helper.createRepository(container, rEntry);
- fail();
+ try
+ {
+ RepositoryEntry rEntry = helper.createRepositoryEntry(false, null, null, true);
+ rEntry.setName(repository.getConfiguration().getName());
+
+ helper.createRepository(container, rEntry);
+ fail();
+ }
+ catch (Exception e)
+ {
+ // ok
+ }
}
- catch (Exception e)
+ finally
{
- // ok
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testCanRemove() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, false, null);
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, false, null);
- RepositoryService service = (RepositoryService)container.getComponentInstanceOfType(RepositoryService.class);
+ RepositoryService service = (RepositoryService)container.getComponentInstanceOfType(RepositoryService.class);
- SessionImpl session =
- (SessionImpl)repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName());
+ SessionImpl session =
+ (SessionImpl)repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName());
- assertFalse(service.canRemoveRepository(repository.getConfiguration().getName()));
- session.logout();
- assertTrue(service.canRemoveRepository(repository.getConfiguration().getName()));
+ assertFalse(service.canRemoveRepository(repository.getConfiguration().getName()));
+ session.logout();
+ assertTrue(service.canRemoveRepository(repository.getConfiguration().getName()));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
public void testInitNameSpaces() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, false, null);
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, false, null);
- SessionImpl session =
- (SessionImpl)repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName());
+ SessionImpl session = null;
+ try
+ {
+ session =
+ (SessionImpl)repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName());
- assertEquals("http://www.apache.org/jackrabbit/test", session.getNamespaceURI("test"));
- assertEquals("http://www.exoplatform.org/jcr/test/1.0", session.getNamespaceURI("exojcrtest"));
+ assertEquals("http://www.apache.org/jackrabbit/test", session.getNamespaceURI("test"));
+ assertEquals("http://www.exoplatform.org/jcr/test/1.0", session.getNamespaceURI("exojcrtest"));
+ }
+ finally
+ {
+ if (session != null)
+ {
+ session.logout();
+ }
+ }
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
public void testInitNodeTypes() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, false, null);
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, false, null);
- SessionImpl session =
- (SessionImpl)repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName());
+ SessionImpl session = null;
+ try
+ {
+ session =
+ (SessionImpl)repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName());
- // check if nt:folder nodetype exists
- session.getRootNode().addNode("folder", "nt:folder");
- session.save();
+ // check if nt:folder nodetype exists
+ session.getRootNode().addNode("folder", "nt:folder");
+ session.save();
+ }
+ finally
+ {
+ if (session != null)
+ {
+ session.logout();
+ }
+ }
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
public void testRemove() throws Exception
@@ -202,57 +322,82 @@
int theadsCount = 10;
RepositoryCreationThread[] threads = new RepositoryCreationThread[theadsCount];
- CountDownLatch latcher = new CountDownLatch(1);
- for (int i = 0; i < theadsCount; i++)
+ try
{
- threads[i] = new RepositoryCreationThread(latcher);
- threads[i].start();
- }
+ CountDownLatch latcher = new CountDownLatch(1);
- latcher.countDown();
+ for (int i = 0; i < theadsCount; i++)
+ {
+ threads[i] = new RepositoryCreationThread(latcher);
+ threads[i].start();
+ }
- for (int i = 0; i < theadsCount; i++)
- {
- threads[i].join();
- }
+ latcher.countDown();
- PropertiesParam props = new PropertiesParam();
- props.setProperty("dialect", "auto");
- props.setProperty("source-name", "jdbcjcr");
+ for (int i = 0; i < theadsCount; i++)
+ {
+ threads[i].join();
+ }
- JDBCConfigurationPersister persiter = new JDBCConfigurationPersister();
- persiter.init(props);
+ PropertiesParam props = new PropertiesParam();
+ props.setProperty("dialect", "auto");
+ props.setProperty("source-name", "jdbcjcr");
- IBindingFactory factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
- IUnmarshallingContext uctx = factory.createUnmarshallingContext();
- RepositoryServiceConfiguration storedConf =
- (RepositoryServiceConfiguration)uctx.unmarshalDocument(persiter.read(), null);
+ JDBCConfigurationPersister persiter = new JDBCConfigurationPersister();
+ persiter.init(props);
- for (int i = 0; i < theadsCount; i++)
- {
- // test if respository has been created
- ManageableRepository repository = threads[i].getRepository();
- assertNotNull(repository);
+ IBindingFactory factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
+ IUnmarshallingContext uctx = factory.createUnmarshallingContext();
+ RepositoryServiceConfiguration storedConf =
+ (RepositoryServiceConfiguration)uctx.unmarshalDocument(persiter.read(), null);
- // check configuration in persiter
- storedConf.getRepositoryConfiguration(repository.getConfiguration().getName());
-
- // check configuration in RepositoryServic
- assertNotNull(repositoryService.getConfig().getRepositoryConfiguration(repository.getConfiguration().getName()));
-
- // login into newly created repository
- ManageableRepository newRepository = repositoryService.getRepository(repository.getConfiguration().getName());
- assertNotNull(repository.login(credentials, newRepository.getConfiguration().getSystemWorkspaceName())
- .getRootNode());
+ for (int i = 0; i < theadsCount; i++)
+ {
+ // test if respository has been created
+ ManageableRepository repository = threads[i].getRepository();
+ assertNotNull(repository);
+
+ // check configuration in persiter
+ storedConf.getRepositoryConfiguration(repository.getConfiguration().getName());
+
+ // check configuration in RepositoryServic
+ assertNotNull(repositoryService.getConfig().getRepositoryConfiguration(
+ repository.getConfiguration().getName()));
+
+ // login into newly created repository
+ ManageableRepository newRepository =
+ repositoryService.getRepository(repository.getConfiguration().getName());
+
+ Session session = null;
+ try
+ {
+ session = repository.login(credentials, newRepository.getConfiguration().getSystemWorkspaceName());
+ assertNotNull(session.getRootNode());
+ }
+ finally
+ {
+ if (session != null)
+ {
+ session.logout();
+ }
+ }
+ }
}
+ finally
+ {
+ for (int i = 0; i < theadsCount; i++)
+ {
+ helper.removeRepository(container, threads[i].getRepository().getConfiguration().getName());
+ }
+ }
}
private class RepositoryCreationThread extends Thread
{
private CountDownLatch latcher;
- private ManageableRepository repository;
+ private ManageableRepository tRrepository;
RepositoryCreationThread(CountDownLatch latcher)
{
@@ -260,14 +405,15 @@
}
/**
- * {@inheritDoc}
- */
+ * {@inheritDoc}
+ */
+
public void run()
{
try
{
latcher.await();
- repository = helper.createRepository(container, false, null);
+ tRrepository = helper.createRepository(container, false, null);
}
catch (Exception e)
{
@@ -277,7 +423,134 @@
public ManageableRepository getRepository()
{
- return repository;
+ return tRrepository;
}
}
+
+ public void testCreateAterRemoveCheckOldContent() throws Exception
+ {
+ ManageableRepository newRepository = null;
+ try
+ {
+ RepositoryService service = (RepositoryService)container.getComponentInstanceOfType(RepositoryService.class);
+ RepositoryEntry repoEntry = helper.createRepositoryEntry(false, null, null, true);
+
+ try
+ {
+ Class
+ .forName("org.exoplatform.services.jcr.impl.dataflow.persistent.infinispan.ISPNCacheWorkspaceStorageCache");
+
+ ArrayList cacheParams = new ArrayList();
+ cacheParams.add(new SimpleParameterEntry("infinispan-configuration",
+ "conf/standalone/test-infinispan-config.xml"));
+ CacheEntry cacheEntry = new CacheEntry(cacheParams);
+ cacheEntry
+ .setType("org.exoplatform.services.jcr.impl.dataflow.persistent.infinispan.ISPNCacheWorkspaceStorageCache");
+ cacheEntry.setEnabled(true);
+
+ ArrayList<WorkspaceEntry> wsList = repoEntry.getWorkspaceEntries();
+
+ wsList.get(0).setCache(cacheEntry);
+ repoEntry.setWorkspaceEntries(wsList);
+ }
+ catch (ClassNotFoundException e)
+ {
+ }
+
+ service.createRepository(repoEntry);
+ service.getConfig().retain();
+
+ ManageableRepository repository = service.getRepository(repoEntry.getName());
+
+ // add content
+ Session session =
+ repository.login(new CredentialsImpl("admin", "admin".toCharArray()), repository.getConfiguration()
+ .getSystemWorkspaceName());
+ session.getRootNode().addNode("test");
+ session.save();
+ session.logout();
+
+ // copy repository configuration
+ RepositoryEntry repositoryEntry = helper.copyRepositoryEntry(repository.getConfiguration());
+
+ String newDatasourceName = helper.createDatasource();
+
+ for (WorkspaceEntry ws : repositoryEntry.getWorkspaceEntries())
+ {
+ List<SimpleParameterEntry> parameters = ws.getContainer().getParameters();
+ for (int i = 0; i <= parameters.size(); i++)
+ {
+ SimpleParameterEntry spe = parameters.get(i);
+ if (spe.getName().equals("source-name"))
+ {
+ parameters.add(i, new SimpleParameterEntry(spe.getName(), newDatasourceName));
+ break;
+ }
+ }
+ ws.getContainer().setParameters(parameters);
+
+ parameters = ws.getLockManager().getParameters();
+ for (int i = 0; i <= parameters.size(); i++)
+ {
+ SimpleParameterEntry spe = parameters.get(i);
+ if (spe.getName().equals("jbosscache-cl-cache.jdbc.datasource")
+ || spe.getName().equals("infinispan-cl-cache.jdbc.datasource"))
+ {
+ parameters.add(i, new SimpleParameterEntry(spe.getName(), newDatasourceName));
+ break;
+ }
+ }
+ ws.getLockManager().setParameters(parameters);
+ }
+
+ service.removeRepository(repository.getConfiguration().getName());
+
+ try
+ {
+ service.getRepository(repository.getConfiguration().getName());
+ fail();
+ }
+ catch (Exception e)
+ {
+ }
+
+ // create new repository
+ service.createRepository(repositoryEntry);
+ service.getConfig().retain();
+
+ newRepository = service.getRepository(repositoryEntry.getName());
+
+ Session newSession = null;
+ try
+ {
+ newSession =
+ newRepository.login(new CredentialsImpl("admin", "admin".toCharArray()), newRepository
+ .getConfiguration().getSystemWorkspaceName());
+
+ try
+ {
+ newSession.getRootNode().getNode("test");
+ fail("Node 'test' should not exists after remove repository and recreate new.");
+ }
+ catch (PathNotFoundException e)
+ {
+ //ok
+ }
+ }
+ finally
+ {
+ if (newSession != null)
+ {
+ newSession.logout();
+ }
+ }
+ }
+ finally
+ {
+ if (newRepository != null)
+ {
+ helper.removeRepository(container, newRepository.getConfiguration().getName());
+ }
+ }
+ }
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceManagement.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceManagement.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceManagement.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -52,146 +52,239 @@
// single db test only
public void testAddWorkspaceWithNewDS() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, false, null);
-
+ ManageableRepository repository = null;
try
{
- WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, "not-existed-ds");
- helper.addWorkspace(repository, wsEntry);
- fail();
+ repository = helper.createRepository(container, false, null);
+
+ try
+ {
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, "not-existed-ds");
+ helper.addWorkspace(repository, wsEntry);
+ fail();
+ }
+ catch (Exception e)
+ {
+ // ok;
+ }
}
- catch (Exception e)
+ finally
{
- // ok;
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testAddWorkspaceWithExistingName() throws RepositoryConfigurationException, Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, false, dsName);
-
+ ManageableRepository repository = null;
try
{
- WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
- wsEntry.setName(repository.getConfiguration().getSystemWorkspaceName());
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, false, dsName);
- helper.addWorkspace(repository, wsEntry);
- fail();
+ try
+ {
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
+ wsEntry.setName(repository.getConfiguration().getSystemWorkspaceName());
+
+ helper.addWorkspace(repository, wsEntry);
+ fail();
+ }
+ catch (RepositoryConfigurationException e)
+ {
+ // ok;
+ }
}
- catch (RepositoryConfigurationException e)
+ finally
{
- // ok;
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testAddWorkspaceWithIvalidVs() throws RepositoryConfigurationException, Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, false, dsName);
-
+ ManageableRepository repository = null;
try
{
- WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, false, dsName);
- ValueStorageEntry valueStorageEntry = wsEntry.getContainer().getValueStorages().get(0);
-
- ArrayList<SimpleParameterEntry> spe = new ArrayList<SimpleParameterEntry>();
- spe.add(new SimpleParameterEntry("path", "/unknown/path"));
- valueStorageEntry.setParameters(spe);
+ try
+ {
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
- wsEntry.getContainer().getValueStorages().set(0, valueStorageEntry);
+ ValueStorageEntry valueStorageEntry = wsEntry.getContainer().getValueStorages().get(0);
- helper.addWorkspace(repository, wsEntry);
+ ArrayList<SimpleParameterEntry> spe = new ArrayList<SimpleParameterEntry>();
+ spe.add(new SimpleParameterEntry("path", "/unknown/path"));
+ valueStorageEntry.setParameters(spe);
+
+ wsEntry.getContainer().getValueStorages().set(0, valueStorageEntry);
+
+ helper.addWorkspace(repository, wsEntry);
+ }
+ catch (RepositoryConfigurationException e)
+ {
+ // ok;
+ }
}
- catch (RepositoryConfigurationException e)
+ finally
{
- // ok;
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testCreateWsNoConfig() throws RepositoryConfigurationException, Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, false, dsName);
-
+ ManageableRepository repository = null;
try
{
- WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
- wsEntry.setContainer(new ContainerEntry(
- "org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer", new ArrayList()));
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, false, dsName);
- helper.addWorkspace(repository, wsEntry);
- fail();
+ try
+ {
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
+ wsEntry.setContainer(new ContainerEntry(
+ "org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer", new ArrayList()));
+
+ helper.addWorkspace(repository, wsEntry);
+ fail();
+ }
+ catch (Exception e)
+ {
+ // ok;
+ }
}
- catch (Exception e)
+ finally
{
- // ok;
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testInitNewWS() throws RepositoryConfigurationException, Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, false, dsName);
-
+ ManageableRepository repository = null;
try
{
- WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
- helper.addWorkspace(repository, wsEntry);
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, false, dsName);
- SessionImpl session = (SessionImpl)repository.login(credentials, wsEntry.getName());
- assertNotNull(session.getRootNode());
+ SessionImpl session = null;
+ try
+ {
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
+ helper.addWorkspace(repository, wsEntry);
+
+ session = (SessionImpl)repository.login(credentials, wsEntry.getName());
+ assertNotNull(session.getRootNode());
+ }
+ catch (RepositoryException e)
+ {
+ e.printStackTrace();
+ fail();
+ }
+ finally
+ {
+ session.logout();
+ }
}
- catch (RepositoryException e)
+ finally
{
- e.printStackTrace();
- fail();
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testMixMultiAndSingleDbWs() throws RepositoryConfigurationException, Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, false, dsName);
-
+ ManageableRepository repository = null;
try
{
- WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, dsName);
- helper.addWorkspace(repository, wsEntry);
- fail();
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, false, dsName);
+
+ try
+ {
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, dsName);
+ helper.addWorkspace(repository, wsEntry);
+ fail();
+ }
+ catch (Exception e)
+ {
+ // ok;
+ }
}
- catch (Exception e)
+ finally
{
- // ok;
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testRemoveSystemWorkspace() throws Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, false, dsName);
-
+ ManageableRepository repository = null;
try
{
- repository.removeWorkspace(repository.getConfiguration().getSystemWorkspaceName());
- fail();
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, false, dsName);
+
+ try
+ {
+ repository.removeWorkspace(repository.getConfiguration().getSystemWorkspaceName());
+ fail();
+ }
+ catch (RepositoryException e)
+ {
+ }
}
- catch (RepositoryException e)
+ finally
{
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testRemoveWorkspace() throws Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, false, dsName);
- WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
+ ManageableRepository repository = null;
+ try
+ {
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, false, dsName);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
- helper.addWorkspace(repository, wsEntry);
- assertEquals(2, repository.getWorkspaceNames().length);
+ helper.addWorkspace(repository, wsEntry);
+ assertEquals(2, repository.getWorkspaceNames().length);
- repository.removeWorkspace(wsEntry.getName());
- assertEquals(1, repository.getWorkspaceNames().length);
+ repository.removeWorkspace(wsEntry.getName());
+ assertEquals(1, repository.getWorkspaceNames().length);
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceRestore.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceRestore.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceRestore.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -62,52 +62,74 @@
public void testRestore() throws RepositoryConfigurationException, Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, isDefaultWsMultiDb, dsName);
+ ManageableRepository repository = null;
+ try
+ {
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, isDefaultWsMultiDb, dsName);
- WorkspaceEntry workspaceEntry =
- helper.createWorkspaceEntry(isDefaultWsMultiDb, isDefaultWsMultiDb ? helper.createDatasource() : dsName);
- helper.addWorkspace(repository, workspaceEntry);
+ WorkspaceEntry workspaceEntry =
+ helper.createWorkspaceEntry(isDefaultWsMultiDb, isDefaultWsMultiDb ? helper.createDatasource() : dsName);
+ helper.addWorkspace(repository, workspaceEntry);
- InputStream is = TestWorkspaceManagement.class.getResourceAsStream("/import-export/db1_ws1-20071220_0430.xml");
- repository.importWorkspace(workspaceEntry.getName(), is);
+ InputStream is = TestWorkspaceManagement.class.getResourceAsStream("/import-export/db1_ws1-20071220_0430.xml");
+ repository.importWorkspace(workspaceEntry.getName(), is);
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
public void testRestoreBadXml() throws Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, isDefaultWsMultiDb, dsName);
+ ManageableRepository repository = null;
+ try
+ {
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, isDefaultWsMultiDb, dsName);
- WorkspaceEntry workspaceEntry =
- helper.createWorkspaceEntry(isDefaultWsMultiDb, isDefaultWsMultiDb ? helper.createDatasource() : dsName);
- helper.addWorkspace(repository, workspaceEntry);
+ WorkspaceEntry workspaceEntry =
+ helper.createWorkspaceEntry(isDefaultWsMultiDb, isDefaultWsMultiDb ? helper.createDatasource() : dsName);
+ helper.addWorkspace(repository, workspaceEntry);
- Session defSession = repository.login(this.credentials, workspaceEntry.getName());
- Node defRoot = defSession.getRootNode();
+ Session defSession = repository.login(this.credentials, workspaceEntry.getName());
+ Node defRoot = defSession.getRootNode();
- Node node1 = defRoot.addNode("node1");
- node1.setProperty("p1", 2);
- defSession.save();
+ Node node1 = defRoot.addNode("node1");
+ node1.setProperty("p1", 2);
+ defSession.save();
- File content = File.createTempFile("data", ".xml");
- content.deleteOnExit();
- OutputStream os = new BufferedOutputStream(new FileOutputStream(content));
- defSession.exportSystemView(node1.getPath(), os, false, false);
- os.close();
- defSession.logout();
-
- try
- {
- InputStream is = TestWorkspaceManagement.class.getResourceAsStream("/import-export/db1_ws1-20071220_0430.xml");
- repository.importWorkspace(workspaceEntry.getName(), new BufferedInputStream(new FileInputStream(content)));
+ File content = File.createTempFile("data", ".xml");
+ content.deleteOnExit();
+ OutputStream os = new BufferedOutputStream(new FileOutputStream(content));
+ defSession.exportSystemView(node1.getPath(), os, false, false);
+ os.close();
+ defSession.logout();
- fail();
+ try
+ {
+ InputStream is =
+ TestWorkspaceManagement.class.getResourceAsStream("/import-export/db1_ws1-20071220_0430.xml");
+ repository.importWorkspace(workspaceEntry.getName(), new BufferedInputStream(new FileInputStream(content)));
+
+ fail();
+ }
+ catch (RepositoryException e)
+ {
+ // ok
+ }
}
- catch (RepositoryException e)
+ finally
{
- // ok
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
-
}
private void doTestOnWorkspace(String wsName) throws RepositoryException, RepositoryConfigurationException
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -32,6 +32,8 @@
import org.exoplatform.services.jcr.config.ValueStorageFilterEntry;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
import org.exoplatform.services.jcr.core.ManageableRepository;
+import org.exoplatform.services.jcr.core.WorkspaceContainerFacade;
+import org.exoplatform.services.jcr.impl.core.SessionRegistry;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -62,6 +64,26 @@
}
/**
+ * Remove repository.
+ * @throws RepositoryConfigurationException
+ */
+ public void removeRepository(ExoContainer container, String repositoryName) throws RepositoryException,
+ RepositoryConfigurationException
+ {
+ RepositoryService service = (RepositoryService)container.getComponentInstanceOfType(RepositoryService.class);
+
+ ManageableRepository mr = service.getRepository(repositoryName);
+ for (String wsName : mr.getWorkspaceNames())
+ {
+ WorkspaceContainerFacade wc = mr.getWorkspaceContainer(wsName);
+ SessionRegistry sessionRegistry = (SessionRegistry)wc.getComponent(SessionRegistry.class);
+ sessionRegistry.closeSessions(wsName);
+ }
+
+ service.removeRepository(repositoryName);
+ }
+
+ /**
* Add new workspace to repository.
*/
public void addWorkspace(ManageableRepository repository, WorkspaceEntry workspaceEntry)
@@ -249,13 +271,33 @@
new QueryHandlerEntry("org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex", params);
// Cache
- ArrayList cacheParams = new ArrayList();
- cacheParams.add(new SimpleParameterEntry("maxSize", "2000"));
- cacheParams.add(new SimpleParameterEntry("liveTime", "20m"));
- CacheEntry cacheEntry = new CacheEntry(cacheParams);
- cacheEntry.setEnabled(cacheEnabled);
- cacheEntry.setType("org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl");
+ CacheEntry cacheEntry = null;
+ try
+ {
+ Class
+ .forName("org.exoplatform.services.jcr.impl.dataflow.persistent.infinispan.ISPNCacheWorkspaceStorageCache");
+
+ //TODO EXOJCR-1784
+ ArrayList cacheParams = new ArrayList();
+ cacheParams.add(new SimpleParameterEntry("maxSize", "2000"));
+ cacheParams.add(new SimpleParameterEntry("liveTime", "20m"));
+ cacheEntry = new CacheEntry(cacheParams);
+ cacheEntry.setEnabled(cacheEnabled);
+ cacheEntry.setType("org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl");
+ }
+ catch (ClassNotFoundException e)
+ {
+ ArrayList cacheParams = new ArrayList();
+ cacheParams.add(new SimpleParameterEntry("jbosscache-configuration",
+ "conf/standalone/test-jbosscache-config.xml"));
+ cacheParams.add(new SimpleParameterEntry("jbosscache-shareable", Boolean.toString(cacheShared)));
+ cacheEntry = new CacheEntry(cacheParams);
+ cacheEntry
+ .setType("org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache");
+ cacheEntry.setEnabled(cacheEnabled);
+ }
+
LockManagerEntry lockManagerEntry = new LockManagerEntry();
lockManagerEntry.putParameterValue("time-out", "15m");
@@ -305,6 +347,103 @@
return workspaceEntry;
}
+ public RepositoryEntry copyRepositoryEntry(RepositoryEntry configuration)
+ {
+ ArrayList<WorkspaceEntry> workspases = new ArrayList<WorkspaceEntry>();
+
+ for (WorkspaceEntry ws : configuration.getWorkspaceEntries())
+ {
+ workspases.add(copyWorkspaceEntry(ws));
+ }
+
+ RepositoryEntry repository = new RepositoryEntry();
+ repository.setSystemWorkspaceName(configuration.getSystemWorkspaceName());
+ repository.setDefaultWorkspaceName(configuration.getDefaultWorkspaceName());
+ repository.setName(configuration.getName());
+ repository.setSessionTimeOut(configuration.getSessionTimeOut());
+ repository.setAuthenticationPolicy(configuration.getAuthenticationPolicy());
+ repository.setSecurityDomain(configuration.getSecurityDomain());
+
+ for (WorkspaceEntry ws : workspases)
+ {
+ repository.addWorkspace(ws);
+ }
+
+ return repository;
+ }
+
+ private WorkspaceEntry copyWorkspaceEntry(WorkspaceEntry wsEntry)
+ {
+ // container entry
+ ArrayList<SimpleParameterEntry> params = new ArrayList();
+ params.addAll(wsEntry.getContainer().getParameters());
+
+ ContainerEntry containerEntry = new ContainerEntry(wsEntry.getContainer().getType(), (ArrayList)params);
+ containerEntry.setParameters(params);
+
+ // value storage
+ ArrayList<ValueStorageEntry> list = new ArrayList<ValueStorageEntry>();
+ if (wsEntry.getContainer().getValueStorages() != null)
+ {
+ for (ValueStorageEntry vse : wsEntry.getContainer().getValueStorages())
+ {
+ ArrayList<ValueStorageFilterEntry> vsparams = new ArrayList<ValueStorageFilterEntry>();
+
+ for (ValueStorageFilterEntry vsfe : vse.getFilters())
+ {
+ ValueStorageFilterEntry filterEntry = new ValueStorageFilterEntry();
+ filterEntry.setPropertyType(vsfe.getPropertyType());
+ filterEntry.setPropertyName(vsfe.getPropertyName());
+ filterEntry.setMinValueSize(vsfe.getMinValueSize());
+ filterEntry.setAncestorPath(vsfe.getAncestorPath());
+ vsparams.add(filterEntry);
+ }
+
+ ValueStorageEntry valueStorageEntry = new ValueStorageEntry(vse.getType(), vsparams);
+ ArrayList<SimpleParameterEntry> spe = new ArrayList<SimpleParameterEntry>();
+ spe.addAll(vse.getParameters());
+ valueStorageEntry.setId(vse.getId());
+ valueStorageEntry.setParameters(spe);
+ valueStorageEntry.setFilters(vsparams);
+
+ // containerEntry.setValueStorages();
+ containerEntry.setParameters(params);
+ list.add(valueStorageEntry);
+ }
+ }
+
+ containerEntry.setValueStorages(list);
+
+ // Indexer
+ params = new ArrayList();
+ params.addAll(wsEntry.getQueryHandler().getParameters());
+ QueryHandlerEntry qEntry = new QueryHandlerEntry(wsEntry.getQueryHandler().getType(), params);
+
+ // Cache
+ ArrayList cacheParams = new ArrayList();
+ cacheParams.addAll(wsEntry.getCache().getParameters());
+ CacheEntry cacheEntry = new CacheEntry(cacheParams);
+ cacheEntry.setEnabled(wsEntry.getCache().getEnabled());
+ cacheEntry.setType(wsEntry.getCache().getType());
+
+ // Lock
+ LockManagerEntry lockManagerEntry = new LockManagerEntry();
+ lockManagerEntry.setType(wsEntry.getLockManager().getType());
+ ArrayList lockParams = new ArrayList();
+ lockParams.addAll(wsEntry.getLockManager().getParameters());
+ lockManagerEntry.setParameters(lockParams);
+
+ WorkspaceEntry workspaceEntry = new WorkspaceEntry();
+ workspaceEntry.setContainer(containerEntry);
+ workspaceEntry.setCache(cacheEntry);
+ workspaceEntry.setQueryHandler(qEntry);
+ workspaceEntry.setLockManager(lockManagerEntry);
+ workspaceEntry.setName(wsEntry.getName());
+ workspaceEntry.setUniqueName(wsEntry.getUniqueName());
+
+ return workspaceEntry;
+ }
+
public boolean ispnCacheEnabled()
{
try
Modified: jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -120,6 +120,7 @@
configureJDBCCacheLoader(config.getLockManager());
cache = factory.createCache("L" + config.getUniqueName().replace("_", ""), config.getLockManager());
+ PrivilegedISPNCacheHelper.start(cache);
}
else
{
Modified: jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/ISPNIndexChangesFilter.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/ISPNIndexChangesFilter.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/ISPNIndexChangesFilter.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -30,6 +30,7 @@
import org.exoplatform.services.jcr.impl.core.query.lucene.IndexInfos;
import org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex;
import org.exoplatform.services.jcr.infinispan.ISPNCacheFactory;
+import org.exoplatform.services.jcr.infinispan.PrivilegedISPNCacheHelper;
import org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -98,6 +99,7 @@
ISPNCacheFactory<Serializable, Object> factory = new ISPNCacheFactory<Serializable, Object>(cfm);
config.putParameterValue(PARAM_INFINISPAN_CACHESTORE_CLASS, IndexerCacheStore.class.getName());
this.cache = factory.createCache("Indexer_" + searchManager.getWsId(), config);
+ PrivilegedISPNCacheHelper.start(this.cache);
CacheLoaderManager cacheLoaderManager =
cache.getAdvancedCache().getComponentRegistry().getComponent(CacheLoaderManager.class);
@@ -176,4 +178,12 @@
{
return true;
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public void close()
+ {
+ PrivilegedISPNCacheHelper.stop(cache);
+ }
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -18,9 +18,9 @@
*/
package org.exoplatform.services.jcr.impl.dataflow.persistent.infinispan;
-import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.jcr.datamodel.ItemData;
import org.exoplatform.services.jcr.impl.core.itemfilters.QPathEntryFilter;
+import org.exoplatform.services.jcr.infinispan.PrivilegedISPNCacheHelper;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.infinispan.AdvancedCache;
@@ -33,7 +33,6 @@
import org.infinispan.util.concurrent.NotifyingFuture;
import org.infinispan.util.concurrent.locks.LockManager;
-import java.security.PrivilegedAction;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@@ -953,15 +952,7 @@
*/
public void start()
{
- PrivilegedAction<Object> action = new PrivilegedAction<Object>()
- {
- public Object run()
- {
- parentCache.start();
- return null;
- }
- };
- SecurityHelper.doPrivilegedAction(action);
+ PrivilegedISPNCacheHelper.start((Cache)parentCache);
}
/**
@@ -969,15 +960,7 @@
*/
public void stop()
{
- PrivilegedAction<Object> action = new PrivilegedAction<Object>()
- {
- public Object run()
- {
- parentCache.stop();
- return null;
- }
- };
- SecurityHelper.doPrivilegedAction(action);
+ PrivilegedISPNCacheHelper.stop((Cache)parentCache);
}
/**
Modified: jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -58,6 +58,7 @@
import org.infinispan.notifications.Listener;
import org.infinispan.notifications.cachelistener.annotation.CacheEntryModified;
import org.infinispan.notifications.cachelistener.event.CacheEntryModifiedEvent;
+import org.picocontainer.Startable;
import java.io.File;
import java.io.IOException;
@@ -98,7 +99,7 @@
* @author <a href="anatoliy.bazko(a)exoplatform.org">Anatoliy Bazko</a>
* @version $Id: ISPNCacheWorkspaceStorageCache.java 3514 2010-11-22 16:14:36Z nzamosenchuk $
*/
-public class ISPNCacheWorkspaceStorageCache implements WorkspaceStorageCache, Backupable
+public class ISPNCacheWorkspaceStorageCache implements WorkspaceStorageCache, Backupable, Startable
{
private static final Log LOG = ExoLogger.getLogger("exo.jcr.component.core.impl.infinispan.v5.ISPNCacheWorkspaceStorageCache");
@@ -477,6 +478,8 @@
}
this.cache = new BufferedISPNCache(parentCache, allowLocalChanges);
cache.addListener(new CacheEventListener());
+
+ this.cache.start();
}
/**
@@ -1647,5 +1650,20 @@
onCacheEntryUpdated(value);
}
}
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void start()
+ {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void stop()
+ {
+ cache.stop();
}
}
14 years, 1 month
exo-jcr SVN: r5814 - in kernel/trunk/exo.kernel.container/src: test/java/org/exoplatform/container/jmx and 1 other directories.
by do-not-reply@jboss.org
Author: nfilotto
Date: 2012-03-06 07:44:11 -0500 (Tue, 06 Mar 2012)
New Revision: 5814
Added:
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/jmx/support/ExoContainerFinder.java
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManagementContextImpl.java
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/jmx/TestRegistration.java
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/jmx/support/ManagedWithObjectNameTemplate.java
Log:
EXOJCR-1791: JMX calls are not adding current ExoContainer into ExoContainerContext
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManagementContextImpl.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManagementContextImpl.java 2012-03-06 12:40:45 UTC (rev 5813)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManagementContextImpl.java 2012-03-06 12:44:11 UTC (rev 5814)
@@ -18,7 +18,10 @@
*/
package org.exoplatform.container.management;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.ExoContainerContext;
+import org.exoplatform.container.RootContainer;
import org.exoplatform.container.component.RequestLifeCycle;
import org.exoplatform.management.ManagementAware;
import org.exoplatform.management.ManagementContext;
@@ -31,6 +34,7 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
+import java.security.PrivilegedAction;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -50,6 +54,11 @@
*/
private static final Log LOG = ExoLogger.getLogger("exo.kernel.container.ManagementContextImpl");
+ /**
+ * The previous container
+ */
+ private static final ThreadLocal<ExoContainer> previousContainer = new ThreadLocal<ExoContainer>();
+
/** . */
private final Map<Class<?>, Object> scopingDataList;
@@ -306,16 +315,48 @@
public void beforeInvoke(Object managedResource)
{
- ExoContainer container = findContainer();
+ final ExoContainer container = findContainer();
if (container != null)
{
+ SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
+ {
+ public Void run()
+ {
+ ExoContainer oldContainer = ExoContainerContext.getCurrentContainerIfPresent();
+ if (!(oldContainer instanceof RootContainer))
+ {
+ previousContainer.set(oldContainer);
+ }
+ ExoContainerContext.setCurrentContainer(container);
+ return null;
+ }
+ });
RequestLifeCycle.begin(container);
}
}
public void afterInvoke(Object managedResource)
{
- RequestLifeCycle.end();
+ try
+ {
+ RequestLifeCycle.end();
+ }
+ finally
+ {
+ SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
+ {
+ public Void run()
+ {
+ ExoContainer oldContainer = previousContainer.get();
+ if (oldContainer != null)
+ {
+ previousContainer.set(null);
+ }
+ ExoContainerContext.setCurrentContainer(oldContainer);
+ return null;
+ }
+ });
+ }
}
@Override
Modified: kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/jmx/TestRegistration.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/jmx/TestRegistration.java 2012-03-06 12:40:45 UTC (rev 5813)
+++ kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/jmx/TestRegistration.java 2012-03-06 12:44:11 UTC (rev 5814)
@@ -18,12 +18,17 @@
*/
package org.exoplatform.container.jmx;
+import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.container.RootContainer;
+import org.exoplatform.container.jmx.support.ExoContainerFinder;
import org.exoplatform.container.jmx.support.ManagedWithObjectNameTemplate;
import java.util.Set;
import javax.management.MBeanServer;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.ObjectInstance;
import javax.management.ObjectName;
/**
@@ -43,9 +48,33 @@
MBeanServer server = root.getMBeanServer();
- Set set = server.queryMBeans(ObjectName.getInstance("exo:object=\"Foo\""), null);
+ Set<ObjectInstance> set = server.queryMBeans(ObjectName.getInstance("exo:object=\"Foo\""), null);
assertEquals(1, set.size());
+ ObjectInstance oi = set.iterator().next();
+ ExoContainer oldContainer = ExoContainerContext.getCurrentContainerIfPresent();
+
+ ExoContainer currentContainer = new ExoContainer();
+ ExoContainerContext.setCurrentContainer(currentContainer);
+ try
+ {
+ ExoContainerFinder proxyObject =
+ MBeanServerInvocationHandler.newProxyInstance(server, oi.getObjectName(),
+ ExoContainerFinder.class, false);
+ assertTrue("We expect to get the current exo container", oldContainer == proxyObject.getCurrentExoContainer());
+ assertTrue("We expect to get the previous exo container", ExoContainerContext.getCurrentContainerIfPresent() == currentContainer);
+ ExoContainerContext.setCurrentContainer(oldContainer);
+ assertTrue("We expect to get the current exo container", oldContainer == proxyObject.getCurrentExoContainer());
+ assertTrue("We expect to get the previous exo container", ExoContainerContext.getCurrentContainerIfPresent() == oldContainer);
+ ExoContainerContext.setCurrentContainer(null);
+ assertTrue("We expect to get the current exo container", oldContainer == proxyObject.getCurrentExoContainer());
+ assertTrue("We expect to get the previous exo container", ExoContainerContext.getCurrentContainerIfPresent() == oldContainer);
+ }
+ finally
+ {
+ ExoContainerContext.setCurrentContainer(oldContainer);
+ }
+
// Manual
root.registerComponentInstance("Bar", new ManagedWithObjectNameTemplate("Bar"));
Added: kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/jmx/support/ExoContainerFinder.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/jmx/support/ExoContainerFinder.java (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/jmx/support/ExoContainerFinder.java 2012-03-06 12:44:11 UTC (rev 5814)
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+package org.exoplatform.container.jmx.support;
+
+import org.exoplatform.container.ExoContainer;
+
+/**
+ * @author <a href="mailto:nfilotto@exoplatform.com">Nicolas Filotto</a>
+ * @version $Id$
+ *
+ */
+public interface ExoContainerFinder
+{
+ ExoContainer getCurrentExoContainer();
+}
Modified: kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/jmx/support/ManagedWithObjectNameTemplate.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/jmx/support/ManagedWithObjectNameTemplate.java 2012-03-06 12:40:45 UTC (rev 5813)
+++ kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/jmx/support/ManagedWithObjectNameTemplate.java 2012-03-06 12:44:11 UTC (rev 5814)
@@ -18,6 +18,8 @@
*/
package org.exoplatform.container.jmx.support;
+import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.management.annotations.Managed;
import org.exoplatform.management.jmx.annotations.NameTemplate;
@@ -29,7 +31,7 @@
*/
@Managed
@NameTemplate(@Property(key = "object", value = "{Name}"))
-public class ManagedWithObjectNameTemplate
+public class ManagedWithObjectNameTemplate implements ExoContainerFinder
{
private String name;
@@ -45,6 +47,12 @@
}
@Managed
+ public ExoContainer getCurrentExoContainer()
+ {
+ return ExoContainerContext.getCurrentContainerIfPresent();
+ }
+
+ @Managed
public String getName()
{
return name;
14 years, 1 month
exo-jcr SVN: r5813 - in jcr/trunk: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache and 3 other directories.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-06 07:40:45 -0500 (Tue, 06 Mar 2012)
New Revision: 5813
Modified:
jcr/trunk/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/ExoJBossCacheFactory.java
Log:
EXOJCR-1783: stopping shareable JBC
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java 2012-03-06 10:17:48 UTC (rev 5812)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java 2012-03-06 12:40:45 UTC (rev 5813)
@@ -33,8 +33,8 @@
import org.exoplatform.services.jcr.impl.storage.jdbc.DBConstants;
import org.exoplatform.services.jcr.impl.storage.jdbc.DialectDetecter;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
+import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
-import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.exoplatform.services.naming.InitialContextInitializer;
@@ -506,6 +506,7 @@
public void stop()
{
super.stop();
+
if (shareable)
{
// The cache cannot be stopped since it can be shared so we evict the root node instead
@@ -513,10 +514,16 @@
cache.evict(lockRoot, true);
cache.getRegion(lockRoot, false).processEvictionQueues();
}
- else
+
+ try
{
- PrivilegedJBossCacheHelper.stop(cache);
+ ExoJBossCacheFactory.releaseUniqueInstance(CacheType.LOCK_CACHE, cache);
}
+ catch (RepositoryConfigurationException e)
+ {
+ LOG.error("Can not release cache instance", e);
+ }
+
if (jmxManager != null)
{
SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java 2012-03-06 10:17:48 UTC (rev 5812)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java 2012-03-06 12:40:45 UTC (rev 5813)
@@ -30,8 +30,8 @@
import org.exoplatform.services.jcr.impl.core.query.QueryHandler;
import org.exoplatform.services.jcr.impl.core.query.SearchManager;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
+import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
-import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
import org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -232,6 +232,13 @@
log.warn("Not all JBoss Cache MBeans were unregistered.");
}
- PrivilegedJBossCacheHelper.stop(cache);
+ try
+ {
+ ExoJBossCacheFactory.releaseUniqueInstance(CacheType.INDEX_CACHE, cache);
+ }
+ catch (RepositoryConfigurationException e)
+ {
+ log.error("Can not release cache instance", e);
+ }
}
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java 2012-03-06 10:17:48 UTC (rev 5812)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java 2012-03-06 12:40:45 UTC (rev 5813)
@@ -30,12 +30,13 @@
import org.exoplatform.services.jcr.impl.core.query.QueryHandler;
import org.exoplatform.services.jcr.impl.core.query.SearchManager;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
+import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
-import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
import org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.jboss.cache.Cache;
+import org.jboss.cache.CacheException;
import org.jboss.cache.CacheSPI;
import org.jboss.cache.Fqn;
import org.jboss.cache.config.CacheLoaderConfig;
@@ -45,6 +46,8 @@
import java.io.IOException;
import java.io.Serializable;
import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import javax.jcr.RepositoryException;
@@ -176,19 +179,20 @@
cache.put(Fqn.fromRelativeElements(rootFqn, id), LISTWRAPPER, changes);
}
+
/**
- * @see java.lang.Object#finalize()
+ * {@inheritDoc}
*/
@Override
- protected void finalize() throws Throwable
+ public void close()
{
try
{
if (jmxManager != null)
{
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
+ SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Void>()
{
- public Void run()
+ public Void run() throws CacheException
{
jmxManager.unregisterAllMBeans();
return null;
@@ -196,9 +200,18 @@
});
}
}
- finally
+ catch (PrivilegedActionException e)
{
- super.finalize();
+ log.warn("Not all JBoss Cache MBeans were unregistered.");
}
+
+ try
+ {
+ ExoJBossCacheFactory.releaseUniqueInstance(CacheType.INDEX_CACHE, cache);
+ }
+ catch (RepositoryConfigurationException e)
+ {
+ log.error("Can not release cache instance", e);
+ }
}
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java 2012-03-06 10:17:48 UTC (rev 5812)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java 2012-03-06 12:40:45 UTC (rev 5813)
@@ -19,9 +19,11 @@
package org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache;
import org.exoplatform.commons.utils.SecurityHelper;
+import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
import org.exoplatform.services.jcr.datamodel.ItemData;
import org.exoplatform.services.jcr.impl.core.itemfilters.QPathEntryFilter;
-import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
+import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
+import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.jboss.cache.Cache;
@@ -749,7 +751,14 @@
*/
public void stop()
{
- PrivilegedJBossCacheHelper.stop(parentCache);
+ try
+ {
+ ExoJBossCacheFactory.releaseUniqueInstance(CacheType.JCR_CACHE, parentCache);
+ }
+ catch (RepositoryConfigurationException e)
+ {
+ LOG.error("Can not release cache instance", e);
+ }
}
public TransactionManager getTransactionManager()
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2012-03-06 10:17:48 UTC (rev 5812)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2012-03-06 12:40:45 UTC (rev 5813)
@@ -51,7 +51,6 @@
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
-import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -61,8 +60,8 @@
import org.jboss.cache.CacheStatus;
import org.jboss.cache.Fqn;
import org.jboss.cache.Node;
-import org.jboss.cache.config.EvictionRegionConfig;
import org.jboss.cache.config.Configuration.CacheMode;
+import org.jboss.cache.config.EvictionRegionConfig;
import org.jboss.cache.eviction.ExpirationAlgorithmConfig;
import org.jboss.cache.jmx.JmxRegistrationManager;
import org.picocontainer.Startable;
@@ -768,13 +767,9 @@
cache.getNode(childPropsByPatternList).setResident(false);
cache.evict(childPropsByPatternList, true);
cache.getRegion(childPropsByPatternList, false).processEvictionQueues();
-
}
- else
- {
- PrivilegedJBossCacheHelper.stop(cache);
- }
+ cache.stop();
}
/**
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/ExoJBossCacheFactory.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/ExoJBossCacheFactory.java 2012-03-06 10:17:48 UTC (rev 5812)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/ExoJBossCacheFactory.java 2012-03-06 12:40:45 UTC (rev 5813)
@@ -40,9 +40,11 @@
import java.io.IOException;
import java.io.InputStream;
+import java.io.Serializable;
import java.security.PrivilegedAction;
import java.util.HashMap;
import java.util.Map;
+import java.util.Map.Entry;
import javax.management.ObjectName;
import javax.transaction.TransactionManager;
@@ -88,8 +90,8 @@
* A Map that contains all the registered JBC instances, ordered by
* {@link ExoContainer} instances, {@link CacheType} and JBC Configuration.
*/
- private static Map<ExoContainer, Map<CacheType, Map<ConfigurationKey, Cache>>> CACHES =
- new HashMap<ExoContainer, Map<CacheType, Map<ConfigurationKey, Cache>>>();
+ private static Map<ExoContainer, Map<CacheType, Map<ConfigurationKey, CacheInstance>>> CACHES =
+ new HashMap<ExoContainer, Map<CacheType, Map<ConfigurationKey, CacheInstance>>>();
private final TemplateConfigurationHelper configurationHelper;
@@ -272,16 +274,16 @@
return cache;
}
ExoContainer container = ExoContainerContext.getCurrentContainer();
- Map<CacheType, Map<ConfigurationKey, Cache>> allCacheTypes = CACHES.get(container);
+ Map<CacheType, Map<ConfigurationKey, CacheInstance>> allCacheTypes = CACHES.get(container);
if (allCacheTypes == null)
{
- allCacheTypes = new HashMap<CacheType, Map<ConfigurationKey, Cache>>();
+ allCacheTypes = new HashMap<CacheType, Map<ConfigurationKey, CacheInstance>>();
CACHES.put(container, allCacheTypes);
}
- Map<ConfigurationKey, Cache> caches = allCacheTypes.get(cacheType);
+ Map<ConfigurationKey, CacheInstance> caches = allCacheTypes.get(cacheType);
if (caches == null)
{
- caches = new HashMap<ConfigurationKey, Cache>();
+ caches = new HashMap<ConfigurationKey, CacheInstance>();
allCacheTypes.put(cacheType, caches);
}
Configuration cfg = cache.getConfiguration();
@@ -294,13 +296,21 @@
{
throw new RepositoryConfigurationException("Cannot clone the configuration.", e);
}
+
if (caches.containsKey(key))
{
- cache = caches.get(key);
+ CacheInstance cacheInstance = caches.get(key);
+ cacheInstance.acquire();
+
+ cache = cacheInstance.cache;
}
else
{
- caches.put(key, cache);
+ CacheInstance cacheInstance = new CacheInstance(cache);
+ cacheInstance.acquire();
+
+ caches.put(key, cacheInstance);
+
if (LOG.isInfoEnabled())
{
LOG.info("A new JBoss Cache instance has been registered for the region " + rootFqn + ", a cache of type "
@@ -316,6 +326,29 @@
return cache;
}
+ public static synchronized <K, V> void releaseUniqueInstance(CacheType cacheType, Cache<K, V> cache)
+ throws RepositoryConfigurationException
+ {
+ ExoContainer container = ExoContainerContext.getCurrentContainer();
+ Map<CacheType, Map<ConfigurationKey, CacheInstance>> allCacheTypes = CACHES.get(container);
+ Map<ConfigurationKey, CacheInstance> caches = allCacheTypes.get(cacheType);
+
+ for (Entry<ConfigurationKey, CacheInstance> entry : caches.entrySet())
+ {
+ CacheInstance cacheInstance = entry.getValue();
+ if (cacheInstance.isSame(cache))
+ {
+ cacheInstance.release();
+
+ if (!cacheInstance.hasReferences())
+ {
+ caches.remove(entry.getKey());
+ PrivilegedJBossCacheHelper.stop((Cache<Serializable, Object>)cache);
+ }
+ }
+ }
+ }
+
/**
* Gives the {@link JmxRegistrationManager} instance corresponding to the given context
*/
@@ -422,4 +455,39 @@
return true;
}
}
+
+ /**
+ * This class is used to store the actual amount of times cache was used.
+ */
+ private static class CacheInstance
+ {
+ private final Cache cache;
+
+ private int references;
+
+ public CacheInstance(Cache cache)
+ {
+ this.cache = cache;
+ }
+
+ private void acquire()
+ {
+ references++;
+ }
+
+ private void release()
+ {
+ references--;
+ }
+
+ private boolean hasReferences()
+ {
+ return references > 0;
+ }
+
+ private boolean isSame(Cache cache)
+ {
+ return this.cache == cache;
+ }
+ }
}
Modified: jcr/trunk/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java
===================================================================
--- jcr/trunk/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java 2012-03-06 10:17:48 UTC (rev 5812)
+++ jcr/trunk/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java 2012-03-06 12:40:45 UTC (rev 5813)
@@ -29,6 +29,7 @@
import org.exoplatform.services.jcr.impl.core.query.QueryHandler;
import org.exoplatform.services.jcr.impl.core.query.SearchManager;
import org.exoplatform.services.jcr.infinispan.ISPNCacheFactory;
+import org.exoplatform.services.jcr.infinispan.PrivilegedISPNCacheHelper;
import org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -111,4 +112,12 @@
ChangesKey changesKey = new ChangesKey(wsId, IdGenerator.generate());
cache.getAdvancedCache().withFlags(Flag.SKIP_LOCKING).put(changesKey, changes);
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public void close()
+ {
+ PrivilegedISPNCacheHelper.stop(cache);
+ }
}
14 years, 1 month
exo-jcr SVN: r5812 - in jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules: core and 10 other directories.
by do-not-reply@jboss.org
Author: dkuleshov
Date: 2012-03-06 05:17:48 -0500 (Tue, 06 Mar 2012)
New Revision: 5812
Removed:
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/core.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/kernel.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/ws.xml
Modified:
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/db-creator-service.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/digest-auth.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/ldap-configuration.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-listener.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-tck-tests-config.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/security-service.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/spring-security-integration.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/tika-document-reader-service.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/how-to-extend-my-gatein-instance.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/managed-datasources-under-jboss-as.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/api-extensions.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/backup-client.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/use-external-backup-tool.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/cluster-config.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-advantages.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-compatibility-levels.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-exo-implementation.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-extensions.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-usage.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetype-registration.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetypes-and-namespaces.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/configuration-persister.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/exo-jcr-configuration.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/external-value-storages.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/jdbc-data-container-config.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multi-db-schema-support.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multilanguage-support.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/rest-services-on-groovy.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/search-configuration.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container-howto.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/db-cleaner-service.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/intro.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbossts-transaction-service.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jca.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/acl-ext.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/binary-values-processing.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/performance-tuning-guide.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/ftp.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/webdav.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-check-controller.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-creation-service.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/fulltext-search-and-settings.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/jcr-query-usecases.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/searching-repository-content.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/statistics.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/transaction-manager-lookup.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/cache.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/data-source-provider.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/inversion-of-control.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/jndi-naming.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/job-scheduler-service.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/listener-service.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/logging.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/manageability.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/rpc-service.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-for-beginners.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-in-detail.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/services-wiring.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/transaction-service.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/understanding-listnerservice.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/framework-for-cross-domain-ajax.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/groovy-scripts-as-rest-services.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/introduction-to-rest.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/overwrite-default-providers.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/restservicelist-service.xml
Log:
EXOJCR-1782: some ref guide fixes and minor rearrangement
Deleted: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/core.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/core.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/core.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="Core">
- <?dbhtml filename="ch-core.html"?>
-
- <title>eXo Core</title>
-
- <section>
- <title>eXo Core introduction</title>
-
- <para>The eXo Core is a set of common services that are used by eXo
- products and modules, it also can be used in the business logic.</para>
-
- <para>It's Authentication and Security, Organization, Database, Logging,
- JNDI, LDAP, Document reader and other services.</para>
- </section>
-</chapter>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/db-creator-service.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/db-creator-service.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/db-creator-service.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,6 @@
<title>Database Creator</title>
- <section>
- <title>About</title>
-
<para>Database creator<envar> DBCreator</envar> is responsible for
execution DDL script in runtime. A DDL script may contain templates for
database name, user name and password which will be replaced by real
@@ -29,7 +26,6 @@
<para><envar>${password}</envar> for user's password;</para>
</listitem>
</itemizedlist>
- </section>
<section>
<title>API</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/digest-auth.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/digest-auth.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/digest-auth.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -4,9 +4,6 @@
<chapter>
<title>Digest Authentication</title>
- <section>
- <title>Overview</title>
-
<para>Digest access authentication is one of the agreed methods a web
server can use to negotiate credentials with a web user's browser. It uses
encryption to send the password over the network which is safer than the
@@ -15,7 +12,6 @@
<para>Technically digest authentication is an application of MD5
cryptographic hashing with usage of nonce values to discourage
cryptanalysis. It uses the HTTP protocol.</para>
- </section>
<section>
<title>Server configuration</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/ldap-configuration.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/ldap-configuration.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/ldap-configuration.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,16 +6,12 @@
<title>LDAP Configuration</title>
- <section>
- <title>Overview</title>
-
- <para>You may decide that you want eXo users to be mapped to an existing
+ <para>You may decide to make eXo users to be mapped to an existing
directory. eXo provides a flexible implementation of its
OrganizationService on top of LDAP. It can be used on any LDAP compliant
directory and even Active Directory. This page will guide you how to
configure eXo Platform to work with your directory.</para>
- </section>
-
+
<section>
<title>Quickstart</title>
@@ -23,7 +19,7 @@
comes with a predefined ldap configuration. You just need to activate it
and eXo will create all it needs to work at startup.</para>
- <para>You need to have a working ldap server and a user with write
+ <para>You need to have a working LDAP server and a user with write
permissions.</para>
<itemizedlist>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-listener.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-listener.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-listener.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,11 +6,8 @@
<title>Organization Listener</title>
- <section>
- <title>Overview</title>
-
<para>The <link linkend="Core.OrganizationService">Organization
- Service</link> provides a mechanism to receive notifications when :</para>
+ Service</link> provides a mechanism to receive notifications when:</para>
<itemizedlist>
<listitem>
@@ -44,8 +41,7 @@
<para>Create drives and personal areas in ECM.</para>
</listitem>
</itemizedlist>
- </section>
-
+
<section>
<title>Writing your own listeners</title>
@@ -84,8 +80,8 @@
<section>
<title>GroupEventListener</title>
- <para>To listen to group changes, you need to extend
- <>org.exoplatform.services.organization.GroupEventListener</>
+ <para>To listen group changes, you need to extend
+ org.exoplatform.services.organization.GroupEventListener
:</para>
<programlisting language="java">public class MyGroupListener extends GroupEventListener {
@@ -112,7 +108,7 @@
<title>MembershipEventListener</title>
<para>To listen to membership changes, you need to extend
- <>org.exoplatform.services.organization.MembershipEventListener</>
+ org.exoplatform.services.organization.MembershipEventListener
:</para>
<programlisting language="java">public class MyMembershipListener extends MembershipEventListener {
@@ -145,7 +141,7 @@
for Beginners</link> article.</para>
<para>To effectively register organization service's listeners you simply
- need to use the <>addListenerPlugin</> seer injector.</para>
+ need to use the addListenerPlugin seer injector.</para>
<para>So, the easiest way to register your listeners is to pack them into
a .jar and create a configuration file into it under <emphasis
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-tck-tests-config.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-tck-tests-config.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-tck-tests-config.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,6 @@
<title>Organization Service TCK tests configuration</title>
- <section>
- <title>Introduction</title>
-
<para>The process of launching the Organization Service TCK tests against
your Organization Service is quite easy. For instance you may add TCK
tests to your maven project and launch them during unit testing phase. To
@@ -23,13 +20,12 @@
<para>Configure standalone container and Organization Service</para>
<note>
- <para>If you need deeper investigation you can find Organization
+ <para>If you need more profound information you can find Organization
Service TCK test sources at <ulink
url="https://anonsvn.jboss.org/repos/exo-jcr/core/trunk/exo.core.component.org...">svn</ulink></para>
</note>
</listitem>
</itemizedlist>
- </section>
<section>
<title>Maven pom.xml file configuration</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,11 +6,8 @@
<title>Organization Service</title>
- <section id="Overview">
- <title>Overview</title>
-
<para>OrganizationService is the service that allows to access the
- Organization model. This model is composed of :</para>
+ Organization model. This model is composed of:</para>
<itemizedlist>
<listitem>
@@ -28,23 +25,22 @@
<para>It is the basis of eXo personalization and authorizations in eXo and
is used to all over the platform. The model is abstract and does not rely
- on any specific storage. Multiple implementations exist in eXo :</para>
+ on any specific storage. Multiple implementations exist in eXo:</para>
<itemizedlist>
<listitem>
- <para>Hibernate : for storage into a RDBMS</para>
+ <para>Hibernate: for storage into a RDBMS</para>
</listitem>
<listitem>
- <para>Jndi : for storage into a directory such as an LDAP or MS Active
+ <para>Jndi: for storage into a directory such as an LDAP or MS Active
Directory</para>
</listitem>
<listitem>
- <para>Jcr : for storage inside a Java Content Repository</para>
+ <para>Jcr: for storage inside a Java Content Repository</para>
</listitem>
</itemizedlist>
- </section>
<section>
<title>Organizational Model</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/security-service.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/security-service.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/security-service.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,6 @@
<title>Security Service</title>
- <section>
- <title>1 Overview</title>
-
<para>The purpose is to make a simple, unified way for the authentication
and the storing/propagation of user sessions through all the eXo
components and J2EE containers. JAAS is supposed to be the primary login
@@ -17,10 +14,9 @@
JAAS in the <ulink
url="http://java.sun.com/j2se/1.5.0/docs/guide/security/jaas/tutorials/General...">Java
Tutorial</ulink></para>
- </section>
<section>
- <title>1 Framework</title>
+ <title>Framework</title>
<para>The central point of this framework is the <emphasis
role="bold">ConversationState</emphasis> object which stores all
@@ -36,7 +32,7 @@
logout() methods respectively.</para>
<section>
- <title>1.1 ConversationState and ConversationRegistry</title>
+ <title>ConversationState and ConversationRegistry</title>
<para>The ConversationState can be stored</para>
@@ -88,9 +84,9 @@
</section>
<section>
- <title>1.1 Authenticator</title>
+ <title>Authenticator</title>
- <para>An Authenticator is responsible for Identity creating, it contains
+ <para>An Authenticator is responsible for Identity creation, it consists of
two methods:</para>
<itemizedlist>
@@ -245,7 +241,7 @@
</section>
<section>
- <title>1.1 Predefinded JAAS login modules</title>
+ <title>Predefinded JAAS login modules</title>
<para>There are several JAAS Login modules included in eXo Platform
sources:</para>
@@ -277,7 +273,7 @@
</section>
<section>
- <title>1.1 J2EE container authentication</title>
+ <title>J2EE container authentication</title>
<para>As you know, when a user in JAAS is authenticated, a Subject is
created as a result. This Subject represents the authenticated user. It
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/spring-security-integration.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/spring-security-integration.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/spring-security-integration.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,12 +6,6 @@
<title>Spring Security Integration</title>
- <section>
- <title>Introduction</title>
-
- <para>How to Integrate the spring security framework in the eXo
- portal?</para>
-
<para>This tutorial will guide you through a few steps and show you how
easy it is to integrate spring security (or the Spring framework in
general) in eXo portal. We will create a login portlet example as a
@@ -23,7 +17,6 @@
1.2, the JBoss portlet bridge and Spring and can serve as a example
project from where you can start your own portlet development targeting
the eXo platform.</para>
- </section>
<section>
<title>Installation</title>
@@ -32,10 +25,10 @@
running under JBoss 4.2.x.</para>
<para>Download the spring framework: <ulink
- url="http://s3.amazonaws.com/dist.springframework.org/release/SPR/spring-frame...">http://s3.amazonaws.com/dist.springframework.org/release/SPR/spring-frame...</ulink></para>
+ url="http://s3.amazonaws.com/dist.springframework.org/release/SPR/spring-frame...">spring-framework-2.5.6-with-dependencies.zip</ulink>.</para>
- <para>Download spring-security: <ulink
- url="http://sourceforge.net/project/showfiles.php?group_id=73357&package_i...">http://sourceforge.net/project/showfiles.php?group_id=73357&package_i...</ulink></para>
+ <para>Download spring-security using <ulink
+ url="http://sourceforge.net/project/showfiles.php?group_id=73357&package_i...">this</ulink>link.</para>
<para>Unzip the 02portal.war file in the jboss
server/default/deploy/exoplatform.sar directory and copy the following
@@ -389,19 +382,22 @@
<para>Until now we haven't discussed about any integration strategies
concerning a potential existing security realm outside of the eXo
platform. To address this problem we have the choice between at least two
- different strategies:</para>
+ different strategies.</para>
- <para>1.1.1 <emphasis role="bold">Direct integration</emphasis> We can
- directly integrate eXo with the external realm. Everything related to
- organisation and user management in exo is cleanly separated in its own
- abstraction accessible through the OrganisationService. The authentication
- process itself is encapsulated in the Authenticator abstraction which sits
- on top of the organization service. eXo provides several implementations
- of both. So whether your realm is based on LDAP or JDBC and because the
- default implementations are generic enough, you will be able to use them
- and fits them to your needs with a matter of a little configuration. You
- can even develop a custom implementation to meet your more specific
- needs.</para>
+ <section>
+ <title>Direct integration</title>
+ <para>We can
+ directly integrate eXo with the external realm. Everything related to
+ organisation and user management in exo is cleanly separated in its own
+ abstraction accessible through the OrganisationService. The authentication
+ process itself is encapsulated in the Authenticator abstraction which sits
+ on top of the organization service. eXo provides several implementations
+ of both. So whether your realm is based on LDAP or JDBC and because the
+ default implementations are generic enough, you will be able to use them
+ and fits them to your needs with a matter of a little configuration. You
+ can even develop a custom implementation to meet your more specific
+ needs.</para>
+ </section>
<section>
<title>Replication</title>
@@ -496,7 +492,7 @@
}</programlisting>
- <para>Basically the bean retrieves user login and password from the
+ <para>Basically, the bean retrieves user login and password from the
InteractiveAuthenticationSuccessEvent object and tries to get the user
from the organization service. In case he cannot find it in the
repository, he simply creates it on the fly. In this example the user is
@@ -635,8 +631,8 @@
}</programlisting>
<para>The PortletSideSecurityContextFilter retrieves the security
- context from the request and proceeds to a serialization
- de-serialization of it to avoid a potential class cast exception that
+ context from the request and proceeds to a serialization/de-serialization
+ of it to avoid a potential class cast exception that
may occur when propagating an object across webapps. Then the context is
simply set or cleared whether the context is null or not.</para>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/tika-document-reader-service.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/tika-document-reader-service.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/tika-document-reader-service.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,16 +6,12 @@
<title>Tika Document Reader Service</title>
- <section>
- <title>Intro</title>
-
<para>DocumentReaderService provides API to retrieve DocumentReader by
mimetype.</para>
<para>DocumentReader lets the user fetch content of document as String or,
in case of TikaDocumentReader, as Reader.</para>
- </section>
-
+
<section>
<title>Architecture</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,7 +6,10 @@
<title>eXoCore</title>
- <xi:include href="core/core.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <para>The eXo Core is a set of common services, such as Authentication and Security, Organization, Database, Logging,
+ JNDI, LDAP, Document reader, and other services, that are used by eXo
+ products and modules. It also can be used in the business logic.
+ </para>
<xi:include href="core/db-creator-service.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -5,6 +5,7 @@
<?dbhtml filename="part-faq.html"?>
<title>Frequently Asked Question</title>
+ <para>This part provides you all FAQs related to the contents mentioned above.</para>
<xi:include href="faq/jcr-faq.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/api-extensions.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/api-extensions.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/api-extensions.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,22 +6,15 @@
<title>JCR API Extensions</title>
- <section>
- <title>"Lazy" child nodes iteration</title>
-
- <section>
- <title>Concept</title>
-
<para>eXo JCR implementation offers new extended feature beyond JCR
- specification. Sometimes it happens that one JCR Node has hundreds or
+ specification. Sometimes one JCR Node has hundreds or
even thousands of child nodes. This situation is highly not recommended
- for content repository data storage, but some times it occurs. JCR Team
+ for content repository data storage, but sometimes it occurs. JCR Team
is pleased to announce new feature that will help to have a deal with
huge child lists. They can be iterated in a "lazy" manner now giving
improvement in term of performance and RAM usage.</para>
- </section>
- <section>
+ <section id="JCR.APIExtensions.API_and_Usage">
<title>API and usage</title>
<para>Lazy child nodes iteration feature is accessible via extended
@@ -60,7 +53,7 @@
to be used as a production solution.</para>
</section>
- <section>
+ <section id="JCR.APIExtensions.Configuration">
<title>Configuration</title>
<para>In order to enable add the
@@ -87,7 +80,7 @@
size.</para>
</section>
- <section>
+ <section id="JCR.APIExtensions.Implementation_notices">
<title>Implementation notices</title>
<para>Current "lazy" child nodes iterator supports caching, when pages
@@ -102,5 +95,4 @@
numerous conditions and should not be used as a feature, it more likely
implementation specific issue typical for "lazy-pattern".</para>
</section>
- </section>
</chapter>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/backup-client.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/backup-client.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/backup-client.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -25,9 +25,6 @@
requests.</para>
</highlights>
- <section>
- <title>Introduction</title>
-
<para>The service
org.exoplatform.services.jcr.ext.backup.server.HTTPBackupAgent is
REST-based front-end to service
@@ -36,7 +33,6 @@
of current or completed backup/restore, etc.</para>
<para>The backup client is http client for HTTPBackupAgent.</para>
- </section>
<section>
<title>HTTPBackupAgent</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/use-external-backup-tool.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/use-external-backup-tool.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/use-external-backup-tool.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -4,13 +4,11 @@
<chapter id="JCR.SearchIndexBackup">
<?dbhtml filename="ch-search-index-backup.html"?>
- <title>Use external backup tool</title>
-
- <section>
+ <section id="JCR.SearchIndexBackup.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
+ value storage, the repository should be suspended. It means all working
threads are suspended until resume operation performed. Index will be
flushed.</para>
@@ -36,7 +34,7 @@
suspended, check console to see stacktraces.</para>
</section>
- <section>
+ <section id="JCR.SearchIndexBackup.Backup">
<title>Backup</title>
<para>Now we can backup content manually or using third part software. We
@@ -57,7 +55,7 @@
</itemizedlist>
</section>
- <section>
+ <section id="JCR.SearchIndexBackup.Repository_resuming">
<title>Repository resuming</title>
<para>Once backup is done need to invoke resume() operation to switch
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/cluster-config.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/cluster-config.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/cluster-config.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -7,7 +7,7 @@
<title>Configuring JBoss AS with eXo JCR in cluster</title>
- <section>
+ <section id="JCR.ClusterConfig.Launching_Cluster">
<title>Launching Cluster</title>
<section>
@@ -166,7 +166,7 @@
</section>
</section>
- <section>
+ <section id="JCR.ClusterConfig.Requirements">
<title>Requirements</title>
<section>
@@ -273,8 +273,8 @@
</section>
</section>
- <section>
- <title>How properly stop the node</title>
+ <section id="JCR.ClusterConfig.How_to_stop_the_node_properly">
+ <title>How to stop the node properly</title>
<para>To be sure that all transactions are over and JCR is in consistent
state after stopping node, you need to follow next steps:</para>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-advantages.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-advantages.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-advantages.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,8 +6,8 @@
<title>Advantages of eXo JCR</title>
- <section>
- <title>Advantages for application developers:</title>
+ <section id="JCR.AdvantagesOfeXoJCR.Advantages_for_application_developers">
+ <title>Advantages for application developers</title>
<itemizedlist>
<listitem>
@@ -40,7 +40,7 @@
</mediaobject>
</section>
- <section>
+ <section id="JCR.AdvantagesOfeXoJCR.Advantages_for_managers">
<title>Advantages for managers</title>
<itemizedlist>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-compatibility-levels.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-compatibility-levels.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-compatibility-levels.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,17 +6,14 @@
<title>Compatibility Levels</title>
- <section>
- <title>Introduction</title>
-
<para>The Java Content Repository specification JSR-170 has been split
- into two compliance levels as well as a set of optional features. Level 1
- defines a read-only repository, level 2 defines methods for writing
+ into two compliance levels as well as a set of optional features.</para>
+ <para>Level 1 defines a read-only repository.</para>
+ <para>Level 2 defines methods for writing
content and bidirectional interaction with the repository.</para>
<para>eXo JCR supports JSR-170 level 1 and level 2 and all optional
features. The recent JSR-283 is not yet supported.</para>
- </section>
<section>
<title>Level 1</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-exo-implementation.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-exo-implementation.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-exo-implementation.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -1,7 +1,8 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- This document was created with Syntext Serna Free. --><!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
<chapter id="JCR.eXoImplementation">
-<?dbhtml filename="ch-jcr-exo-implementation.html"?> <title>eXo JCR Implementation</title>
+<?dbhtml filename="ch-jcr-exo-implementation.html"?>
+ <title>eXo JCR Implementation</title>
<section>
<title>Related Documents</title>
<para>Access Control Configuration, Export Import Implementation, External
@@ -10,7 +11,7 @@
Repository container life cycle, Workspace, Persistence Storage Workspace,
SimpleDB storage</para>
</section>
- <section>
+ <section id="JCR.eXoImplementation.How_it_works">
<title>How it works</title>
<para>eXo Repository Service is a standard eXo service and is a registered
IoC component, i.e. can be deployed in some eXo Containers (see <link linkend="JCR.eXoJCRconfiguration.RepositoryConfiguration">Service configuration</link> for details). The relationships between components
@@ -56,7 +57,7 @@
</listitem>
</itemizedlist>
</section>
- <section>
+ <section id="JCR.eXoImplementation.Workspace_Data_Model">
<title>Workspace Data Model</title>
<para>The following diagram explains which components of eXo JCR
implementation are used in a data flow to perform operations specified in
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-extensions.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-extensions.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-extensions.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -4,9 +4,6 @@
<chapter id="JCR.Extensions">
<?dbhtml filename="ch-jcr-extensions.html"?>
- <title>JCR Extensions</title>
-
- <section>
<title>JCR Service Extensions</title>
<section>
@@ -107,15 +104,12 @@
already assigned NodeType(s) of the current node (can be both primary
and mixin).</para>
- <para><emphasis role="bold">NOTE:</emphasis> the list of fields can be
- extended.</para>
+ <note><para> The list of fields can be extended.</para></note>
- <para><emphasis role="bold">NOTE2:</emphasis> no spaces between list
- elements.</para>
+ <note><para> No spaces between list elements.</para></note>
- <para><emphasis role="bold">NOTE3:</emphasis> <emphasis
- role="bold">isDeep=false</emphasis> means <emphasis role="bold">node,
- node properties and child nodes</emphasis>.</para>
+ <note><para> <emphasis role="bold">isDeep=false</emphasis> means <emphasis role="bold">node,
+ node properties and child nodes</emphasis>.</para></note>
<para>The list of supported Event names: <emphasis role="bold">addNode,
addProperty, changeProperty, removeProperty, removeNode, addMixin,
@@ -154,7 +148,6 @@
</component-plugins>
</component></programlisting>
</section>
- </section>
<section>
<title>Related Pages</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-usage.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-usage.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-usage.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,6 @@
<title>Using JCR</title>
- <section>
- <title>1 Using eXo JCR in an application</title>
-
<section>
<title>Obtaining a Repository object</title>
@@ -94,7 +91,6 @@
</listitem>
</itemizedlist></para>
</section>
- </section>
<section>
<title>JCR Application practices</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetype-registration.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetype-registration.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetype-registration.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -383,8 +383,8 @@
<section>
<title>Removing node type</title>
<note>
- <para>Node type is only possibly removed when the repository does not
- contain this node type.</para>
+ <para>Node type is possible to remove only when the repository does not
+ contain nodes of this type.</para>
</note>
<programlisting language="java">nodeTypeManager.unregisterNodeType("myNodeType");</programlisting>
</section>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetypes-and-namespaces.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetypes-and-namespaces.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetypes-and-namespaces.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,16 +6,12 @@
<title>Node Types and Namespaces</title>
- <section>
- <title>Introduction</title>
-
<para>Support of node types and namespaces is required by the JSR-170
specification. Beyond the methods required by the specification, eXo JCR
has its own API extension for the <link
linkend="JCR.NodeTypeRegistration">Node type registration</link> as well
as the ability to declaratively define node types in the Repository at the
start-up time.</para>
- </section>
<section>
<title>Node Types definition</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/configuration-persister.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/configuration-persister.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/configuration-persister.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -5,8 +5,10 @@
<?dbhtml filename="ch-jcr-configuration-persister.html"?>
<title>JCR Configuration persister</title>
+ <para>eXo JCR allows using <emphasis>persister</emphasis> to store configuration. In this chapter, you will understand how to use and configure
+ eXo JCR persister.</para>
- <section>
+ <section id="JCR.ConfigurationPersister.Idea">
<title>Idea</title>
<para>JCR Repository Service uses
@@ -36,7 +38,7 @@
which allows to store the configuration in different locations.</para>
</section>
- <section>
+ <section id="JCR.ConfigurationPersister.Usage">
<title>Usage</title>
<para>On startup <classname>RepositoryServiceConfiguration</classname>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/exo-jcr-configuration.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/exo-jcr-configuration.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/exo-jcr-configuration.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,6 +6,8 @@
<title>eXo JCR configuration</title>
+ <para>This chapter provides you the knowledge about eXo JCR configuration in details, including the basic and advanced configuration.</para>
+
<section>
<title>Related documents</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/external-value-storages.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/external-value-storages.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/external-value-storages.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,6 @@
<title>External Value Storages</title>
- <section>
- <title>Introduction</title>
-
<para>By default JCR Values are stored in the Workspace Data container
along with the JCR structure (i.e. Nodes and Properties). eXo JCR offers
an additional option of storing JCR Values separately from Workspace Data
@@ -23,7 +20,6 @@
application on Amazon EC2 - the S3 option may be interesting for
architecture. Simple 'flat' storage is good in speed of creation/deletion
of values, it might be a compromise for a small storages.</para>
- </section>
<section>
<title>Tree File Value Storage</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/jdbc-data-container-config.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/jdbc-data-container-config.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/jdbc-data-container-config.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,10 +6,7 @@
<title>JDBC Data Container Config</title>
- <section>
- <title>Introduction</title>
-
- <para>eXo JCR persistent data container can work in two configuration
+ <para>eXo JCR persistent data container can work in two configuration
modes:<itemizedlist>
<listitem>
<para><phrase>Multi-database</phrase>: One database for each
@@ -248,7 +245,6 @@
<para>Read more about <link linkend="JCR.eXoJCRconfiguration">Repository
configuration</link>.</para>
- </section>
<section>
<title>General recommendations for database configuration</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multi-db-schema-support.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multi-db-schema-support.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multi-db-schema-support.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -7,19 +7,15 @@
<title>How to host several JCR instances on the same database
instance?</title>
- <section>
- <title>Concepts</title>
-
- <para>Frequently a single database instance must be shared by several
+ <para>Frequently, a single database instance must be shared by several
other applications. But some of our customers have also asked for a way to
host several JCR instances in the same database instance. To fulfill this
need, we had to review our queries and scope them to the current schema;
- it’s now possible to have one JCR instance per DB schema instead of per DB
+ it is now possible to have one JCR instance per DB schema instead of per DB
instance. To benefit of the work done for this feature you will need to
- apply the configuration changes described in the next sections. </para>
- </section>
+ apply the configuration changes described below.</para>
- <section>
+ <section id="JCR.MultiDBSchemaSupport.LockManager_Config">
<title>LockManager configuration</title>
<para>To enable this feature you need to replace
@@ -70,7 +66,7 @@
url="http://svn.jboss.org/repos/exo-jcr/jcr/trunk/exo.jcr.component.core/src/t...">svn</ulink>.</para>
</section>
- <section>
+ <section id="JCR.MultiDBSchemaSupport.HibernateService_Configuration">
<title>HibernateService configuration</title>
<para>If you use HibernateService for JDBC connections management you will
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multilanguage-support.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multilanguage-support.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multilanguage-support.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -4,13 +4,11 @@
<chapter id="JCRMultilanguageSupport">
<?dbhtml filename="ch-multilanguage-support.html"?>
- <title>Multilanguage support in eXo JCR RDB backend</title>
+ <title>Multi-language support in eXo JCR RDB backend</title>
- <section>
- <title>Introduction</title>
<para>Whenever relational database is used to store multilingual text data
- of eXo Java Content Repository, we need to adapt configuration in order to
+ of eXo Java Content Repository, it is necessary to adapt configuration in order to
support UTF-8 encoding. Here is a short HOWTO instruction for several
supported RDBMS with examples.</para>
@@ -22,7 +20,6 @@
configured via <classname>InitialContextInitializer</classname>
component.</para>
</note>
- </section>
<section>
<title>Oracle</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/rest-services-on-groovy.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/rest-services-on-groovy.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/rest-services-on-groovy.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,16 +6,12 @@
<title>REST Services on Groovy</title>
- <section>
- <title>Concept</title>
-
<para>Starting from version 1.9, JCR Service supports REST services
creation on <ulink url="http://groovy.codehaus.org">Groovy
script</ulink>.</para>
<para>The feature bases on <link linkend="WS.RestFramework">RESTful
framework</link> and uses ResourceContainer concept.</para>
- </section>
<section>
<title>Usage</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/search-configuration.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/search-configuration.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/search-configuration.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -5,8 +5,9 @@
<?dbhtml filename="ch-search-configuration.html"?>
<title>Search Configuration</title>
+ <para>Search is an important function in eXo JCR, so it is very necessary for you to know how to configure the eXo JCR Search tool.</para>
- <section>
+ <section id="JCR.SearchConfiguration.XMLConfig">
<title>XML Configuration</title>
<para>JCR index configuration. You can find this file here:
@@ -36,7 +37,7 @@
</repository-service></programlisting>
</section>
- <section>
+ <section id="JCR.SearchConfiguration.Config_Parameters">
<title>Configuration parameters</title>
<table>
@@ -371,7 +372,7 @@
</table>
</section>
- <section>
+ <section id="JCR.SearchConfiguration.Global_Search_Index">
<title>Global Search Index</title>
<section>
@@ -518,7 +519,7 @@
</section>
</section>
- <section>
+ <section id="JCR.SearchConfiguration.Indexing_Adjustments">
<title>Indexing Adjustments</title>
<section>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container-howto.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container-howto.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container-howto.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,8 @@
<?dbhtml filename="ch-data-container-howto.html"?>
- <section id="ShortintrointoWorkspacedatacontainerimplementationpractices">
- <title>Short intro about Workspace data container implementation
- practices:</title>
+ <para>To implement Workspace data container, you need to do the following:
+ </para>
<orderedlist>
<listitem>
@@ -17,9 +16,8 @@
</listitem>
<listitem>
- <para>Start new implementation project pom.xml with
- org.exoplatform.jcr parent. (optional, but will makes the development
- easy)</para>
+ <para>Start a new implementation project pom.xml with
+ <emphasis>org.exoplatform.jcr</emphasis> parent. It is not required, but will ease the development.</para>
</listitem>
<listitem>
@@ -110,7 +108,6 @@
</programlisting>
<para>Container can be configured by using set properties.</para>
- </section>
<section id="Valuestorageusagenotes">
<title>Notes on Value storage usage:</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,25 +6,23 @@
<title>JCR Workspace Data Container (architecture contract)</title>
- <section>
- <title>Goals</title>
+ <para>The goals of this chapter are:</para>
<itemizedlist>
<listitem>
- <para>Cover the requirements on Workspace Data Container
+ <para>Coverage of the requirements of Workspace Data Container
implementation</para>
</listitem>
<listitem>
- <para>Describe container life cycle</para>
+ <para>Description of container life cycle</para>
</listitem>
<listitem>
- <para>Describe relations between container and high-level
+ <para>Description relations between container and high-level
DataManagers</para>
</listitem>
</itemizedlist>
- </section>
<section>
<title>Concepts</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/db-cleaner-service.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/db-cleaner-service.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/db-cleaner-service.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,19 +6,22 @@
<title>DBCleanService</title>
- <section>
- <title>Description</title>
+ <para>It is a special service for data removal from database. The chapter
+ shortly describes the principles of work <emphasis>DBCleaner</emphasis> under all
+ databases.</para>
<para>It is special service for data removal from database. The article
shortly describes the principles of work DBCleaner under all
databases</para>
- <note>
- <para>Code that invokes methods of DBCleanService must have
- JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION permission;</para>
+ <section id="JCR.DBCleanerService.Methods_of_DBCleanerService">
+ <title>Methods of DBCleanerService </title>
+ <note>
+ <para>Code that invokes the methods of DBCleanService must have
+ JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION permission.</para>
</note>
- <para>There are several methods of DBCleanerService:</para>
+ <para>There are several methods of <emphasis>DBCleanerService</emphasis> :</para>
<table>
<title>API</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/intro.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/intro.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/intro.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,6 @@
<title>Introduction in eXoJCR</title>
- <section>
- <title>JCR (JSR-170) API main concepts</title>
-
<para>Java Content Repository API as well as other Java language related
standards is created within the Java Community Process http://jcp.org/ as
a result of collaboration of an expert group and the Java community. It is
@@ -67,5 +64,4 @@
repository configuration, rather than part of the application
programming task.</para>
</section>
- </section>
</chapter>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,12 +6,15 @@
<title>JBoss Cache configuration</title>
- <section>
+ <para>This chapter will show you how to use and configure Jboss Cache in the clustered environment.
+ Also, you will know how to use a template-based configuration offered by eXo JCR for JBoss Cache instances.</para>
+
+ <section id="JCR.JBossCacheConfigurationTemplates.JBoss_Cache_Config_for_Indexer">
<title>JBoss cache configuration for indexer, lock manager and data
container</title>
<para>Each mentioned components uses instances of JBoss Cache product for
- caching in clustered environment. So every element has it's own transport
+ caching in clustered environment. So every element has its own transport
and has to be configured in a proper way. As usual, workspaces have
similar configuration but with different cluster-names and may-be some
other parameters. The simplest way to configure them is to define their
@@ -43,7 +46,7 @@
...</programlisting>
</section>
- <section>
+ <section id="JCR.JBossCacheConfigurationTemplates.Jboss_Configuration">
<title>JGroups configuration</title>
<para>JGroups is used by JBoss Cache for network communications and
@@ -78,7 +81,7 @@
<property name="jgroups-multiplexer-stack" value="false" /></programlisting>
</section>
- <section>
+ <section id="JCR.JBossCacheConfigurationTemplates.Allow_to_share_JBOSS_Cache_Instances">
<title>Allow to share JBoss Cache instances</title>
<para>A JBoss Cache instance is quite resource consuming and by default we
@@ -108,7 +111,7 @@
defined.</para>
</section>
- <section>
+ <section id="JCR.JBossCacheConfigurationTemplates.Shipped_Jboss_Cache_Config_template">
<title>Shipped JBoss Cache configuration templates</title>
<para>eXo JCR implementation is shipped with ready-to-use JBoss Cache
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbossts-transaction-service.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbossts-transaction-service.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbossts-transaction-service.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,20 +6,16 @@
<title>JBossTransactionsService</title>
- <section>
- <title>Introduction</title>
-
<para>JBossTransactionsService implements eXo <link
linkend="Kernel.TransactionService">TransactionService</link> and provides
access to <ulink url="http://www.jboss.org/jbosstm/">JBoss Transaction
Service (JBossTS)</ulink> JTA implementation via eXo container
dependency.</para>
- <para>TransactionService used in JCR cache
+ <para>TransactionService is used in JCR cache
<emphasis>org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache</emphasis>
implementaion. See <link linkend="JCR.ClusterConfig">Cluster
configuration</link> for example.</para>
- </section>
<section>
<title>Configuration</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jca.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jca.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jca.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,6 @@
<title>The <emphasis>JCA</emphasis> Resource Adapter</title>
- <section>
- <title>Overview</title>
-
<para>eXo JCR supports <emphasis>J2EE Connector Architecture</emphasis>
1.5, thus If you would like to delegate the JCR Session lifecycle to your
application server, you can use the JCA Resource Adapter for eXo JCR if
@@ -16,7 +13,6 @@
Transaction, in other words you cannot use it for local transactions.
Since the JCR Sessions have not been designed to be shareable, the session
pooling is simply not covered by the adapter.</para>
- </section>
<section>
<title>The <emphasis>SessionFactory</emphasis></title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -7,13 +7,10 @@
<title>LockManager configuration</title>
- <section>
- <title>Introduction</title>
-
<para>What LockManager does?</para>
<para>In general, LockManager stores Lock objects, so it can give a Lock
- object or can release it, etc.</para>
+ object or can release it.</para>
<para>Also, LockManager is responsible for removing Locks that live too
long. This parameter may be configured with "time-out" property.</para>
@@ -25,7 +22,6 @@
<para><classname>org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl</classname>;</para>
</listitem>
</itemizedlist>
- </section>
<section>
<title>CacheableLockManagerImpl</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/acl-ext.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/acl-ext.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/acl-ext.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,19 +6,8 @@
<title>Access Control Extension</title>
- <section>
- <title>Prerequisites</title>
+ <para>An extended Access Control system consists of:</para>
- <para>This is an extension of eXo JCR Access Control features. Please read
- <link linkend="JCR.AccessControl">Access Control</link> and <link
- linkend="JCR.Extensions">JCR Extensions</link> topics first.</para>
- </section>
-
- <section>
- <title>Overview</title>
-
- <para>An extended Access Control system consists of:</para>
-
<itemizedlist>
<listitem>
<para>Specifically configured custom <emphasis
@@ -42,6 +31,13 @@
performed and the current eXo Container</para>
</listitem>
</itemizedlist>
+
+ <section>
+ <title>Prerequisites</title>
+
+ <para>This is an extension of eXo JCR Access Control features. Please read
+ <link linkend="JCR.AccessControl">Access Control</link> and <link
+ linkend="JCR.Extensions">JCR Extensions</link> topics first.</para>
</section>
<section>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/binary-values-processing.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/binary-values-processing.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/binary-values-processing.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -5,8 +5,11 @@
<?dbhtml filename="ch-binary-values-processing.html"?>
<title>Binary Values Processing</title>
+ <para>Processing binary large object (BLOB) is very important in eXo JCR, so this chapter focuses on explaining how to
+ do it.
+ </para>
- <section>
+ <section id="JCR.BinaryValuesProcessing.Configuration">
<title>Configuration</title>
<para>Binary large object (BLOB) properties can be stored in two ways in
@@ -41,7 +44,7 @@
</note>
</section>
- <section>
+ <section id="JCR.BinaryValuesProcessing.Usage">
<title>Usage</title>
<para>In both of the cases, a developer can set/update the binary Property
@@ -139,7 +142,7 @@
node.setProperty("BinData", extValue);</programlisting>
</section>
- <section>
+ <section id="JCR.BinaryValuesProcessing.Value_implementations">
<title>Value implementations</title>
<mediaobject>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/performance-tuning-guide.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/performance-tuning-guide.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/performance-tuning-guide.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,15 +6,10 @@
<title>JCR Performance Tuning Guide</title>
- <section>
- <title>Introduction</title>
+ <para>This chapter will show you possible ways of improving JCR</para>
- <para>This guide will show you possible ways of improving JCR
- performance.</para>
-
<para>It is intended to GateIn Administrators and those who wants to use
JCR features.</para>
- </section>
<section>
<title>JCR Performance and Scalability</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/ftp.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/ftp.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/ftp.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,17 +6,13 @@
<title>FTP</title>
- <section>
- <title>Introdution</title>
-
<para>The JCR-FTP Server represents the standard eXo service, operates as
an FTP server with an access to a content stored in JCR repositories in
the form of <emphasis role="bold">nt:file/nt:folder</emphasis> nodes or
their successors. The client of an executed Server can be any FTP client.
The FTP server is supported by a standard configuration which can be
changed as required.</para>
- </section>
-
+
<section>
<title>Configuration Parameters</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/webdav.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/webdav.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/webdav.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -7,20 +7,6 @@
<title>WebDAV</title>
- <section>
- <title>Related documents</title>
-
- <itemizedlist>
- <listitem>
- <para><link linkend="JCR.LinkProducerService">Link
- Producer</link></para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section>
- <title>Introduction</title>
-
<para>The WebDAV protocol enables you to use the third party tools to
communicate with hierarchical content servers via HTTP. It is possible to
add and remove documents or a set of documents from a path on the server.
@@ -69,8 +55,21 @@
org.exoplatform.services.security.jaas.BasicLoginModule required domain=ecm;
};</programlisting>
</note>
- </section>
+ <para>
+ <emphasis role="bold">Related documents</emphasis>
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <link linkend="JCR.LinkProducerService">Link
+ Producer
+ </link>
+ </para>
+ </listitem>
+ </itemizedlist>
+
<section>
<title>Configuration</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -5,8 +5,9 @@
<?dbhtml filename="ch-query-handler-config.html"?>
<title>QueryHandler configuration</title>
+ <para>This chapter shows you how to configure <emphasis>QueryHandler</emphasis>: <link linkend="JCR.QueryHandlerConfiguration.Indexing_in_clustered_environment">Indexing in clustered environment</link>.</para>
- <section>
+ <section id="JCR.QueryHandlerConfiguration.Indexing_in_clustered_environment">
<title>Indexing in clustered environment</title>
<para>JCR offers multiple indexing strategies. They include both for
@@ -85,7 +86,7 @@
Configuration</link>.</para>
</section>
- <section>
+ <section id="JCR.QueryHandlerConfiguration.Configuration">
<title>Configuration</title>
<section>
@@ -422,7 +423,7 @@
</section>
</section>
- <section>
+ <section id="JCR.QueryHandlerConfiguration.Asynchronous_reindexing">
<title>Asynchronous reindexing</title>
<para>Managing a big set of data using JCR in production environment
@@ -538,7 +539,7 @@
</section>
</section>
- <section>
+ <section id="JCR.QueryHandlerConfiguration.Advanced_tuning">
<title>Advanced tuning</title>
<section>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-check-controller.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-check-controller.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-check-controller.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,6 @@
<title>Checking repository integrity and consistency</title>
- <section>
- <title>JMX-based consistency tool</title>
-
<para>Production and any other system may have faults some day. They may
be caused by hardware problems, human faults, software errors during
updates and many other circumstances. It is important to check integrity
@@ -136,7 +133,6 @@
<para>All tool activities are stored in file, which can be found in app
directory by name <code>report-<repository
name>-dd-MMM-yy-HH-mm.txt</code>.</para>
- </section>
<section>
<title>Recommendations on how to fix corrupted JCR</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-creation-service.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-creation-service.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-creation-service.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,13 +6,9 @@
<title>RepositoryCreationService</title>
- <section>
- <title>Intro</title>
-
- <para>RepositoryCreationService is the service for creation repositories
- in runtime. The service can be used in standalone or cluster
+ <para><emphasis>RepositoryCreationService</emphasis> is the service which is used to create repositories
+ in runtime. The service can be used in a standalone or cluster
environment.</para>
- </section>
<section>
<title>Dependencies</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/fulltext-search-and-settings.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/fulltext-search-and-settings.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/fulltext-search-and-settings.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,7 +6,7 @@
<title>Fulltext Search And Affecting Settings</title>
- <section>
+ <section id="JCR.FulltextSearchAndSettings.Property_content_indexing">
<title>Property content indexing</title>
<para>Each property of a node (if it is indexable) is processed with
@@ -15,7 +15,7 @@
properties.</para>
</section>
- <section>
+ <section id="JCR.FulltextSearchAndSettings.Lucene_Analyzers">
<title>Lucene Analyzers</title>
<para>The sense of analyzers is to transform all strings stored in the
@@ -146,7 +146,7 @@
linkend="JCR.SearchConfiguration">Search Configuration</link></para>
</section>
- <section>
+ <section id="JCR.FulltextSearchAndSettings.How_different_properties_indexed">
<title>How are different properties indexed?</title>
<para>Different properties are indexed in different ways, this affects to
@@ -203,7 +203,7 @@
<programlisting>SELECT * FROM nt:resource WHERE CONTAINS( * , 'some string')</programlisting>
</section>
- <section>
+ <section id="JCR.FulltextSearchAndSettings.Fulltext_search_query_examples">
<title>Fulltext search query examples</title>
<itemizedlist>
@@ -229,7 +229,7 @@
</itemizedlist>
</section>
- <section>
+ <section id="JCR.FulltextSearchAndSettings.Different_analyzers_in_action">
<title>Different analyzers in action</title>
<para>First of all, we will fill repository by nodes with mixin type
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/jcr-query-usecases.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/jcr-query-usecases.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/jcr-query-usecases.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,14 +6,10 @@
<title>JCR Query Usecases</title>
- <section>
- <title>Intro</title>
-
<para>JCR supports two query languages - JCR and XPath. A query, whether
XPath or SQL, specifies a subset of nodes within a workspace, called the
result set. The result set constitutes all the nodes in the workspace that
meet the constraints stated in the query.</para>
- </section>
<section>
<title>Query Lifecycle</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/searching-repository-content.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/searching-repository-content.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/searching-repository-content.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,14 +6,10 @@
<title>Searching Repository Content</title>
- <section>
- <title>Introduction</title>
-
- <para>You can find the JCR configuration file here:
- .../portal/WEB-INF/conf/jcr/repository-configuration.xml. Please read also
+ <para>You can find the JCR configuration file at
+ <emphasis>.../portal/WEB-INF/conf/jcr/repository-configuration.xml</emphasis>. Please read also
<link linkend="JCR.SearchConfiguration">Search Configuration</link> for
more information about index configuration.</para>
- </section>
<section>
<title>Bi-directional RangeIterator (since 1.9)</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/statistics.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/statistics.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/statistics.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -5,8 +5,9 @@
<?dbhtml filename="ch-statistics.html"?>
<title>eXo JCR statistics</title>
-
- <section>
+ <para>This chapter will show you how to get and manage all statistics provided by eXo JCR.</para>
+
+ <section id="JCR.Statistics.Database_access_layer">
<title>Statistics on the Database Access Layer</title>
<para>In order to have a better idea of the time spent into the database
@@ -49,7 +50,7 @@
</listitem>
</itemizedlist>
- <para>Those figures are also available globaly for all the methods which
+ <para>Those figures are also available globally for all the methods which
gives us the global behavior of this layer.</para>
<para>If you want to enable the statistics, you just need to set the JVM
@@ -221,7 +222,7 @@
your eXo JCR to better fit your requirements.</para>
<para>In order to allow you to specify the configuration which part of eXo
- JCR needs to be monitored whithout applying any changes in your code
+ JCR needs to be monitored without applying any changes in your code
and/or building anything, we choose to rely on the Load-time Weaving
proposed by AspectJ.</para>
@@ -252,7 +253,7 @@
command line, for more details please refer to <ulink
url="http://www.eclipse.org/aspectj/doc/released/devguide/ltw-configuration.html">http://www.eclipse.org/aspectj/doc/released/devguide/ltw-configuration.html</ulink>.</para>
- <para>By default, the configuration will collect statistcs on all the
+ <para>By default, the configuration will collect statistics on all the
methods of the internal interfaces
<emphasis>org.exoplatform.services.jcr.core.ExtendedSession</emphasis> and
<emphasis>org.exoplatform.services.jcr.core.ExtendedNode</emphasis>, and
@@ -286,7 +287,7 @@
</configuration></programlisting>
<para>The file content below is the content of
- <emphasis>META-INF/aop.xml</emphasis> that you will to need to modify to
+ <emphasis>META-INF/aop.xml</emphasis> that you will need to modify to
add and/or remove the full qualified name of the interfaces to monitor,
into the expression filter of the pointcut called
<emphasis>JCRAPIPointcut</emphasis>. As you can see below, by default only
@@ -326,7 +327,7 @@
JCR so it must be used with caution.</remark>
</section>
- <section>
+ <section id="JCR.Statistics.Statistics_Manager">
<title>Statistics Manager</title>
<para>The statistics manager manages all the statistics provided by eXo
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/transaction-manager-lookup.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/transaction-manager-lookup.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/transaction-manager-lookup.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,19 +6,16 @@
<title>TransactionManagerLookup</title>
- <section>
- <title>Configuration</title>
+ <para>JBossCache class is registered as an eXo container component in the
+ <emphasis>configuration.xml</emphasis> file. </para>
- <para>It's JBossCache class registered as eXo container component in
- configuration.xml file. </para>
-
<programlisting language="xml"> <component>
<key>org.jboss.cache.transaction.TransactionManagerLookup</key>
<type>org.jboss.cache.transaction.JBossStandaloneJTAManagerLookup</type>
</component></programlisting>
- <para>JBossStandaloneJTAManagerLookup used in standalone environment. Bur
- for Application Server environment use GenericTransactionManagerLookup.
+ <para><emphasis>JBossStandaloneJTAManagerLookup</emphasis> is used in a standalone environment, but
+ <emphasis>GenericTransactionManagerLookup</emphasis> is used in the Application Server environment.
</para>
- </section>
+
</chapter>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/how-to-extend-my-gatein-instance.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/how-to-extend-my-gatein-instance.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/how-to-extend-my-gatein-instance.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,19 +6,12 @@
<title>How to extend my GateIn instance?</title>
- <section>
- <title>Introduction</title>
-
- <section>
- <title>Overview</title>
-
- <para>Since GateIn beta 2, we added a set of features in order to
- customize a GateIn instance without modifying the GateIn binary, this
+ <para>Since GateIn beta 2, there are a set of features added to
+ customize a GateIn instance without modifying the GateIn binary. This
usecase will be called <emphasis>portal extension</emphasis> in this
documentation. Those features are also required to be able to launch
several portal instances at the same time, in "eXo terminology" that
means to have several "portal.war".</para>
- </section>
<section>
<title>Motivations</title>
@@ -48,7 +41,6 @@
help/enforce all the GateIn developers to follow the "good
practices".</para>
</section>
- </section>
<section>
<title>Prerequisites</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/managed-datasources-under-jboss-as.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/managed-datasources-under-jboss-as.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/managed-datasources-under-jboss-as.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,8 +6,8 @@
<?dbhtml filename="ch-how-to-use-managed-datasource-under-jboss.html"?>
- <section>
- <title>Configurations Steps</title>
+ <para>This chapter will show you how to use AS Managed DataSource under JBoss AS.
+ </para>
<important>
<para>Checked under Gatein 3.1.0-GA Final</para>
@@ -99,5 +99,4 @@
<para>Running eXo after these configurations goes well.</para>
</section>
- </section>
</chapter>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -5,7 +5,9 @@
<?dbhtml filename="part-jcr.html"?>
<title>eXoJCR</title>
-
+ <para>eXo provides JCR implementation called eXo JCR.</para>
+ <para>This part will show you how to configure and use eXo JCR in GateIn and standalone.</para>
+
<xi:include href="jcr/intro.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
@@ -91,7 +93,7 @@
<xi:include href="jcr/transaction-manager-lookup.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
-
+
<xi:include href="jcr/ispn/ispn-integration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
@@ -109,8 +111,8 @@
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="jcr/searching/fulltext-search-and-settings.xml"
- xmlns:xi="http://www.w3.org/2001/XInclude" />
-
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
<!-- api extensions -->
<xi:include href="jcr/api-extensions.xml"
@@ -145,12 +147,12 @@
- <xi:include href="jcr/jta.xml"
- xmlns:xi="http://www.w3.org/2001/XInclude" />
-
- <xi:include href="jcr/jca.xml"
- xmlns:xi="http://www.w3.org/2001/XInclude" />
-
+ <xi:include href="jcr/jta.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="jcr/jca.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
<xi:include href="jcr/other/acl.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/cache.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/cache.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/cache.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,7 +6,10 @@
<title>eXo Cache</title>
- <section>
+ <para>
+ This chapter will provide you all the basic knowledge about eXo Cache, from basic concepts to advanced concepts, sample codes, and more.
+ </para>
+ <section id="Kernel.Cache.Basic_concepts">
<title>Basic concepts</title>
<para>All applications on the top of eXo JCR that need a cache, can rely
@@ -156,7 +159,7 @@
</table>
</section>
- <section>
+ <section id="Kernel.Cache.Advanced_concepts">
<title>Advanced concepts</title>
<section>
@@ -264,7 +267,7 @@
</section>
</section>
- <section>
+ <section id="Kernel.Cache.Extension">
<title>eXo Cache extension</title>
<para>In the previous versions of eXo kernel, it was quite complex to
@@ -314,7 +317,7 @@
</note>
</section>
- <section>
+ <section id="Kernel.Cache.eXo_Cache_based_Jobss_Cache">
<title>eXo Cache based on JBoss Cache</title>
<section>
@@ -1309,7 +1312,7 @@
</section>
</section>
- <section>
+ <section id="Kernel.Cache.Based_Infinispan">
<title>eXo Cache based on Infinispan</title>
<section>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,6 @@
<title>Container Configuration</title>
- <section>
- <title>Intro</title>
-
<para>eXo Portal uses PicoContainer, which implements the Inversion of
Control (IoC) design pattern. All eXo containers inherit from a
PicoContainer. There are mainly two eXo containers used, each of them can
@@ -23,8 +20,7 @@
<para>Confused? - You might be interested in the <link
linkend="Kernel.ServiceConfigurationforBeginners">Service Configuration
- for Beginners</link> article, which explains the basics.</para>
- </section>
+ for Beginners</link> chapter to understand the basics.</para>
<section id="Kernel.ContainerConfiguration.ConfigurationNamespace">
<title>Kernel configuration namespace</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/data-source-provider.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/data-source-provider.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/data-source-provider.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,14 +6,11 @@
<title>The data source provider</title>
- <section>
- <title>Description</title>
-
<para>The <emphasis>DataSourceProvider</emphasis> is a service used to
give access to a data source in an uniform manner in order to be able to
support data sources that are managed by the application server.</para>
- <para><table>
+ <table>
<title>List methods</title>
<tgroup cols="2">
@@ -38,8 +35,7 @@
</row>
</tbody>
</tgroup>
- </table></para>
- </section>
+ </table>
<section>
<title>Configuration</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/inversion-of-control.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/inversion-of-control.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/inversion-of-control.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,6 @@
<title>Inversion Of Control</title>
- <section>
- <title>Overview</title>
-
<para>The services are not responsible for the instantiation of the
components on which they depend.</para>
@@ -16,11 +13,11 @@
implementation of dependant services can be transparently
exchanged.</para>
- <para>This pattern has several names :</para>
+ <para>This pattern has several names:</para>
<itemizedlist>
<listitem>
- <para>Hollywood principle : "don't call me, I will call you"</para>
+ <para>Hollywood principle: "don't call me, I will call you"</para>
</listitem>
<listitem>
@@ -31,7 +28,6 @@
<para>Dependency injection</para>
</listitem>
</itemizedlist>
- </section>
<section>
<title>How</title>
@@ -50,7 +46,7 @@
<section>
<title>Injection</title>
- <para>There are two ways to inject a dependency :</para>
+ <para>There are two ways to inject a dependency:</para>
<para>Using a constructor:</para>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/jndi-naming.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/jndi-naming.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/jndi-naming.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -5,8 +5,9 @@
<?dbhtml filename="ch-jndi-naming.html"?>
<title>JNDI naming</title>
+ <para>This chapter provides you the basic knowledge about JNDI naming, such as, what it is, how it works and how it is used.</para>
- <section>
+ <section id="Kernel.JNDINaming.Prerequisites">
<title>Prerequisites</title>
<para>We need to configure JNDI environment properties and Reference
@@ -29,7 +30,7 @@
</itemizedlist></para>
</section>
- <section>
+ <section id="Kernel.JNDINaming.How_it_works">
<title>How it works</title>
<para>Make sure you understand the <ulink
@@ -77,7 +78,7 @@
<para>and others (see JNDI docs)</para>
</section>
- <section>
+ <section id="Kernel.JNDINaming.JNDI_ref_binding">
<title>JNDI reference binding</title>
<para>Another responsibility of Context Initializer
@@ -112,7 +113,7 @@
</section>
</section>
- <section>
+ <section id="Kernel.JNDINaming.Configuration_examples">
<title>Configuration examples</title>
<para>The <envar>InitialContextInitializer</envar> configuration
@@ -187,7 +188,7 @@
</component-plugin></programlisting>
</section>
- <section>
+ <section id="Kernel.JNDINaming.Recommendations_for_application_developers">
<title>Recommendations for Application Developers</title>
<para><itemizedlist>
@@ -203,7 +204,7 @@
</itemizedlist></para>
</section>
- <section>
+ <section id="Kernel.JNDINaming.InitialContextInitializer">
<title>InitialContextInitializer API</title>
<para><envar>InitialContextInitalizer</envar> also provides feature of
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/job-scheduler-service.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/job-scheduler-service.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/job-scheduler-service.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -2,11 +2,8 @@
<!-- This document was created with Syntext Serna Free. --><!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
<chapter id="Kernel.JobSchedulerService">
<?dbhtml filename="ch-job-scheduler-service.html"?> <title>Job Scheduler Service</title>
+ <para><emphasis role="bold">Job scheduler</emphasis> defines a job to execute a given number of times during a given period. It is a service that is in charge of unattended background executions, commonly known for historical reasons as batch processing. It is used to create and run jobs automatically and continuously, to schedule event-driven jobs and reports.</para>
<section>
- <title>What is Job Scheduler?</title>
- <para><emphasis role="bold">Job scheduler</emphasis> defines a job to execute a given number of times during a given period. It is a service that is in charge of unattended background executions, commonly known for historical reasons as batch processing. It is used to create and run jobs automatically and continuously, to schedule event-driven jobs and reports.</para>
- </section>
- <section>
<title>Where is Job Scheduler Service used in eXo Products?</title>
<para>Job Scheduler Service is widely used in many eXo products such as Social, DMS, WCM, eXo Knowledge and eXo Collaboration.</para>
<para>In eXo products, Job Schedulers are used to do some tasks as below:</para>
Deleted: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/kernel.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/kernel.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/kernel.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="Kernel">
- <?dbhtml filename="ch-kernel.html"?>
-
- <title>eXo Kernel</title>
-
- <section>
- <title>eXo Kernel introduction</title>
-
- <para>eXo Kernel is the basis of all eXo platform products and modules.
- Any component available in eXo Platform is managed by the Exo Container,
- our micro container responsible for gluing the services through dependency
- injection</para>
-
- <para>Therefore, each product is composed of a set of services and plugins
- registered to the container and configured by XML configuration
- files.</para>
-
- <para>The Kernel module also contains a set of very low level
- services.</para>
- </section>
-</chapter>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/listener-service.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/listener-service.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/listener-service.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,6 @@
<title>ListenerService</title>
- <section>
- <title>Asynchronous Event Broadcast</title>
-
<para>Basicaly, ListenerService used to store Listeners and broadcast
events to them.</para>
@@ -16,7 +13,7 @@
destination listeners and executes event on those listeners.</para>
<para>But, some events may take a lot of time, so idea to make event
- processing asynchronous is usefull.</para>
+ processing asynchronous is useful.</para>
<blockquote>
What do I need to make my listener asynchronous?
@@ -53,5 +50,4 @@
</init-params>
</component></programlisting>
- </section>
</chapter>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/logging.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/logging.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/logging.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,16 +6,13 @@
<title>Logs configuration</title>
- <section>
- <title>Introdution</title>
-
<para>In order to accommodate to the different target runtime where it can
be deployed, eXo is capable of leveraging several logging systems. eXo
lets you choose the underlying logging engine to use and even configure
that engine (as a quick alternative to doing it directly in your runtime
environment).</para>
- <para>The currently supported logging engines are : <itemizedlist>
+ <para>The currently supported logging engines are: <itemizedlist>
<listitem>
<para>Apache Log4J</para>
</listitem>
@@ -29,7 +26,6 @@
abstraction)</para>
</listitem>
</itemizedlist></para>
- </section>
<section>
<title>Logs configuration initializer</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/manageability.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/manageability.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/manageability.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,6 @@
<title>Manageability</title>
- <section>
- <title>Introduction</title>
-
<para>The kernel has a framework for exposing a management view of the
various sub systems of the platform. The management view is a lose term
for defining how we can access relevant information about the system and
@@ -20,7 +17,6 @@
framework is still in use but is deprecated in favor of the new framework
as it is less tested and less efficient. It will be removed by
sanitization in the future.</para>
- </section>
<section>
<title>Managed framework API</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/rpc-service.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/rpc-service.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/rpc-service.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,15 +6,12 @@
<title>RPC Service</title>
- <section>
- <title>Description</title>
-
<para>The <emphasis>RPCService</emphasis> is only needed in a cluser
environment, it is used to communicate with the other cluster nodes. It
allows to execute a command on all the cluster nodes or on the coordinator
i.e. the oldest node in the cluster. The <emphasis>RPCService</emphasis>
- has been designed to rely on JGroups capabilites and should not be used
- for heavy load. It can be used for example to notify other nodes that
+ has been designed to rely on JGroups capabilities and should not be used
+ for heavy load. It can be used, for example, to notify other nodes that
something happened or to collect some information from the other
nodes.</para>
@@ -112,7 +109,7 @@
}
}</programlisting>
- <para>In the previous example, We register the command
+ <para>In the previous example, we register the command
<emphasis>sayHelloCommand</emphasis> in the constructor of
<emphasis>MyService</emphasis> and we execute this command in the start
method.</para>
@@ -122,7 +119,6 @@
<emphasis>PortalContainer</emphasis> in a portal mode and only one
<emphasis>RPCService</emphasis> instance in a standalone mode</para>
</note>
- </section>
<section>
<title>Configuration</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-for-beginners.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-for-beginners.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-for-beginners.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -5,6 +5,13 @@
<?dbhtml filename="ch-service-configuration-for-beginners.html"?>
<title>Service Configuration for Beginners</title>
+ <para>This chapter provides you the basic knowledge
+ about modes, services and containers. You will find out where the service
+ configuration files should be placed, and you will also see the overriding
+ mechanism of configurations. </para>
+ <para>Finally, you will understand how the container
+ creates the services one after the other and what <emphasis>Inversion of
+ Control</emphasis> really means.</para>
<para><emphasis role="bold">Related documents</emphasis></para>
@@ -26,17 +33,6 @@
</itemizedlist>
<section>
- <title>Objective</title>
-
- <para>We are going to talk about service configuration. You will learn
- about modes, services and containers, you will find out where the service
- configuration files have to be placed and you will also see the overriding
- mechanism of configurations. Finally you will understand how the container
- creates the services one after the other and what <emphasis>Inversion of
- Control</emphasis> really means.</para>
- </section>
-
- <section>
<title>Requirements</title>
<para>By reading this article you are already glancing at the heart of eXo
@@ -551,7 +547,7 @@
problems to be expected. That's easy.</para>
<para>But now look at <ulink
- url="https://anonsvn.jboss.org/repos/exo-jcr/core/trunk/exo.core.component.org...">https://anonsvn.jboss.org/repos/exo-jcr/core/trunk/exo.core.component.org...</ulink></para>
+ url="https://anonsvn.jboss.org/repos/exo-jcr/core/trunk/exo.core.component.org...">OrganizationServiceImpl.java</ulink></para>
<para>This JDBC implementation of BaseOrganizationService interface has
only one constructor:</para>
@@ -575,10 +571,10 @@
<note>
<para>What happens if one service has more than one constructor? The
- container always tries first to use the constructor with a maximum of
- arguments, if this is not possible the container continues step by step
+ container always tries first to use the constructor with a maximum number
+ of arguments, if this is not possible the container continues step by step
with constructors that have less arguments until arriving at the
- zero-argument constructor (if there is one).</para>
+ zero-argument constructor (if there is any).</para>
</note>
</section>
@@ -599,7 +595,7 @@
<section>
<title>Inversion of Control</title>
- <para><emphasis role="bold">Retrospection</emphasis> Do you remember
+ <para><emphasis role="bold">Retrospection</emphasis>. Do you remember
your last project where you had some small components and several larger
services? How was this organized? Some services had their own
configuration files, others had static values in the source code. Most
@@ -626,7 +622,7 @@
</listitem>
</itemizedlist>
- <para><emphasis role="bold">New Approach</emphasis> You have seen that
+ <para><emphasis role="bold">New Approach</emphasis>. You have seen that
eXo uses the <emphasis>Inversion of Control</emphasis> (IoC) pattern
which means that the control of the services is given to an independent
outside entity, in this case a <emphasis>container</emphasis>. Now the
@@ -651,7 +647,7 @@
</listitem>
</itemizedlist>
- <para><emphasis role="bold">Dependency Injection</emphasis> You also saw
+ <para><emphasis role="bold">Dependency Injection</emphasis>. You also saw
two types of dependency injections:</para>
<itemizedlist>
@@ -755,7 +751,7 @@
<section>
<title>Further Reading</title>
- <para>Do you feel an expert now? Not yet. Get a deeper look and read this
+ <para>Do you feel yourself to be an expert now? Not yet? Get a deeper look and read this
<link linkend="Kernel.ServicesWiring">Services Wiring</link> article. You
read so much about configuration, that you should wonder what the <link
linkend="Kernel.ContainerConfiguration.ConfigurationNamespace">XML Schema
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-in-detail.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-in-detail.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-in-detail.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -5,6 +5,15 @@
<?dbhtml filename="ch-service-configuration-in-detail.html"?>
<title>Service Configuration in Detail</title>
+
+ <para>This chapter shows you how to set up a sample service with some
+ configurations and how to access the configuration parameters. The
+ later sections describe all details of the configuration file (parameters,
+ object-params, plugins, imports, and more). It also shows how to access the
+ configuration values. You may consider this document as a <emphasis
+ role="bold">reference</emphasis>, but you can also use this document as a
+ <emphasis role="bold">tutorial</emphasis> and read it from the beginning
+ to the end.</para>
<para><emphasis role="bold">Related documents</emphasis></para>
@@ -27,19 +36,6 @@
</itemizedlist>
<section>
- <title>Objectives</title>
-
- <para>This article shows how to setup a sample service with some
- configurations and how to access to the configuration parameters. The
- later chapters describe all details of the configuration file (parameters,
- object-params, plugins, imports, etc.), it also shows how to access the
- configuration values. You may consider this article as a <emphasis
- role="bold">reference</emphasis>, but you can also use this article as a
- <emphasis role="bold">tutorial</emphasis> and read it from the beginning
- to the end.</para>
- </section>
-
- <section>
<title>Requirements</title>
<para>You should have read and understood <link
@@ -128,7 +124,7 @@
<title>Init Parameters</title>
<para>You see your service has a configuration file, but you wonder how
- the file could possibly access to its configuration. Imagine that you
+ the file can gain access to its configuration. Imagine that you
are asked to implement two different calculation methods: fast and
exact.</para>
@@ -159,7 +155,7 @@
role="bold">totally free</emphasis>. You can provide as many <emphasis
role="bold">value-param</emphasis>, <emphasis
role="bold">property-param</emphasis>, and <emphasis
- role="bold">properties</emphasis> you wish and you can give them any
+ role="bold">properties</emphasis> as you wish, and you can give them any
names or values. You only must respect the xml structure.</para>
</note>
@@ -431,7 +427,7 @@
</itemizedlist>
<para>Have a look on this type test xml file: <ulink
- url="https://anonsvn.jboss.org/repos/exo-jcr/kernel/trunk/exo.kernel.container...">https://anonsvn.jboss.org/repos/exo-jcr/kernel/trunk/exo.kernel.container...</ulink>.</para>
+ url="https://anonsvn.jboss.org/repos/exo-jcr/kernel/trunk/exo.kernel.container...">object.xml</ulink>.</para>
</section>
<section>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/services-wiring.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/services-wiring.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/services-wiring.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,6 @@
<title id="KernelServicesWiring.Title">Services Wiring</title>
- <section>
- <title>Overview</title>
-
<para>The container package is responsible of building a hierarchy of
containers. Each service will then be registered in one container or the
other according to the XML configuration file it is defined in. It is
@@ -34,8 +31,7 @@
There are three configuration.xml files, one for each container type. In
that XML file, we define the list of services and their init parameters
that will be loaded in the corresponding container.</para>
- </section>
-
+
<section>
<title>Portal Instance</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/transaction-service.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/transaction-service.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/transaction-service.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,6 @@
<title>TransactionService</title>
- <section>
- <title>Base information</title>
-
<para>TransactionServices provides access to the TransactionManager and
the UserTransaction (See JTA specification for details).</para>
@@ -55,7 +52,6 @@
</tbody>
</tgroup>
</table>
- </section>
<section>
<title>Existing TransactionService implementations</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/understanding-listnerservice.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/understanding-listnerservice.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/understanding-listnerservice.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -5,6 +5,8 @@
<?dbhtml filename="ch-understanding-listeners-service.html"?>
<title>Understanding the ListenerService</title>
+ <para>This chapter will first describe how the ListenerService works and
+ then it will show you how to configure the ListenerService.</para>
<para><emphasis role="bold">Related documents</emphasis></para>
@@ -26,13 +28,6 @@
</itemizedlist>
<section>
- <title>Objectives</title>
-
- <para>This article will first describe how the ListenerService works and
- then it will show you how to configure the ListenerService.</para>
- </section>
-
- <section>
<title>What is the ListenerService ?</title>
<para>Inside eXo, an event mechanism allows to trigger and listen to
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,18 @@
<title>eXoKernel</title>
- <xi:include href="kernel/kernel.xml"
- xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <para>eXo Kernel is the basis of all eXo platform products and modules.
+ Any component available in eXo Platform is managed by the Exo Container,
+ our micro container responsible for gluing the services through dependency
+ injection</para>
+
+ <para>Therefore, each product is composed of a set of services and plugins
+ registered to the container and configured by XML configuration
+ files.</para>
+ <para>The Kernel module also contains a set of very low level
+ services.</para>
+
<xi:include href="kernel/exo-container.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/framework-for-cross-domain-ajax.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/framework-for-cross-domain-ajax.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/framework-for-cross-domain-ajax.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -5,11 +5,12 @@
<?dbhtml filename="ch-framework-for-cross-domain-ajax.html"?>
<title>Framework for cross-domain AJAX</title>
+ <para>eXo Webservice provides a framework to cross-domain AJAX. This chapter shows you how to use this framework.</para>
- <para>(<ulink
- url="https://anonsvn.jboss.org/repos/exo-jcr/ws/trunk/exo.ws.frameworks.javasc...">https://anonsvn.jboss.org/repos/exo-jcr/ws/trunk/exo.ws.frameworks.javasc...</ulink>)</para>
+ <para>You can checkout the source code at <ulink
+ url="https://anonsvn.jboss.org/repos/exo-jcr/ws/trunk/exo.ws.frameworks.javasc...">https://anonsvn.jboss.org/repos/exo-jcr/ws/trunk/exo.ws.frameworks.javasc...</ulink>.</para>
- <section>
+ <section id="WS.CrossDomainAJAX.Motivation">
<title>Motivation</title>
<para>XmlHttpRequest objects are bound by the same origin security policy
@@ -32,7 +33,7 @@
limitation of AJAX.</para>
</section>
- <section>
+ <section id="WS.CrossDomainAJAX.Scheme">
<title>Scheme (how it works)</title>
<para>To describe our method for cross-domain AJAX solution, let's
@@ -57,7 +58,7 @@
</mediaobject>
</section>
- <section>
+ <section id="WS.CrossDomainAJAX.Working_Sequence">
<title>A Working Sequence:</title>
<para>1) A Browser requests the Start page from the ServerA</para>
@@ -83,7 +84,7 @@
information that we want.</para>
</section>
- <section>
+ <section id="WS.CrossDomainAJAX.How_to_Use_it">
<title>How to use it</title>
<para>1). Place the file client.html and xda.js on the serverA.</para>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/groovy-scripts-as-rest-services.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/groovy-scripts-as-rest-services.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/groovy-scripts-as-rest-services.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,12 +6,9 @@
<title>Groovy Scripts as REST Services</title>
- <section>
- <title>Overview</title>
+ <para>This chapter describes how to use Groovy scripts as REST services.
+ Consider these operations:</para>
- <para>This article describes how to use Groovy scripts as REST services.
- We are going to consider these operations:</para>
-
<itemizedlist>
<listitem>
<para>Load script and save it in JCR.</para>
@@ -22,7 +19,7 @@
</listitem>
<listitem>
- <para>Deploy newly created Class as RESTful service.</para>
+ <para>Deploy a newly created Class as RESTful service.</para>
</listitem>
<listitem>
@@ -30,15 +27,13 @@
</listitem>
<listitem>
- <para>And finally we will discover simple example which can get JCR
+ <para>Finally, we will discover simple example which can get JCR
node UUID</para>
</listitem>
</itemizedlist>
- <para>In this article, we consider RESTful service compatible with JSR-311
- specification. Currently last feature available in version 1.11-SNAPSHOT
- of JCR, 2.0-SNAPSHOT of WS and version 2.1.4-SNAPSHOT of core.</para>
- </section>
+ <para>In this chapter, we consider RESTful service to be compatible with JSR-311
+ specification. The last feature is currently available in version 1.11-SNAPSHOT.</para>
<section>
<title>Loading script and save it in JCR</title>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/introduction-to-rest.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/introduction-to-rest.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/introduction-to-rest.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,9 +6,6 @@
<title>Introduction to the Representational State Transfer (REST)</title>
- <section>
- <title>Introduction</title>
-
<para><command>Representational State Transfer (REST)</command> is a style
of software architecture for distributed hypermedia systems such as the
World Wide Web. The term was introduced in the doctoral dissertation in
@@ -189,9 +186,9 @@
</listitem>
</itemizedlist>
- <para><command>Note</command>: RESTful architecture is not limited to
+ <note><para>RESTful architecture is not limited to
those methods, one of good examples of extension is the WebDAV
- protocol.</para>
+ protocol.</para></note>
<para>The <command>CRUD</command> (Create, Read, Update and Delete) verbs
are designed to operate with atomic data within the context of a database
@@ -207,6 +204,5 @@
<para>As a result, neither the client nor the server needs to remember any
communication-state between messages. Any state retained by the server
- must be modeled as a resource..</para>
- </section>
+ must be modeled as a resource.</para>
</chapter>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/overwrite-default-providers.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/overwrite-default-providers.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/overwrite-default-providers.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -4,9 +4,10 @@
<chapter id="WS.OverwriteDefaultProviders">
<?dbhtml filename="overwrite-default-providers.html"?>
- <title>OverwriteDefaultProviders</title>
+ <title>Overwrite default providers</title>
+ <para>This chapter will show you how to overwrite the default providers in eXo JAX-RS implementation.</para>
- <section>
+ <section id="WS.OverwriteDefaultProviders.Motivation">
<title>Motivation</title>
<para>There is set of providers embedded in eXo JAX-RS
@@ -136,7 +137,7 @@
services.</para>
</section>
- <section>
+ <section id="WS.OverwriteDefaultProviders.Usage">
<title>Usage</title>
<para>To be able overwrite default JAX-RS provider(s) developer
@@ -167,7 +168,7 @@
</orderedlist>
</section>
- <section>
+ <section id="WS.OverwriteDefaultProviders.Example">
<title>Example</title>
<para>In example below see how to use Jackson JSON provider instead of
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/restservicelist-service.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/restservicelist-service.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/restservicelist-service.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,12 +6,9 @@
<title>RestServicesList Service</title>
- <section>
- <title>Overview.</title>
+ <para>RestServicesList service provides information about
+ REST services deployed to the application server.</para>
- <para>RestServicesList service is intendet to provide information about
- rest services deployed to the application server.</para>
-
<itemizedlist>
<listitem>
<para>Path - path to service</para>
@@ -27,7 +24,6 @@
</itemizedlist>
<para>The list can be provided in two formats: HTML and JSON.</para>
- </section>
<section>
<title>Usage</title>
@@ -55,8 +51,9 @@
<para>To do this, perform a simple GET request to the RestServicesList
link.</para>
- <para>f.e. curl -u root:exo http://localhost:8080/rest/ will return such
- HTML code:</para>
+ <para>f.e. curl -u root:exo http://localhost:8080/rest/ will return such
+ HTML code:
+ </para>
<programlisting language="xml"><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
Deleted: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/ws.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/ws.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/ws.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id = "WS">
- <?dbhtml filename="ch-ws.html"?>
-
- <title>eXo Web Services</title>
-
- <section>
- <title>eXo Web Services introduction</title>
-
- <para>The Web Services module allows eXo technology to integrate with
- external products and services.</para>
-
- <para>It's implementaion of API for RESTful Web Services with extensions,
- Servlet and cross-domain AJAX web-frameworks and JavaBean-JSON
- transformer.</para>
- </section>
-</chapter>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws.xml 2012-03-06 10:00:21 UTC (rev 5811)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws.xml 2012-03-06 10:17:48 UTC (rev 5812)
@@ -6,15 +6,19 @@
<title>eXoWS</title>
- <xi:include href="ws/ws.xml"
- xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <para>The Web Services module allows eXo technology to integrate with
+ external products and services.</para>
+
+ <para>It is implementation of API for RESTful Web Services with extensions,
+ Servlet and cross-domain AJAX web-frameworks and JavaBean-JSON
+ transformer.</para>
<xi:include href="ws/introduction-to-rest.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="ws/overwrite-default-providers.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
-
+
<xi:include href="ws/restservicelist-service.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
14 years, 1 month
exo-jcr SVN: r5811 - in jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules: kernel and 1 other directories.
by do-not-reply@jboss.org
Author: dkuleshov
Date: 2012-03-06 05:00:21 -0500 (Tue, 06 Mar 2012)
New Revision: 5811
Removed:
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/core.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/kernel.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/ws.xml
Log:
EXOJCR-1782: removed empty doc files as their content is moved
Deleted: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/core.xml
===================================================================
Deleted: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/kernel.xml
===================================================================
Deleted: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/ws.xml
===================================================================
14 years, 1 month
exo-jcr SVN: r5810 - in jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules: core and 10 other directories.
by do-not-reply@jboss.org
Author: dkuleshov
Date: 2012-03-06 04:57:22 -0500 (Tue, 06 Mar 2012)
New Revision: 5810
Modified:
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/core.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/db-creator-service.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/digest-auth.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/ldap-configuration.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-listener.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-tck-tests-config.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/security-service.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/spring-security-integration.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/tika-document-reader-service.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/how-to-extend-my-gatein-instance.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/managed-datasources-under-jboss-as.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/api-extensions.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/backup-client.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/use-external-backup-tool.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/cluster-config.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-advantages.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-compatibility-levels.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-exo-implementation.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-extensions.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-usage.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetype-registration.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetypes-and-namespaces.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/configuration-persister.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/exo-jcr-configuration.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/external-value-storages.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/jdbc-data-container-config.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multi-db-schema-support.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multilanguage-support.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/rest-services-on-groovy.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/search-configuration.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container-howto.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/db-cleaner-service.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/intro.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbossts-transaction-service.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jca.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/acl-ext.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/binary-values-processing.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/performance-tuning-guide.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/ftp.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/webdav.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-check-controller.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-creation-service.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/fulltext-search-and-settings.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/jcr-query-usecases.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/searching-repository-content.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/statistics.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/transaction-manager-lookup.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/cache.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/data-source-provider.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/inversion-of-control.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/jndi-naming.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/job-scheduler-service.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/kernel.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/listener-service.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/logging.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/manageability.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/rpc-service.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-for-beginners.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-in-detail.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/services-wiring.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/transaction-service.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/understanding-listnerservice.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/framework-for-cross-domain-ajax.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/groovy-scripts-as-rest-services.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/introduction-to-rest.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/overwrite-default-providers.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/restservicelist-service.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/ws.xml
Log:
EXOJCR-1782: some ref guide fixes and minor rearrangement
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/core.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/core.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/core.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="Core">
- <?dbhtml filename="ch-core.html"?>
-
- <title>eXo Core</title>
-
- <section>
- <title>eXo Core introduction</title>
-
- <para>The eXo Core is a set of common services that are used by eXo
- products and modules, it also can be used in the business logic.</para>
-
- <para>It's Authentication and Security, Organization, Database, Logging,
- JNDI, LDAP, Document reader and other services.</para>
- </section>
-</chapter>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/db-creator-service.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/db-creator-service.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/db-creator-service.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,6 @@
<title>Database Creator</title>
- <section>
- <title>About</title>
-
<para>Database creator<envar> DBCreator</envar> is responsible for
execution DDL script in runtime. A DDL script may contain templates for
database name, user name and password which will be replaced by real
@@ -29,7 +26,6 @@
<para><envar>${password}</envar> for user's password;</para>
</listitem>
</itemizedlist>
- </section>
<section>
<title>API</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/digest-auth.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/digest-auth.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/digest-auth.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -4,9 +4,6 @@
<chapter>
<title>Digest Authentication</title>
- <section>
- <title>Overview</title>
-
<para>Digest access authentication is one of the agreed methods a web
server can use to negotiate credentials with a web user's browser. It uses
encryption to send the password over the network which is safer than the
@@ -15,7 +12,6 @@
<para>Technically digest authentication is an application of MD5
cryptographic hashing with usage of nonce values to discourage
cryptanalysis. It uses the HTTP protocol.</para>
- </section>
<section>
<title>Server configuration</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/ldap-configuration.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/ldap-configuration.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/ldap-configuration.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,16 +6,12 @@
<title>LDAP Configuration</title>
- <section>
- <title>Overview</title>
-
- <para>You may decide that you want eXo users to be mapped to an existing
+ <para>You may decide to make eXo users to be mapped to an existing
directory. eXo provides a flexible implementation of its
OrganizationService on top of LDAP. It can be used on any LDAP compliant
directory and even Active Directory. This page will guide you how to
configure eXo Platform to work with your directory.</para>
- </section>
-
+
<section>
<title>Quickstart</title>
@@ -23,7 +19,7 @@
comes with a predefined ldap configuration. You just need to activate it
and eXo will create all it needs to work at startup.</para>
- <para>You need to have a working ldap server and a user with write
+ <para>You need to have a working LDAP server and a user with write
permissions.</para>
<itemizedlist>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-listener.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-listener.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-listener.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,11 +6,8 @@
<title>Organization Listener</title>
- <section>
- <title>Overview</title>
-
<para>The <link linkend="Core.OrganizationService">Organization
- Service</link> provides a mechanism to receive notifications when :</para>
+ Service</link> provides a mechanism to receive notifications when:</para>
<itemizedlist>
<listitem>
@@ -44,8 +41,7 @@
<para>Create drives and personal areas in ECM.</para>
</listitem>
</itemizedlist>
- </section>
-
+
<section>
<title>Writing your own listeners</title>
@@ -84,8 +80,8 @@
<section>
<title>GroupEventListener</title>
- <para>To listen to group changes, you need to extend
- <>org.exoplatform.services.organization.GroupEventListener</>
+ <para>To listen group changes, you need to extend
+ org.exoplatform.services.organization.GroupEventListener
:</para>
<programlisting language="java">public class MyGroupListener extends GroupEventListener {
@@ -112,7 +108,7 @@
<title>MembershipEventListener</title>
<para>To listen to membership changes, you need to extend
- <>org.exoplatform.services.organization.MembershipEventListener</>
+ org.exoplatform.services.organization.MembershipEventListener
:</para>
<programlisting language="java">public class MyMembershipListener extends MembershipEventListener {
@@ -145,7 +141,7 @@
for Beginners</link> article.</para>
<para>To effectively register organization service's listeners you simply
- need to use the <>addListenerPlugin</> seer injector.</para>
+ need to use the addListenerPlugin seer injector.</para>
<para>So, the easiest way to register your listeners is to pack them into
a .jar and create a configuration file into it under <emphasis
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-tck-tests-config.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-tck-tests-config.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service-tck-tests-config.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,6 @@
<title>Organization Service TCK tests configuration</title>
- <section>
- <title>Introduction</title>
-
<para>The process of launching the Organization Service TCK tests against
your Organization Service is quite easy. For instance you may add TCK
tests to your maven project and launch them during unit testing phase. To
@@ -23,13 +20,12 @@
<para>Configure standalone container and Organization Service</para>
<note>
- <para>If you need deeper investigation you can find Organization
+ <para>If you need more profound information you can find Organization
Service TCK test sources at <ulink
url="https://anonsvn.jboss.org/repos/exo-jcr/core/trunk/exo.core.component.org...">svn</ulink></para>
</note>
</listitem>
</itemizedlist>
- </section>
<section>
<title>Maven pom.xml file configuration</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/organization-service.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,11 +6,8 @@
<title>Organization Service</title>
- <section id="Overview">
- <title>Overview</title>
-
<para>OrganizationService is the service that allows to access the
- Organization model. This model is composed of :</para>
+ Organization model. This model is composed of:</para>
<itemizedlist>
<listitem>
@@ -28,23 +25,22 @@
<para>It is the basis of eXo personalization and authorizations in eXo and
is used to all over the platform. The model is abstract and does not rely
- on any specific storage. Multiple implementations exist in eXo :</para>
+ on any specific storage. Multiple implementations exist in eXo:</para>
<itemizedlist>
<listitem>
- <para>Hibernate : for storage into a RDBMS</para>
+ <para>Hibernate: for storage into a RDBMS</para>
</listitem>
<listitem>
- <para>Jndi : for storage into a directory such as an LDAP or MS Active
+ <para>Jndi: for storage into a directory such as an LDAP or MS Active
Directory</para>
</listitem>
<listitem>
- <para>Jcr : for storage inside a Java Content Repository</para>
+ <para>Jcr: for storage inside a Java Content Repository</para>
</listitem>
</itemizedlist>
- </section>
<section>
<title>Organizational Model</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/security-service.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/security-service.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/security-service.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,6 @@
<title>Security Service</title>
- <section>
- <title>1 Overview</title>
-
<para>The purpose is to make a simple, unified way for the authentication
and the storing/propagation of user sessions through all the eXo
components and J2EE containers. JAAS is supposed to be the primary login
@@ -17,10 +14,9 @@
JAAS in the <ulink
url="http://java.sun.com/j2se/1.5.0/docs/guide/security/jaas/tutorials/General...">Java
Tutorial</ulink></para>
- </section>
<section>
- <title>1 Framework</title>
+ <title>Framework</title>
<para>The central point of this framework is the <emphasis
role="bold">ConversationState</emphasis> object which stores all
@@ -36,7 +32,7 @@
logout() methods respectively.</para>
<section>
- <title>1.1 ConversationState and ConversationRegistry</title>
+ <title>ConversationState and ConversationRegistry</title>
<para>The ConversationState can be stored</para>
@@ -88,9 +84,9 @@
</section>
<section>
- <title>1.1 Authenticator</title>
+ <title>Authenticator</title>
- <para>An Authenticator is responsible for Identity creating, it contains
+ <para>An Authenticator is responsible for Identity creation, it consists of
two methods:</para>
<itemizedlist>
@@ -245,7 +241,7 @@
</section>
<section>
- <title>1.1 Predefinded JAAS login modules</title>
+ <title>Predefinded JAAS login modules</title>
<para>There are several JAAS Login modules included in eXo Platform
sources:</para>
@@ -277,7 +273,7 @@
</section>
<section>
- <title>1.1 J2EE container authentication</title>
+ <title>J2EE container authentication</title>
<para>As you know, when a user in JAAS is authenticated, a Subject is
created as a result. This Subject represents the authenticated user. It
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/spring-security-integration.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/spring-security-integration.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/spring-security-integration.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,12 +6,6 @@
<title>Spring Security Integration</title>
- <section>
- <title>Introduction</title>
-
- <para>How to Integrate the spring security framework in the eXo
- portal?</para>
-
<para>This tutorial will guide you through a few steps and show you how
easy it is to integrate spring security (or the Spring framework in
general) in eXo portal. We will create a login portlet example as a
@@ -23,7 +17,6 @@
1.2, the JBoss portlet bridge and Spring and can serve as a example
project from where you can start your own portlet development targeting
the eXo platform.</para>
- </section>
<section>
<title>Installation</title>
@@ -32,10 +25,10 @@
running under JBoss 4.2.x.</para>
<para>Download the spring framework: <ulink
- url="http://s3.amazonaws.com/dist.springframework.org/release/SPR/spring-frame...">http://s3.amazonaws.com/dist.springframework.org/release/SPR/spring-frame...</ulink></para>
+ url="http://s3.amazonaws.com/dist.springframework.org/release/SPR/spring-frame...">spring-framework-2.5.6-with-dependencies.zip</ulink>.</para>
- <para>Download spring-security: <ulink
- url="http://sourceforge.net/project/showfiles.php?group_id=73357&package_i...">http://sourceforge.net/project/showfiles.php?group_id=73357&package_i...</ulink></para>
+ <para>Download spring-security using <ulink
+ url="http://sourceforge.net/project/showfiles.php?group_id=73357&package_i...">this</ulink>link.</para>
<para>Unzip the 02portal.war file in the jboss
server/default/deploy/exoplatform.sar directory and copy the following
@@ -389,19 +382,22 @@
<para>Until now we haven't discussed about any integration strategies
concerning a potential existing security realm outside of the eXo
platform. To address this problem we have the choice between at least two
- different strategies:</para>
+ different strategies.</para>
- <para>1.1.1 <emphasis role="bold">Direct integration</emphasis> We can
- directly integrate eXo with the external realm. Everything related to
- organisation and user management in exo is cleanly separated in its own
- abstraction accessible through the OrganisationService. The authentication
- process itself is encapsulated in the Authenticator abstraction which sits
- on top of the organization service. eXo provides several implementations
- of both. So whether your realm is based on LDAP or JDBC and because the
- default implementations are generic enough, you will be able to use them
- and fits them to your needs with a matter of a little configuration. You
- can even develop a custom implementation to meet your more specific
- needs.</para>
+ <section>
+ <title>Direct integration</title>
+ <para>We can
+ directly integrate eXo with the external realm. Everything related to
+ organisation and user management in exo is cleanly separated in its own
+ abstraction accessible through the OrganisationService. The authentication
+ process itself is encapsulated in the Authenticator abstraction which sits
+ on top of the organization service. eXo provides several implementations
+ of both. So whether your realm is based on LDAP or JDBC and because the
+ default implementations are generic enough, you will be able to use them
+ and fits them to your needs with a matter of a little configuration. You
+ can even develop a custom implementation to meet your more specific
+ needs.</para>
+ </section>
<section>
<title>Replication</title>
@@ -496,7 +492,7 @@
}</programlisting>
- <para>Basically the bean retrieves user login and password from the
+ <para>Basically, the bean retrieves user login and password from the
InteractiveAuthenticationSuccessEvent object and tries to get the user
from the organization service. In case he cannot find it in the
repository, he simply creates it on the fly. In this example the user is
@@ -635,8 +631,8 @@
}</programlisting>
<para>The PortletSideSecurityContextFilter retrieves the security
- context from the request and proceeds to a serialization
- de-serialization of it to avoid a potential class cast exception that
+ context from the request and proceeds to a serialization/de-serialization
+ of it to avoid a potential class cast exception that
may occur when propagating an object across webapps. Then the context is
simply set or cleared whether the context is null or not.</para>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/tika-document-reader-service.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/tika-document-reader-service.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core/tika-document-reader-service.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,16 +6,12 @@
<title>Tika Document Reader Service</title>
- <section>
- <title>Intro</title>
-
<para>DocumentReaderService provides API to retrieve DocumentReader by
mimetype.</para>
<para>DocumentReader lets the user fetch content of document as String or,
in case of TikaDocumentReader, as Reader.</para>
- </section>
-
+
<section>
<title>Architecture</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/core.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,7 +6,10 @@
<title>eXoCore</title>
- <xi:include href="core/core.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <para>The eXo Core is a set of common services, such as Authentication and Security, Organization, Database, Logging,
+ JNDI, LDAP, Document reader, and other services, that are used by eXo
+ products and modules. It also can be used in the business logic.
+ </para>
<xi:include href="core/db-creator-service.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -5,6 +5,7 @@
<?dbhtml filename="part-faq.html"?>
<title>Frequently Asked Question</title>
+ <para>This part provides you all FAQs related to the contents mentioned above.</para>
<xi:include href="faq/jcr-faq.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/api-extensions.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/api-extensions.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/api-extensions.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,22 +6,15 @@
<title>JCR API Extensions</title>
- <section>
- <title>"Lazy" child nodes iteration</title>
-
- <section>
- <title>Concept</title>
-
<para>eXo JCR implementation offers new extended feature beyond JCR
- specification. Sometimes it happens that one JCR Node has hundreds or
+ specification. Sometimes one JCR Node has hundreds or
even thousands of child nodes. This situation is highly not recommended
- for content repository data storage, but some times it occurs. JCR Team
+ for content repository data storage, but sometimes it occurs. JCR Team
is pleased to announce new feature that will help to have a deal with
huge child lists. They can be iterated in a "lazy" manner now giving
improvement in term of performance and RAM usage.</para>
- </section>
- <section>
+ <section id="JCR.APIExtensions.API_and_Usage">
<title>API and usage</title>
<para>Lazy child nodes iteration feature is accessible via extended
@@ -60,7 +53,7 @@
to be used as a production solution.</para>
</section>
- <section>
+ <section id="JCR.APIExtensions.Configuration">
<title>Configuration</title>
<para>In order to enable add the
@@ -87,7 +80,7 @@
size.</para>
</section>
- <section>
+ <section id="JCR.APIExtensions.Implementation_notices">
<title>Implementation notices</title>
<para>Current "lazy" child nodes iterator supports caching, when pages
@@ -102,5 +95,4 @@
numerous conditions and should not be used as a feature, it more likely
implementation specific issue typical for "lazy-pattern".</para>
</section>
- </section>
</chapter>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/backup-client.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/backup-client.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/backup-client.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -25,9 +25,6 @@
requests.</para>
</highlights>
- <section>
- <title>Introduction</title>
-
<para>The service
org.exoplatform.services.jcr.ext.backup.server.HTTPBackupAgent is
REST-based front-end to service
@@ -36,7 +33,6 @@
of current or completed backup/restore, etc.</para>
<para>The backup client is http client for HTTPBackupAgent.</para>
- </section>
<section>
<title>HTTPBackupAgent</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/use-external-backup-tool.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/use-external-backup-tool.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/use-external-backup-tool.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -4,13 +4,11 @@
<chapter id="JCR.SearchIndexBackup">
<?dbhtml filename="ch-search-index-backup.html"?>
- <title>Use external backup tool</title>
-
- <section>
+ <section id="JCR.SearchIndexBackup.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
+ value storage, the repository should be suspended. It means all working
threads are suspended until resume operation performed. Index will be
flushed.</para>
@@ -36,7 +34,7 @@
suspended, check console to see stacktraces.</para>
</section>
- <section>
+ <section id="JCR.SearchIndexBackup.Backup">
<title>Backup</title>
<para>Now we can backup content manually or using third part software. We
@@ -57,7 +55,7 @@
</itemizedlist>
</section>
- <section>
+ <section id="JCR.SearchIndexBackup.Repository_resuming">
<title>Repository resuming</title>
<para>Once backup is done need to invoke resume() operation to switch
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/cluster-config.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/cluster-config.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/cluster-config.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -7,7 +7,7 @@
<title>Configuring JBoss AS with eXo JCR in cluster</title>
- <section>
+ <section id="JCR.ClusterConfig.Launching_Cluster">
<title>Launching Cluster</title>
<section>
@@ -166,7 +166,7 @@
</section>
</section>
- <section>
+ <section id="JCR.ClusterConfig.Requirements">
<title>Requirements</title>
<section>
@@ -273,8 +273,8 @@
</section>
</section>
- <section>
- <title>How properly stop the node</title>
+ <section id="JCR.ClusterConfig.How_to_stop_the_node_properly">
+ <title>How to stop the node properly</title>
<para>To be sure that all transactions are over and JCR is in consistent
state after stopping node, you need to follow next steps:</para>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-advantages.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-advantages.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-advantages.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,8 +6,8 @@
<title>Advantages of eXo JCR</title>
- <section>
- <title>Advantages for application developers:</title>
+ <section id="JCR.AdvantagesOfeXoJCR.Advantages_for_application_developers">
+ <title>Advantages for application developers</title>
<itemizedlist>
<listitem>
@@ -40,7 +40,7 @@
</mediaobject>
</section>
- <section>
+ <section id="JCR.AdvantagesOfeXoJCR.Advantages_for_managers">
<title>Advantages for managers</title>
<itemizedlist>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-compatibility-levels.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-compatibility-levels.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-compatibility-levels.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,17 +6,14 @@
<title>Compatibility Levels</title>
- <section>
- <title>Introduction</title>
-
<para>The Java Content Repository specification JSR-170 has been split
- into two compliance levels as well as a set of optional features. Level 1
- defines a read-only repository, level 2 defines methods for writing
+ into two compliance levels as well as a set of optional features.</para>
+ <para>Level 1 defines a read-only repository.</para>
+ <para>Level 2 defines methods for writing
content and bidirectional interaction with the repository.</para>
<para>eXo JCR supports JSR-170 level 1 and level 2 and all optional
features. The recent JSR-283 is not yet supported.</para>
- </section>
<section>
<title>Level 1</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-exo-implementation.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-exo-implementation.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-exo-implementation.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -1,7 +1,8 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- This document was created with Syntext Serna Free. --><!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
<chapter id="JCR.eXoImplementation">
-<?dbhtml filename="ch-jcr-exo-implementation.html"?> <title>eXo JCR Implementation</title>
+<?dbhtml filename="ch-jcr-exo-implementation.html"?>
+ <title>eXo JCR Implementation</title>
<section>
<title>Related Documents</title>
<para>Access Control Configuration, Export Import Implementation, External
@@ -10,7 +11,7 @@
Repository container life cycle, Workspace, Persistence Storage Workspace,
SimpleDB storage</para>
</section>
- <section>
+ <section id="JCR.eXoImplementation.How_it_works">
<title>How it works</title>
<para>eXo Repository Service is a standard eXo service and is a registered
IoC component, i.e. can be deployed in some eXo Containers (see <link linkend="JCR.eXoJCRconfiguration.RepositoryConfiguration">Service configuration</link> for details). The relationships between components
@@ -56,7 +57,7 @@
</listitem>
</itemizedlist>
</section>
- <section>
+ <section id="JCR.eXoImplementation.Workspace_Data_Model">
<title>Workspace Data Model</title>
<para>The following diagram explains which components of eXo JCR
implementation are used in a data flow to perform operations specified in
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-extensions.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-extensions.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-extensions.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -4,9 +4,6 @@
<chapter id="JCR.Extensions">
<?dbhtml filename="ch-jcr-extensions.html"?>
- <title>JCR Extensions</title>
-
- <section>
<title>JCR Service Extensions</title>
<section>
@@ -107,15 +104,12 @@
already assigned NodeType(s) of the current node (can be both primary
and mixin).</para>
- <para><emphasis role="bold">NOTE:</emphasis> the list of fields can be
- extended.</para>
+ <note><para> The list of fields can be extended.</para></note>
- <para><emphasis role="bold">NOTE2:</emphasis> no spaces between list
- elements.</para>
+ <note><para> No spaces between list elements.</para></note>
- <para><emphasis role="bold">NOTE3:</emphasis> <emphasis
- role="bold">isDeep=false</emphasis> means <emphasis role="bold">node,
- node properties and child nodes</emphasis>.</para>
+ <note><para> <emphasis role="bold">isDeep=false</emphasis> means <emphasis role="bold">node,
+ node properties and child nodes</emphasis>.</para></note>
<para>The list of supported Event names: <emphasis role="bold">addNode,
addProperty, changeProperty, removeProperty, removeNode, addMixin,
@@ -154,7 +148,6 @@
</component-plugins>
</component></programlisting>
</section>
- </section>
<section>
<title>Related Pages</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-usage.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-usage.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/jcr-usage.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,6 @@
<title>Using JCR</title>
- <section>
- <title>1 Using eXo JCR in an application</title>
-
<section>
<title>Obtaining a Repository object</title>
@@ -94,7 +91,6 @@
</listitem>
</itemizedlist></para>
</section>
- </section>
<section>
<title>JCR Application practices</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetype-registration.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetype-registration.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetype-registration.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -383,8 +383,8 @@
<section>
<title>Removing node type</title>
<note>
- <para>Node type is only possibly removed when the repository does not
- contain this node type.</para>
+ <para>Node type is possible to remove only when the repository does not
+ contain nodes of this type.</para>
</note>
<programlisting language="java">nodeTypeManager.unregisterNodeType("myNodeType");</programlisting>
</section>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetypes-and-namespaces.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetypes-and-namespaces.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/concepts/nodetypes-and-namespaces.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,16 +6,12 @@
<title>Node Types and Namespaces</title>
- <section>
- <title>Introduction</title>
-
<para>Support of node types and namespaces is required by the JSR-170
specification. Beyond the methods required by the specification, eXo JCR
has its own API extension for the <link
linkend="JCR.NodeTypeRegistration">Node type registration</link> as well
as the ability to declaratively define node types in the Repository at the
start-up time.</para>
- </section>
<section>
<title>Node Types definition</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/configuration-persister.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/configuration-persister.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/configuration-persister.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -5,8 +5,10 @@
<?dbhtml filename="ch-jcr-configuration-persister.html"?>
<title>JCR Configuration persister</title>
+ <para>eXo JCR allows using <emphasis>persister</emphasis> to store configuration. In this chapter, you will understand how to use and configure
+ eXo JCR persister.</para>
- <section>
+ <section id="JCR.ConfigurationPersister.Idea">
<title>Idea</title>
<para>JCR Repository Service uses
@@ -36,7 +38,7 @@
which allows to store the configuration in different locations.</para>
</section>
- <section>
+ <section id="JCR.ConfigurationPersister.Usage">
<title>Usage</title>
<para>On startup <classname>RepositoryServiceConfiguration</classname>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/exo-jcr-configuration.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/exo-jcr-configuration.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/exo-jcr-configuration.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,6 +6,8 @@
<title>eXo JCR configuration</title>
+ <para>This chapter provides you the knowledge about eXo JCR configuration in details, including the basic and advanced configuration.</para>
+
<section>
<title>Related documents</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/external-value-storages.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/external-value-storages.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/external-value-storages.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,6 @@
<title>External Value Storages</title>
- <section>
- <title>Introduction</title>
-
<para>By default JCR Values are stored in the Workspace Data container
along with the JCR structure (i.e. Nodes and Properties). eXo JCR offers
an additional option of storing JCR Values separately from Workspace Data
@@ -23,7 +20,6 @@
application on Amazon EC2 - the S3 option may be interesting for
architecture. Simple 'flat' storage is good in speed of creation/deletion
of values, it might be a compromise for a small storages.</para>
- </section>
<section>
<title>Tree File Value Storage</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/jdbc-data-container-config.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/jdbc-data-container-config.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/jdbc-data-container-config.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,10 +6,7 @@
<title>JDBC Data Container Config</title>
- <section>
- <title>Introduction</title>
-
- <para>eXo JCR persistent data container can work in two configuration
+ <para>eXo JCR persistent data container can work in two configuration
modes:<itemizedlist>
<listitem>
<para><phrase>Multi-database</phrase>: One database for each
@@ -248,7 +245,6 @@
<para>Read more about <link linkend="JCR.eXoJCRconfiguration">Repository
configuration</link>.</para>
- </section>
<section>
<title>General recommendations for database configuration</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multi-db-schema-support.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multi-db-schema-support.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multi-db-schema-support.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -7,19 +7,15 @@
<title>How to host several JCR instances on the same database
instance?</title>
- <section>
- <title>Concepts</title>
-
- <para>Frequently a single database instance must be shared by several
+ <para>Frequently, a single database instance must be shared by several
other applications. But some of our customers have also asked for a way to
host several JCR instances in the same database instance. To fulfill this
need, we had to review our queries and scope them to the current schema;
- it’s now possible to have one JCR instance per DB schema instead of per DB
+ it is now possible to have one JCR instance per DB schema instead of per DB
instance. To benefit of the work done for this feature you will need to
- apply the configuration changes described in the next sections. </para>
- </section>
+ apply the configuration changes described below.</para>
- <section>
+ <section id="JCR.MultiDBSchemaSupport.LockManager_Config">
<title>LockManager configuration</title>
<para>To enable this feature you need to replace
@@ -70,7 +66,7 @@
url="http://svn.jboss.org/repos/exo-jcr/jcr/trunk/exo.jcr.component.core/src/t...">svn</ulink>.</para>
</section>
- <section>
+ <section id="JCR.MultiDBSchemaSupport.HibernateService_Configuration">
<title>HibernateService configuration</title>
<para>If you use HibernateService for JDBC connections management you will
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multilanguage-support.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multilanguage-support.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/multilanguage-support.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -4,13 +4,11 @@
<chapter id="JCRMultilanguageSupport">
<?dbhtml filename="ch-multilanguage-support.html"?>
- <title>Multilanguage support in eXo JCR RDB backend</title>
+ <title>Multi-language support in eXo JCR RDB backend</title>
- <section>
- <title>Introduction</title>
<para>Whenever relational database is used to store multilingual text data
- of eXo Java Content Repository, we need to adapt configuration in order to
+ of eXo Java Content Repository, it is necessary to adapt configuration in order to
support UTF-8 encoding. Here is a short HOWTO instruction for several
supported RDBMS with examples.</para>
@@ -22,7 +20,6 @@
configured via <classname>InitialContextInitializer</classname>
component.</para>
</note>
- </section>
<section>
<title>Oracle</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/rest-services-on-groovy.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/rest-services-on-groovy.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/rest-services-on-groovy.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,16 +6,12 @@
<title>REST Services on Groovy</title>
- <section>
- <title>Concept</title>
-
<para>Starting from version 1.9, JCR Service supports REST services
creation on <ulink url="http://groovy.codehaus.org">Groovy
script</ulink>.</para>
<para>The feature bases on <link linkend="WS.RestFramework">RESTful
framework</link> and uses ResourceContainer concept.</para>
- </section>
<section>
<title>Usage</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/search-configuration.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/search-configuration.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/search-configuration.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -5,8 +5,9 @@
<?dbhtml filename="ch-search-configuration.html"?>
<title>Search Configuration</title>
+ <para>Search is an important function in eXo JCR, so it is very necessary for you to know how to configure the eXo JCR Search tool.</para>
- <section>
+ <section id="JCR.SearchConfiguration.XMLConfig">
<title>XML Configuration</title>
<para>JCR index configuration. You can find this file here:
@@ -36,7 +37,7 @@
</repository-service></programlisting>
</section>
- <section>
+ <section id="JCR.SearchConfiguration.Config_Parameters">
<title>Configuration parameters</title>
<table>
@@ -371,7 +372,7 @@
</table>
</section>
- <section>
+ <section id="JCR.SearchConfiguration.Global_Search_Index">
<title>Global Search Index</title>
<section>
@@ -518,7 +519,7 @@
</section>
</section>
- <section>
+ <section id="JCR.SearchConfiguration.Indexing_Adjustments">
<title>Indexing Adjustments</title>
<section>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container-howto.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container-howto.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container-howto.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,8 @@
<?dbhtml filename="ch-data-container-howto.html"?>
- <section id="ShortintrointoWorkspacedatacontainerimplementationpractices">
- <title>Short intro about Workspace data container implementation
- practices:</title>
+ <para>To implement Workspace data container, you need to do the following:
+ </para>
<orderedlist>
<listitem>
@@ -17,9 +16,8 @@
</listitem>
<listitem>
- <para>Start new implementation project pom.xml with
- org.exoplatform.jcr parent. (optional, but will makes the development
- easy)</para>
+ <para>Start a new implementation project pom.xml with
+ <emphasis>org.exoplatform.jcr</emphasis> parent. It is not required, but will ease the development.</para>
</listitem>
<listitem>
@@ -110,7 +108,6 @@
</programlisting>
<para>Container can be configured by using set properties.</para>
- </section>
<section id="Valuestorageusagenotes">
<title>Notes on Value storage usage:</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/data-container.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,25 +6,23 @@
<title>JCR Workspace Data Container (architecture contract)</title>
- <section>
- <title>Goals</title>
+ <para>The goals of this chapter are:</para>
<itemizedlist>
<listitem>
- <para>Cover the requirements on Workspace Data Container
+ <para>Coverage of the requirements of Workspace Data Container
implementation</para>
</listitem>
<listitem>
- <para>Describe container life cycle</para>
+ <para>Description of container life cycle</para>
</listitem>
<listitem>
- <para>Describe relations between container and high-level
+ <para>Description relations between container and high-level
DataManagers</para>
</listitem>
</itemizedlist>
- </section>
<section>
<title>Concepts</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/db-cleaner-service.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/db-cleaner-service.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/db-cleaner-service.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,19 +6,22 @@
<title>DBCleanService</title>
- <section>
- <title>Description</title>
+ <para>It is a special service for data removal from database. The chapter
+ shortly describes the principles of work <emphasis>DBCleaner</emphasis> under all
+ databases.</para>
<para>It is special service for data removal from database. The article
shortly describes the principles of work DBCleaner under all
databases</para>
- <note>
- <para>Code that invokes methods of DBCleanService must have
- JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION permission;</para>
+ <section id="JCR.DBCleanerService.Methods_of_DBCleanerService">
+ <title>Methods of DBCleanerService </title>
+ <note>
+ <para>Code that invokes the methods of DBCleanService must have
+ JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION permission.</para>
</note>
- <para>There are several methods of DBCleanerService:</para>
+ <para>There are several methods of <emphasis>DBCleanerService</emphasis> :</para>
<table>
<title>API</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/intro.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/intro.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/intro.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,6 @@
<title>Introduction in eXoJCR</title>
- <section>
- <title>JCR (JSR-170) API main concepts</title>
-
<para>Java Content Repository API as well as other Java language related
standards is created within the Java Community Process http://jcp.org/ as
a result of collaboration of an expert group and the Java community. It is
@@ -67,5 +64,4 @@
repository configuration, rather than part of the application
programming task.</para>
</section>
- </section>
</chapter>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,12 +6,15 @@
<title>JBoss Cache configuration</title>
- <section>
+ <para>This chapter will show you how to use and configure Jboss Cache in the clustered environment.
+ Also, you will know how to use a template-based configuration offered by eXo JCR for JBoss Cache instances.</para>
+
+ <section id="JCR.JBossCacheConfigurationTemplates.JBoss_Cache_Config_for_Indexer">
<title>JBoss cache configuration for indexer, lock manager and data
container</title>
<para>Each mentioned components uses instances of JBoss Cache product for
- caching in clustered environment. So every element has it's own transport
+ caching in clustered environment. So every element has its own transport
and has to be configured in a proper way. As usual, workspaces have
similar configuration but with different cluster-names and may-be some
other parameters. The simplest way to configure them is to define their
@@ -43,7 +46,7 @@
...</programlisting>
</section>
- <section>
+ <section id="JCR.JBossCacheConfigurationTemplates.Jboss_Configuration">
<title>JGroups configuration</title>
<para>JGroups is used by JBoss Cache for network communications and
@@ -78,7 +81,7 @@
<property name="jgroups-multiplexer-stack" value="false" /></programlisting>
</section>
- <section>
+ <section id="JCR.JBossCacheConfigurationTemplates.Allow_to_share_JBOSS_Cache_Instances">
<title>Allow to share JBoss Cache instances</title>
<para>A JBoss Cache instance is quite resource consuming and by default we
@@ -108,7 +111,7 @@
defined.</para>
</section>
- <section>
+ <section id="JCR.JBossCacheConfigurationTemplates.Shipped_Jboss_Cache_Config_template">
<title>Shipped JBoss Cache configuration templates</title>
<para>eXo JCR implementation is shipped with ready-to-use JBoss Cache
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbossts-transaction-service.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbossts-transaction-service.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbossts-transaction-service.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,20 +6,16 @@
<title>JBossTransactionsService</title>
- <section>
- <title>Introduction</title>
-
<para>JBossTransactionsService implements eXo <link
linkend="Kernel.TransactionService">TransactionService</link> and provides
access to <ulink url="http://www.jboss.org/jbosstm/">JBoss Transaction
Service (JBossTS)</ulink> JTA implementation via eXo container
dependency.</para>
- <para>TransactionService used in JCR cache
+ <para>TransactionService is used in JCR cache
<emphasis>org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache</emphasis>
implementaion. See <link linkend="JCR.ClusterConfig">Cluster
configuration</link> for example.</para>
- </section>
<section>
<title>Configuration</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jca.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jca.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jca.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,6 @@
<title>The <emphasis>JCA</emphasis> Resource Adapter</title>
- <section>
- <title>Overview</title>
-
<para>eXo JCR supports <emphasis>J2EE Connector Architecture</emphasis>
1.5, thus If you would like to delegate the JCR Session lifecycle to your
application server, you can use the JCA Resource Adapter for eXo JCR if
@@ -16,7 +13,6 @@
Transaction, in other words you cannot use it for local transactions.
Since the JCR Sessions have not been designed to be shareable, the session
pooling is simply not covered by the adapter.</para>
- </section>
<section>
<title>The <emphasis>SessionFactory</emphasis></title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -7,13 +7,10 @@
<title>LockManager configuration</title>
- <section>
- <title>Introduction</title>
-
<para>What LockManager does?</para>
<para>In general, LockManager stores Lock objects, so it can give a Lock
- object or can release it, etc.</para>
+ object or can release it.</para>
<para>Also, LockManager is responsible for removing Locks that live too
long. This parameter may be configured with "time-out" property.</para>
@@ -48,7 +45,6 @@
</lock-manager>
...
</workspace></programlisting>
- </section>
<section>
<title>LockManagerImpl</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/acl-ext.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/acl-ext.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/acl-ext.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,19 +6,8 @@
<title>Access Control Extension</title>
- <section>
- <title>Prerequisites</title>
+ <para>An extended Access Control system consists of:</para>
- <para>This is an extension of eXo JCR Access Control features. Please read
- <link linkend="JCR.AccessControl">Access Control</link> and <link
- linkend="JCR.Extensions">JCR Extensions</link> topics first.</para>
- </section>
-
- <section>
- <title>Overview</title>
-
- <para>An extended Access Control system consists of:</para>
-
<itemizedlist>
<listitem>
<para>Specifically configured custom <emphasis
@@ -42,6 +31,13 @@
performed and the current eXo Container</para>
</listitem>
</itemizedlist>
+
+ <section>
+ <title>Prerequisites</title>
+
+ <para>This is an extension of eXo JCR Access Control features. Please read
+ <link linkend="JCR.AccessControl">Access Control</link> and <link
+ linkend="JCR.Extensions">JCR Extensions</link> topics first.</para>
</section>
<section>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/binary-values-processing.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/binary-values-processing.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/other/binary-values-processing.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -5,8 +5,11 @@
<?dbhtml filename="ch-binary-values-processing.html"?>
<title>Binary Values Processing</title>
+ <para>Processing binary large object (BLOB) is very important in eXo JCR, so this chapter focuses on explaining how to
+ do it.
+ </para>
- <section>
+ <section id="JCR.BinaryValuesProcessing.Configuration">
<title>Configuration</title>
<para>Binary large object (BLOB) properties can be stored in two ways in
@@ -41,7 +44,7 @@
</note>
</section>
- <section>
+ <section id="JCR.BinaryValuesProcessing.Usage">
<title>Usage</title>
<para>In both of the cases, a developer can set/update the binary Property
@@ -139,7 +142,7 @@
node.setProperty("BinData", extValue);</programlisting>
</section>
- <section>
+ <section id="JCR.BinaryValuesProcessing.Value_implementations">
<title>Value implementations</title>
<mediaobject>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/performance-tuning-guide.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/performance-tuning-guide.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/performance-tuning-guide.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,15 +6,10 @@
<title>JCR Performance Tuning Guide</title>
- <section>
- <title>Introduction</title>
+ <para>This chapter will show you possible ways of improving JCR</para>
- <para>This guide will show you possible ways of improving JCR
- performance.</para>
-
<para>It is intended to GateIn Administrators and those who wants to use
JCR features.</para>
- </section>
<section>
<title>JCR Performance and Scalability</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/ftp.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/ftp.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/ftp.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,17 +6,13 @@
<title>FTP</title>
- <section>
- <title>Introdution</title>
-
<para>The JCR-FTP Server represents the standard eXo service, operates as
an FTP server with an access to a content stored in JCR repositories in
the form of <emphasis role="bold">nt:file/nt:folder</emphasis> nodes or
their successors. The client of an executed Server can be any FTP client.
The FTP server is supported by a standard configuration which can be
changed as required.</para>
- </section>
-
+
<section>
<title>Configuration Parameters</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/webdav.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/webdav.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/protocols/webdav.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -7,20 +7,6 @@
<title>WebDAV</title>
- <section>
- <title>Related documents</title>
-
- <itemizedlist>
- <listitem>
- <para><link linkend="JCR.LinkProducerService">Link
- Producer</link></para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section>
- <title>Introduction</title>
-
<para>The WebDAV protocol enables you to use the third party tools to
communicate with hierarchical content servers via HTTP. It is possible to
add and remove documents or a set of documents from a path on the server.
@@ -69,8 +55,21 @@
org.exoplatform.services.security.jaas.BasicLoginModule required domain=ecm;
};</programlisting>
</note>
- </section>
+ <para>
+ <emphasis role="bold">Related documents</emphasis>
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <link linkend="JCR.LinkProducerService">Link
+ Producer
+ </link>
+ </para>
+ </listitem>
+ </itemizedlist>
+
<section>
<title>Configuration</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -5,8 +5,9 @@
<?dbhtml filename="ch-query-handler-config.html"?>
<title>QueryHandler configuration</title>
+ <para>This chapter shows you how to configure <emphasis>QueryHandler</emphasis>: <link linkend="JCR.QueryHandlerConfiguration.Indexing_in_clustered_environment">Indexing in clustered environment</link>.</para>
- <section>
+ <section id="JCR.QueryHandlerConfiguration.Indexing_in_clustered_environment">
<title>Indexing in clustered environment</title>
<para>JCR offers multiple indexing strategies. They include both for
@@ -85,7 +86,7 @@
Configuration</link>.</para>
</section>
- <section>
+ <section id="JCR.QueryHandlerConfiguration.Configuration">
<title>Configuration</title>
<section>
@@ -422,7 +423,7 @@
</section>
</section>
- <section>
+ <section id="JCR.QueryHandlerConfiguration.Asynchronous_reindexing">
<title>Asynchronous reindexing</title>
<para>Managing a big set of data using JCR in production environment
@@ -538,7 +539,7 @@
</section>
</section>
- <section>
+ <section id="JCR.QueryHandlerConfiguration.Advanced_tuning">
<title>Advanced tuning</title>
<section>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-check-controller.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-check-controller.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-check-controller.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,6 @@
<title>Checking repository integrity and consistency</title>
- <section>
- <title>JMX-based consistency tool</title>
-
<para>Production and any other system may have faults some day. They may
be caused by hardware problems, human faults, software errors during
updates and many other circumstances. It is important to check integrity
@@ -136,7 +133,6 @@
<para>All tool activities are stored in file, which can be found in app
directory by name <code>report-<repository
name>-dd-MMM-yy-HH-mm.txt</code>.</para>
- </section>
<section>
<title>Recommendations on how to fix corrupted JCR</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-creation-service.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-creation-service.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/repository-creation-service.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,13 +6,9 @@
<title>RepositoryCreationService</title>
- <section>
- <title>Intro</title>
-
- <para>RepositoryCreationService is the service for creation repositories
- in runtime. The service can be used in standalone or cluster
+ <para><emphasis>RepositoryCreationService</emphasis> is the service which is used to create repositories
+ in runtime. The service can be used in a standalone or cluster
environment.</para>
- </section>
<section>
<title>Dependencies</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/fulltext-search-and-settings.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/fulltext-search-and-settings.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/fulltext-search-and-settings.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,7 +6,7 @@
<title>Fulltext Search And Affecting Settings</title>
- <section>
+ <section id="JCR.FulltextSearchAndSettings.Property_content_indexing">
<title>Property content indexing</title>
<para>Each property of a node (if it is indexable) is processed with
@@ -15,7 +15,7 @@
properties.</para>
</section>
- <section>
+ <section id="JCR.FulltextSearchAndSettings.Lucene_Analyzers">
<title>Lucene Analyzers</title>
<para>The sense of analyzers is to transform all strings stored in the
@@ -146,7 +146,7 @@
linkend="JCR.SearchConfiguration">Search Configuration</link></para>
</section>
- <section>
+ <section id="JCR.FulltextSearchAndSettings.How_different_properties_indexed">
<title>How are different properties indexed?</title>
<para>Different properties are indexed in different ways, this affects to
@@ -203,7 +203,7 @@
<programlisting>SELECT * FROM nt:resource WHERE CONTAINS( * , 'some string')</programlisting>
</section>
- <section>
+ <section id="JCR.FulltextSearchAndSettings.Fulltext_search_query_examples">
<title>Fulltext search query examples</title>
<itemizedlist>
@@ -229,7 +229,7 @@
</itemizedlist>
</section>
- <section>
+ <section id="JCR.FulltextSearchAndSettings.Different_analyzers_in_action">
<title>Different analyzers in action</title>
<para>First of all, we will fill repository by nodes with mixin type
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/jcr-query-usecases.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/jcr-query-usecases.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/jcr-query-usecases.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,14 +6,10 @@
<title>JCR Query Usecases</title>
- <section>
- <title>Intro</title>
-
<para>JCR supports two query languages - JCR and XPath. A query, whether
XPath or SQL, specifies a subset of nodes within a workspace, called the
result set. The result set constitutes all the nodes in the workspace that
meet the constraints stated in the query.</para>
- </section>
<section>
<title>Query Lifecycle</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/searching-repository-content.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/searching-repository-content.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/searching/searching-repository-content.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,14 +6,10 @@
<title>Searching Repository Content</title>
- <section>
- <title>Introduction</title>
-
- <para>You can find the JCR configuration file here:
- .../portal/WEB-INF/conf/jcr/repository-configuration.xml. Please read also
+ <para>You can find the JCR configuration file at
+ <emphasis>.../portal/WEB-INF/conf/jcr/repository-configuration.xml</emphasis>. Please read also
<link linkend="JCR.SearchConfiguration">Search Configuration</link> for
more information about index configuration.</para>
- </section>
<section>
<title>Bi-directional RangeIterator (since 1.9)</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/statistics.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/statistics.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/statistics.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -5,8 +5,9 @@
<?dbhtml filename="ch-statistics.html"?>
<title>eXo JCR statistics</title>
-
- <section>
+ <para>This chapter will show you how to get and manage all statistics provided by eXo JCR.</para>
+
+ <section id="JCR.Statistics.Database_access_layer">
<title>Statistics on the Database Access Layer</title>
<para>In order to have a better idea of the time spent into the database
@@ -49,7 +50,7 @@
</listitem>
</itemizedlist>
- <para>Those figures are also available globaly for all the methods which
+ <para>Those figures are also available globally for all the methods which
gives us the global behavior of this layer.</para>
<para>If you want to enable the statistics, you just need to set the JVM
@@ -221,7 +222,7 @@
your eXo JCR to better fit your requirements.</para>
<para>In order to allow you to specify the configuration which part of eXo
- JCR needs to be monitored whithout applying any changes in your code
+ JCR needs to be monitored without applying any changes in your code
and/or building anything, we choose to rely on the Load-time Weaving
proposed by AspectJ.</para>
@@ -252,7 +253,7 @@
command line, for more details please refer to <ulink
url="http://www.eclipse.org/aspectj/doc/released/devguide/ltw-configuration.html">http://www.eclipse.org/aspectj/doc/released/devguide/ltw-configuration.html</ulink>.</para>
- <para>By default, the configuration will collect statistcs on all the
+ <para>By default, the configuration will collect statistics on all the
methods of the internal interfaces
<emphasis>org.exoplatform.services.jcr.core.ExtendedSession</emphasis> and
<emphasis>org.exoplatform.services.jcr.core.ExtendedNode</emphasis>, and
@@ -286,7 +287,7 @@
</configuration></programlisting>
<para>The file content below is the content of
- <emphasis>META-INF/aop.xml</emphasis> that you will to need to modify to
+ <emphasis>META-INF/aop.xml</emphasis> that you will need to modify to
add and/or remove the full qualified name of the interfaces to monitor,
into the expression filter of the pointcut called
<emphasis>JCRAPIPointcut</emphasis>. As you can see below, by default only
@@ -326,7 +327,7 @@
JCR so it must be used with caution.</remark>
</section>
- <section>
+ <section id="JCR.Statistics.Statistics_Manager">
<title>Statistics Manager</title>
<para>The statistics manager manages all the statistics provided by eXo
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/transaction-manager-lookup.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/transaction-manager-lookup.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/transaction-manager-lookup.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,19 +6,16 @@
<title>TransactionManagerLookup</title>
- <section>
- <title>Configuration</title>
+ <para>JBossCache class is registered as an eXo container component in the
+ <emphasis>configuration.xml</emphasis> file. </para>
- <para>It's JBossCache class registered as eXo container component in
- configuration.xml file. </para>
-
<programlisting language="xml"> <component>
<key>org.jboss.cache.transaction.TransactionManagerLookup</key>
<type>org.jboss.cache.transaction.JBossStandaloneJTAManagerLookup</type>
</component></programlisting>
- <para>JBossStandaloneJTAManagerLookup used in standalone environment. Bur
- for Application Server environment use GenericTransactionManagerLookup.
+ <para><emphasis>JBossStandaloneJTAManagerLookup</emphasis> is used in a standalone environment, but
+ <emphasis>GenericTransactionManagerLookup</emphasis> is used in the Application Server environment.
</para>
- </section>
+
</chapter>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/how-to-extend-my-gatein-instance.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/how-to-extend-my-gatein-instance.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/how-to-extend-my-gatein-instance.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,19 +6,12 @@
<title>How to extend my GateIn instance?</title>
- <section>
- <title>Introduction</title>
-
- <section>
- <title>Overview</title>
-
- <para>Since GateIn beta 2, we added a set of features in order to
- customize a GateIn instance without modifying the GateIn binary, this
+ <para>Since GateIn beta 2, there are a set of features added to
+ customize a GateIn instance without modifying the GateIn binary. This
usecase will be called <emphasis>portal extension</emphasis> in this
documentation. Those features are also required to be able to launch
several portal instances at the same time, in "eXo terminology" that
means to have several "portal.war".</para>
- </section>
<section>
<title>Motivations</title>
@@ -48,7 +41,6 @@
help/enforce all the GateIn developers to follow the "good
practices".</para>
</section>
- </section>
<section>
<title>Prerequisites</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/managed-datasources-under-jboss-as.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/managed-datasources-under-jboss-as.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr-with-gtn/managed-datasources-under-jboss-as.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,8 +6,8 @@
<?dbhtml filename="ch-how-to-use-managed-datasource-under-jboss.html"?>
- <section>
- <title>Configurations Steps</title>
+ <para>This chapter will show you how to use AS Managed DataSource under JBoss AS.
+ </para>
<important>
<para>Checked under Gatein 3.1.0-GA Final</para>
@@ -99,5 +99,4 @@
<para>Running eXo after these configurations goes well.</para>
</section>
- </section>
</chapter>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -5,7 +5,9 @@
<?dbhtml filename="part-jcr.html"?>
<title>eXoJCR</title>
-
+ <para>eXo provides JCR implementation called eXo JCR.</para>
+ <para>This part will show you how to configure and use eXo JCR in GateIn and standalone.</para>
+
<xi:include href="jcr/intro.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
@@ -91,7 +93,7 @@
<xi:include href="jcr/transaction-manager-lookup.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
-
+
<xi:include href="jcr/ispn/ispn-integration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
@@ -109,8 +111,8 @@
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="jcr/searching/fulltext-search-and-settings.xml"
- xmlns:xi="http://www.w3.org/2001/XInclude" />
-
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
<!-- api extensions -->
<xi:include href="jcr/api-extensions.xml"
@@ -145,12 +147,12 @@
- <xi:include href="jcr/jta.xml"
- xmlns:xi="http://www.w3.org/2001/XInclude" />
-
- <xi:include href="jcr/jca.xml"
- xmlns:xi="http://www.w3.org/2001/XInclude" />
-
+ <xi:include href="jcr/jta.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="jcr/jca.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
<xi:include href="jcr/other/acl.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/cache.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/cache.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/cache.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,7 +6,10 @@
<title>eXo Cache</title>
- <section>
+ <para>
+ This chapter will provide you all the basic knowledge about eXo Cache, from basic concepts to advanced concepts, sample codes, and more.
+ </para>
+ <section id="Kernel.Cache.Basic_concepts">
<title>Basic concepts</title>
<para>All applications on the top of eXo JCR that need a cache, can rely
@@ -156,7 +159,7 @@
</table>
</section>
- <section>
+ <section id="Kernel.Cache.Advanced_concepts">
<title>Advanced concepts</title>
<section>
@@ -264,7 +267,7 @@
</section>
</section>
- <section>
+ <section id="Kernel.Cache.Extension">
<title>eXo Cache extension</title>
<para>In the previous versions of eXo kernel, it was quite complex to
@@ -314,7 +317,7 @@
</note>
</section>
- <section>
+ <section id="Kernel.Cache.eXo_Cache_based_Jobss_Cache">
<title>eXo Cache based on JBoss Cache</title>
<section>
@@ -1309,7 +1312,7 @@
</section>
</section>
- <section>
+ <section id="Kernel.Cache.Based_Infinispan">
<title>eXo Cache based on Infinispan</title>
<section>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,6 @@
<title>Container Configuration</title>
- <section>
- <title>Intro</title>
-
<para>eXo Portal uses PicoContainer, which implements the Inversion of
Control (IoC) design pattern. All eXo containers inherit from a
PicoContainer. There are mainly two eXo containers used, each of them can
@@ -23,8 +20,7 @@
<para>Confused? - You might be interested in the <link
linkend="Kernel.ServiceConfigurationforBeginners">Service Configuration
- for Beginners</link> article, which explains the basics.</para>
- </section>
+ for Beginners</link> chapter to understand the basics.</para>
<section id="Kernel.ContainerConfiguration.ConfigurationNamespace">
<title>Kernel configuration namespace</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/data-source-provider.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/data-source-provider.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/data-source-provider.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,14 +6,11 @@
<title>The data source provider</title>
- <section>
- <title>Description</title>
-
<para>The <emphasis>DataSourceProvider</emphasis> is a service used to
give access to a data source in an uniform manner in order to be able to
support data sources that are managed by the application server.</para>
- <para><table>
+ <table>
<title>List methods</title>
<tgroup cols="2">
@@ -38,8 +35,7 @@
</row>
</tbody>
</tgroup>
- </table></para>
- </section>
+ </table>
<section>
<title>Configuration</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/inversion-of-control.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/inversion-of-control.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/inversion-of-control.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,6 @@
<title>Inversion Of Control</title>
- <section>
- <title>Overview</title>
-
<para>The services are not responsible for the instantiation of the
components on which they depend.</para>
@@ -16,11 +13,11 @@
implementation of dependant services can be transparently
exchanged.</para>
- <para>This pattern has several names :</para>
+ <para>This pattern has several names:</para>
<itemizedlist>
<listitem>
- <para>Hollywood principle : "don't call me, I will call you"</para>
+ <para>Hollywood principle: "don't call me, I will call you"</para>
</listitem>
<listitem>
@@ -31,7 +28,6 @@
<para>Dependency injection</para>
</listitem>
</itemizedlist>
- </section>
<section>
<title>How</title>
@@ -50,7 +46,7 @@
<section>
<title>Injection</title>
- <para>There are two ways to inject a dependency :</para>
+ <para>There are two ways to inject a dependency:</para>
<para>Using a constructor:</para>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/jndi-naming.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/jndi-naming.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/jndi-naming.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -5,8 +5,9 @@
<?dbhtml filename="ch-jndi-naming.html"?>
<title>JNDI naming</title>
+ <para>This chapter provides you the basic knowledge about JNDI naming, such as, what it is, how it works and how it is used.</para>
- <section>
+ <section id="Kernel.JNDINaming.Prerequisites">
<title>Prerequisites</title>
<para>We need to configure JNDI environment properties and Reference
@@ -29,7 +30,7 @@
</itemizedlist></para>
</section>
- <section>
+ <section id="Kernel.JNDINaming.How_it_works">
<title>How it works</title>
<para>Make sure you understand the <ulink
@@ -77,7 +78,7 @@
<para>and others (see JNDI docs)</para>
</section>
- <section>
+ <section id="Kernel.JNDINaming.JNDI_ref_binding">
<title>JNDI reference binding</title>
<para>Another responsibility of Context Initializer
@@ -112,7 +113,7 @@
</section>
</section>
- <section>
+ <section id="Kernel.JNDINaming.Configuration_examples">
<title>Configuration examples</title>
<para>The <envar>InitialContextInitializer</envar> configuration
@@ -187,7 +188,7 @@
</component-plugin></programlisting>
</section>
- <section>
+ <section id="Kernel.JNDINaming.Recommendations_for_application_developers">
<title>Recommendations for Application Developers</title>
<para><itemizedlist>
@@ -203,7 +204,7 @@
</itemizedlist></para>
</section>
- <section>
+ <section id="Kernel.JNDINaming.InitialContextInitializer">
<title>InitialContextInitializer API</title>
<para><envar>InitialContextInitalizer</envar> also provides feature of
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/job-scheduler-service.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/job-scheduler-service.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/job-scheduler-service.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -2,11 +2,8 @@
<!-- This document was created with Syntext Serna Free. --><!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
<chapter id="Kernel.JobSchedulerService">
<?dbhtml filename="ch-job-scheduler-service.html"?> <title>Job Scheduler Service</title>
+ <para><emphasis role="bold">Job scheduler</emphasis> defines a job to execute a given number of times during a given period. It is a service that is in charge of unattended background executions, commonly known for historical reasons as batch processing. It is used to create and run jobs automatically and continuously, to schedule event-driven jobs and reports.</para>
<section>
- <title>What is Job Scheduler?</title>
- <para><emphasis role="bold">Job scheduler</emphasis> defines a job to execute a given number of times during a given period. It is a service that is in charge of unattended background executions, commonly known for historical reasons as batch processing. It is used to create and run jobs automatically and continuously, to schedule event-driven jobs and reports.</para>
- </section>
- <section>
<title>Where is Job Scheduler Service used in eXo Products?</title>
<para>Job Scheduler Service is widely used in many eXo products such as Social, DMS, WCM, eXo Knowledge and eXo Collaboration.</para>
<para>In eXo products, Job Schedulers are used to do some tasks as below:</para>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/kernel.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/kernel.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/kernel.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="Kernel">
- <?dbhtml filename="ch-kernel.html"?>
-
- <title>eXo Kernel</title>
-
- <section>
- <title>eXo Kernel introduction</title>
-
- <para>eXo Kernel is the basis of all eXo platform products and modules.
- Any component available in eXo Platform is managed by the Exo Container,
- our micro container responsible for gluing the services through dependency
- injection</para>
-
- <para>Therefore, each product is composed of a set of services and plugins
- registered to the container and configured by XML configuration
- files.</para>
-
- <para>The Kernel module also contains a set of very low level
- services.</para>
- </section>
-</chapter>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/listener-service.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/listener-service.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/listener-service.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,6 @@
<title>ListenerService</title>
- <section>
- <title>Asynchronous Event Broadcast</title>
-
<para>Basicaly, ListenerService used to store Listeners and broadcast
events to them.</para>
@@ -16,7 +13,7 @@
destination listeners and executes event on those listeners.</para>
<para>But, some events may take a lot of time, so idea to make event
- processing asynchronous is usefull.</para>
+ processing asynchronous is useful.</para>
<blockquote>
What do I need to make my listener asynchronous?
@@ -53,5 +50,4 @@
</init-params>
</component></programlisting>
- </section>
</chapter>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/logging.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/logging.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/logging.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,16 +6,13 @@
<title>Logs configuration</title>
- <section>
- <title>Introdution</title>
-
<para>In order to accommodate to the different target runtime where it can
be deployed, eXo is capable of leveraging several logging systems. eXo
lets you choose the underlying logging engine to use and even configure
that engine (as a quick alternative to doing it directly in your runtime
environment).</para>
- <para>The currently supported logging engines are : <itemizedlist>
+ <para>The currently supported logging engines are: <itemizedlist>
<listitem>
<para>Apache Log4J</para>
</listitem>
@@ -29,7 +26,6 @@
abstraction)</para>
</listitem>
</itemizedlist></para>
- </section>
<section>
<title>Logs configuration initializer</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/manageability.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/manageability.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/manageability.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,6 @@
<title>Manageability</title>
- <section>
- <title>Introduction</title>
-
<para>The kernel has a framework for exposing a management view of the
various sub systems of the platform. The management view is a lose term
for defining how we can access relevant information about the system and
@@ -20,7 +17,6 @@
framework is still in use but is deprecated in favor of the new framework
as it is less tested and less efficient. It will be removed by
sanitization in the future.</para>
- </section>
<section>
<title>Managed framework API</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/rpc-service.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/rpc-service.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/rpc-service.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,15 +6,12 @@
<title>RPC Service</title>
- <section>
- <title>Description</title>
-
<para>The <emphasis>RPCService</emphasis> is only needed in a cluser
environment, it is used to communicate with the other cluster nodes. It
allows to execute a command on all the cluster nodes or on the coordinator
i.e. the oldest node in the cluster. The <emphasis>RPCService</emphasis>
- has been designed to rely on JGroups capabilites and should not be used
- for heavy load. It can be used for example to notify other nodes that
+ has been designed to rely on JGroups capabilities and should not be used
+ for heavy load. It can be used, for example, to notify other nodes that
something happened or to collect some information from the other
nodes.</para>
@@ -112,7 +109,7 @@
}
}</programlisting>
- <para>In the previous example, We register the command
+ <para>In the previous example, we register the command
<emphasis>sayHelloCommand</emphasis> in the constructor of
<emphasis>MyService</emphasis> and we execute this command in the start
method.</para>
@@ -122,7 +119,6 @@
<emphasis>PortalContainer</emphasis> in a portal mode and only one
<emphasis>RPCService</emphasis> instance in a standalone mode</para>
</note>
- </section>
<section>
<title>Configuration</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-for-beginners.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-for-beginners.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-for-beginners.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -5,6 +5,13 @@
<?dbhtml filename="ch-service-configuration-for-beginners.html"?>
<title>Service Configuration for Beginners</title>
+ <para>This chapter provides you the basic knowledge
+ about modes, services and containers. You will find out where the service
+ configuration files should be placed, and you will also see the overriding
+ mechanism of configurations. </para>
+ <para>Finally, you will understand how the container
+ creates the services one after the other and what <emphasis>Inversion of
+ Control</emphasis> really means.</para>
<para><emphasis role="bold">Related documents</emphasis></para>
@@ -26,17 +33,6 @@
</itemizedlist>
<section>
- <title>Objective</title>
-
- <para>We are going to talk about service configuration. You will learn
- about modes, services and containers, you will find out where the service
- configuration files have to be placed and you will also see the overriding
- mechanism of configurations. Finally you will understand how the container
- creates the services one after the other and what <emphasis>Inversion of
- Control</emphasis> really means.</para>
- </section>
-
- <section>
<title>Requirements</title>
<para>By reading this article you are already glancing at the heart of eXo
@@ -551,7 +547,7 @@
problems to be expected. That's easy.</para>
<para>But now look at <ulink
- url="https://anonsvn.jboss.org/repos/exo-jcr/core/trunk/exo.core.component.org...">https://anonsvn.jboss.org/repos/exo-jcr/core/trunk/exo.core.component.org...</ulink></para>
+ url="https://anonsvn.jboss.org/repos/exo-jcr/core/trunk/exo.core.component.org...">OrganizationServiceImpl.java</ulink></para>
<para>This JDBC implementation of BaseOrganizationService interface has
only one constructor:</para>
@@ -575,10 +571,10 @@
<note>
<para>What happens if one service has more than one constructor? The
- container always tries first to use the constructor with a maximum of
- arguments, if this is not possible the container continues step by step
+ container always tries first to use the constructor with a maximum number
+ of arguments, if this is not possible the container continues step by step
with constructors that have less arguments until arriving at the
- zero-argument constructor (if there is one).</para>
+ zero-argument constructor (if there is any).</para>
</note>
</section>
@@ -599,7 +595,7 @@
<section>
<title>Inversion of Control</title>
- <para><emphasis role="bold">Retrospection</emphasis> Do you remember
+ <para><emphasis role="bold">Retrospection</emphasis>. Do you remember
your last project where you had some small components and several larger
services? How was this organized? Some services had their own
configuration files, others had static values in the source code. Most
@@ -626,7 +622,7 @@
</listitem>
</itemizedlist>
- <para><emphasis role="bold">New Approach</emphasis> You have seen that
+ <para><emphasis role="bold">New Approach</emphasis>. You have seen that
eXo uses the <emphasis>Inversion of Control</emphasis> (IoC) pattern
which means that the control of the services is given to an independent
outside entity, in this case a <emphasis>container</emphasis>. Now the
@@ -651,7 +647,7 @@
</listitem>
</itemizedlist>
- <para><emphasis role="bold">Dependency Injection</emphasis> You also saw
+ <para><emphasis role="bold">Dependency Injection</emphasis>. You also saw
two types of dependency injections:</para>
<itemizedlist>
@@ -755,7 +751,7 @@
<section>
<title>Further Reading</title>
- <para>Do you feel an expert now? Not yet. Get a deeper look and read this
+ <para>Do you feel yourself to be an expert now? Not yet? Get a deeper look and read this
<link linkend="Kernel.ServicesWiring">Services Wiring</link> article. You
read so much about configuration, that you should wonder what the <link
linkend="Kernel.ContainerConfiguration.ConfigurationNamespace">XML Schema
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-in-detail.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-in-detail.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/service-configuration-in-detail.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -5,6 +5,15 @@
<?dbhtml filename="ch-service-configuration-in-detail.html"?>
<title>Service Configuration in Detail</title>
+
+ <para>This chapter shows you how to set up a sample service with some
+ configurations and how to access the configuration parameters. The
+ later sections describe all details of the configuration file (parameters,
+ object-params, plugins, imports, and more). It also shows how to access the
+ configuration values. You may consider this document as a <emphasis
+ role="bold">reference</emphasis>, but you can also use this document as a
+ <emphasis role="bold">tutorial</emphasis> and read it from the beginning
+ to the end.</para>
<para><emphasis role="bold">Related documents</emphasis></para>
@@ -27,19 +36,6 @@
</itemizedlist>
<section>
- <title>Objectives</title>
-
- <para>This article shows how to setup a sample service with some
- configurations and how to access to the configuration parameters. The
- later chapters describe all details of the configuration file (parameters,
- object-params, plugins, imports, etc.), it also shows how to access the
- configuration values. You may consider this article as a <emphasis
- role="bold">reference</emphasis>, but you can also use this article as a
- <emphasis role="bold">tutorial</emphasis> and read it from the beginning
- to the end.</para>
- </section>
-
- <section>
<title>Requirements</title>
<para>You should have read and understood <link
@@ -128,7 +124,7 @@
<title>Init Parameters</title>
<para>You see your service has a configuration file, but you wonder how
- the file could possibly access to its configuration. Imagine that you
+ the file can gain access to its configuration. Imagine that you
are asked to implement two different calculation methods: fast and
exact.</para>
@@ -159,7 +155,7 @@
role="bold">totally free</emphasis>. You can provide as many <emphasis
role="bold">value-param</emphasis>, <emphasis
role="bold">property-param</emphasis>, and <emphasis
- role="bold">properties</emphasis> you wish and you can give them any
+ role="bold">properties</emphasis> as you wish, and you can give them any
names or values. You only must respect the xml structure.</para>
</note>
@@ -431,7 +427,7 @@
</itemizedlist>
<para>Have a look on this type test xml file: <ulink
- url="https://anonsvn.jboss.org/repos/exo-jcr/kernel/trunk/exo.kernel.container...">https://anonsvn.jboss.org/repos/exo-jcr/kernel/trunk/exo.kernel.container...</ulink>.</para>
+ url="https://anonsvn.jboss.org/repos/exo-jcr/kernel/trunk/exo.kernel.container...">object.xml</ulink>.</para>
</section>
<section>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/services-wiring.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/services-wiring.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/services-wiring.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,6 @@
<title id="KernelServicesWiring.Title">Services Wiring</title>
- <section>
- <title>Overview</title>
-
<para>The container package is responsible of building a hierarchy of
containers. Each service will then be registered in one container or the
other according to the XML configuration file it is defined in. It is
@@ -34,8 +31,7 @@
There are three configuration.xml files, one for each container type. In
that XML file, we define the list of services and their init parameters
that will be loaded in the corresponding container.</para>
- </section>
-
+
<section>
<title>Portal Instance</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/transaction-service.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/transaction-service.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/transaction-service.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,6 @@
<title>TransactionService</title>
- <section>
- <title>Base information</title>
-
<para>TransactionServices provides access to the TransactionManager and
the UserTransaction (See JTA specification for details).</para>
@@ -55,7 +52,6 @@
</tbody>
</tgroup>
</table>
- </section>
<section>
<title>Existing TransactionService implementations</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/understanding-listnerservice.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/understanding-listnerservice.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/understanding-listnerservice.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -5,6 +5,8 @@
<?dbhtml filename="ch-understanding-listeners-service.html"?>
<title>Understanding the ListenerService</title>
+ <para>This chapter will first describe how the ListenerService works and
+ then it will show you how to configure the ListenerService.</para>
<para><emphasis role="bold">Related documents</emphasis></para>
@@ -26,13 +28,6 @@
</itemizedlist>
<section>
- <title>Objectives</title>
-
- <para>This article will first describe how the ListenerService works and
- then it will show you how to configure the ListenerService.</para>
- </section>
-
- <section>
<title>What is the ListenerService ?</title>
<para>Inside eXo, an event mechanism allows to trigger and listen to
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,18 @@
<title>eXoKernel</title>
- <xi:include href="kernel/kernel.xml"
- xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <para>eXo Kernel is the basis of all eXo platform products and modules.
+ Any component available in eXo Platform is managed by the Exo Container,
+ our micro container responsible for gluing the services through dependency
+ injection</para>
+
+ <para>Therefore, each product is composed of a set of services and plugins
+ registered to the container and configured by XML configuration
+ files.</para>
+ <para>The Kernel module also contains a set of very low level
+ services.</para>
+
<xi:include href="kernel/exo-container.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/framework-for-cross-domain-ajax.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/framework-for-cross-domain-ajax.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/framework-for-cross-domain-ajax.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -5,11 +5,12 @@
<?dbhtml filename="ch-framework-for-cross-domain-ajax.html"?>
<title>Framework for cross-domain AJAX</title>
+ <para>eXo Webservice provides a framework to cross-domain AJAX. This chapter shows you how to use this framework.</para>
- <para>(<ulink
- url="https://anonsvn.jboss.org/repos/exo-jcr/ws/trunk/exo.ws.frameworks.javasc...">https://anonsvn.jboss.org/repos/exo-jcr/ws/trunk/exo.ws.frameworks.javasc...</ulink>)</para>
+ <para>You can checkout the source code at <ulink
+ url="https://anonsvn.jboss.org/repos/exo-jcr/ws/trunk/exo.ws.frameworks.javasc...">https://anonsvn.jboss.org/repos/exo-jcr/ws/trunk/exo.ws.frameworks.javasc...</ulink>.</para>
- <section>
+ <section id="WS.CrossDomainAJAX.Motivation">
<title>Motivation</title>
<para>XmlHttpRequest objects are bound by the same origin security policy
@@ -32,7 +33,7 @@
limitation of AJAX.</para>
</section>
- <section>
+ <section id="WS.CrossDomainAJAX.Scheme">
<title>Scheme (how it works)</title>
<para>To describe our method for cross-domain AJAX solution, let's
@@ -57,7 +58,7 @@
</mediaobject>
</section>
- <section>
+ <section id="WS.CrossDomainAJAX.Working_Sequence">
<title>A Working Sequence:</title>
<para>1) A Browser requests the Start page from the ServerA</para>
@@ -83,7 +84,7 @@
information that we want.</para>
</section>
- <section>
+ <section id="WS.CrossDomainAJAX.How_to_Use_it">
<title>How to use it</title>
<para>1). Place the file client.html and xda.js on the serverA.</para>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/groovy-scripts-as-rest-services.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/groovy-scripts-as-rest-services.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/groovy-scripts-as-rest-services.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,12 +6,9 @@
<title>Groovy Scripts as REST Services</title>
- <section>
- <title>Overview</title>
+ <para>This chapter describes how to use Groovy scripts as REST services.
+ Consider these operations:</para>
- <para>This article describes how to use Groovy scripts as REST services.
- We are going to consider these operations:</para>
-
<itemizedlist>
<listitem>
<para>Load script and save it in JCR.</para>
@@ -22,7 +19,7 @@
</listitem>
<listitem>
- <para>Deploy newly created Class as RESTful service.</para>
+ <para>Deploy a newly created Class as RESTful service.</para>
</listitem>
<listitem>
@@ -30,15 +27,13 @@
</listitem>
<listitem>
- <para>And finally we will discover simple example which can get JCR
+ <para>Finally, we will discover simple example which can get JCR
node UUID</para>
</listitem>
</itemizedlist>
- <para>In this article, we consider RESTful service compatible with JSR-311
- specification. Currently last feature available in version 1.11-SNAPSHOT
- of JCR, 2.0-SNAPSHOT of WS and version 2.1.4-SNAPSHOT of core.</para>
- </section>
+ <para>In this chapter, we consider RESTful service to be compatible with JSR-311
+ specification. The last feature is currently available in version 1.11-SNAPSHOT.</para>
<section>
<title>Loading script and save it in JCR</title>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/introduction-to-rest.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/introduction-to-rest.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/introduction-to-rest.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,9 +6,6 @@
<title>Introduction to the Representational State Transfer (REST)</title>
- <section>
- <title>Introduction</title>
-
<para><command>Representational State Transfer (REST)</command> is a style
of software architecture for distributed hypermedia systems such as the
World Wide Web. The term was introduced in the doctoral dissertation in
@@ -189,9 +186,9 @@
</listitem>
</itemizedlist>
- <para><command>Note</command>: RESTful architecture is not limited to
+ <note><para>RESTful architecture is not limited to
those methods, one of good examples of extension is the WebDAV
- protocol.</para>
+ protocol.</para></note>
<para>The <command>CRUD</command> (Create, Read, Update and Delete) verbs
are designed to operate with atomic data within the context of a database
@@ -207,6 +204,5 @@
<para>As a result, neither the client nor the server needs to remember any
communication-state between messages. Any state retained by the server
- must be modeled as a resource..</para>
- </section>
+ must be modeled as a resource.</para>
</chapter>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/overwrite-default-providers.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/overwrite-default-providers.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/overwrite-default-providers.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -4,9 +4,10 @@
<chapter id="WS.OverwriteDefaultProviders">
<?dbhtml filename="overwrite-default-providers.html"?>
- <title>OverwriteDefaultProviders</title>
+ <title>Overwrite default providers</title>
+ <para>This chapter will show you how to overwrite the default providers in eXo JAX-RS implementation.</para>
- <section>
+ <section id="WS.OverwriteDefaultProviders.Motivation">
<title>Motivation</title>
<para>There is set of providers embedded in eXo JAX-RS
@@ -136,7 +137,7 @@
services.</para>
</section>
- <section>
+ <section id="WS.OverwriteDefaultProviders.Usage">
<title>Usage</title>
<para>To be able overwrite default JAX-RS provider(s) developer
@@ -167,7 +168,7 @@
</orderedlist>
</section>
- <section>
+ <section id="WS.OverwriteDefaultProviders.Example">
<title>Example</title>
<para>In example below see how to use Jackson JSON provider instead of
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/restservicelist-service.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/restservicelist-service.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/restservicelist-service.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,12 +6,9 @@
<title>RestServicesList Service</title>
- <section>
- <title>Overview.</title>
+ <para>RestServicesList service provides information about
+ REST services deployed to the application server.</para>
- <para>RestServicesList service is intendet to provide information about
- rest services deployed to the application server.</para>
-
<itemizedlist>
<listitem>
<para>Path - path to service</para>
@@ -27,7 +24,6 @@
</itemizedlist>
<para>The list can be provided in two formats: HTML and JSON.</para>
- </section>
<section>
<title>Usage</title>
@@ -55,8 +51,9 @@
<para>To do this, perform a simple GET request to the RestServicesList
link.</para>
- <para>f.e. curl -u root:exo http://localhost:8080/rest/ will return such
- HTML code:</para>
+ <para>f.e. curl -u root:exo http://localhost:8080/rest/ will return such
+ HTML code:
+ </para>
<programlisting language="xml"><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/ws.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/ws.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws/ws.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id = "WS">
- <?dbhtml filename="ch-ws.html"?>
-
- <title>eXo Web Services</title>
-
- <section>
- <title>eXo Web Services introduction</title>
-
- <para>The Web Services module allows eXo technology to integrate with
- external products and services.</para>
-
- <para>It's implementaion of API for RESTful Web Services with extensions,
- Servlet and cross-domain AJAX web-frameworks and JavaBean-JSON
- transformer.</para>
- </section>
-</chapter>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws.xml 2012-03-06 08:54:13 UTC (rev 5809)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/ws.xml 2012-03-06 09:57:22 UTC (rev 5810)
@@ -6,15 +6,19 @@
<title>eXoWS</title>
- <xi:include href="ws/ws.xml"
- xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <para>The Web Services module allows eXo technology to integrate with
+ external products and services.</para>
+
+ <para>It is implementation of API for RESTful Web Services with extensions,
+ Servlet and cross-domain AJAX web-frameworks and JavaBean-JSON
+ transformer.</para>
<xi:include href="ws/introduction-to-rest.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="ws/overwrite-default-providers.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
-
+
<xi:include href="ws/restservicelist-service.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
14 years, 1 month
exo-jcr SVN: r5809 - in jcr/branches/1.15.x: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent and 12 other directories.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-06 03:54:13 -0500 (Tue, 06 Mar 2012)
New Revision: 5809
Added:
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCConnectionFactory.java
Modified:
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCCacheLoader.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspacePersistentDataManager.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java.orig
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/statistics/StatisticsJDBCStorageConnection.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/ValueOperation.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/FileIOChannel.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableDeleteValues.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableWriteValue.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/DeleteValues.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/WriteValue.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceStorageConnection.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/value/ValueIOChannel.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestCacheableWorkspaceDataManager.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestWorkspaceStorageCacheInClusterMode.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/cache/jbosscache/TestJBossCacheWorkspaceStorageCache.java
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq/jcr-faq.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/cluster-config.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml
jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml
Log:
EXOJCR-1763: avoided potential inconsistency related to replication timeout
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCCacheLoader.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCCacheLoader.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCCacheLoader.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -20,6 +20,7 @@
import org.exoplatform.services.database.utils.JDBCUtils;
import org.jboss.cache.config.CacheLoaderConfig;
+import org.jboss.cache.config.CacheLoaderConfig.IndividualCacheLoaderConfig;
import org.jboss.cache.loader.AdjListJDBCCacheLoaderConfig;
import java.sql.Connection;
@@ -27,7 +28,8 @@
/**
* This class is used to override the method AdjListJDBCCacheLoader#tableExists in order
- * to more easily ensure multi-schema support.
+ * to more easily ensure multi-schema support and the method AdjListJDBCCacheLoader#setConfig
+ * in order to be able to use a data source name even in case of non managed data sources.
*
* @author <a href="mailto:nfilotto@exoplatform.com">Nicolas Filotto</a>
* @version $Id$
@@ -41,7 +43,23 @@
{
return JDBCUtils.tableExists(tableName, con);
}
+ @Override
+ public void setConfig(IndividualCacheLoaderConfig base)
+ {
+ super.setConfig(base);
+ AdjListJDBCCacheLoaderConfig config = processConfig(base);
+ if (config.getDatasourceName() == null)
+ {
+ return;
+ }
+ /* We create the JDBCConnectionFactory instance but the JNDI lookup is no done until
+the start method is called, since that's when its registered in its lifecycle */
+ cf = new JDBCConnectionFactory();
+ /* We set the configuration */
+ cf.setConfig(config);
+ }
+
/**
* {@inheritDoc}
*/
Added: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCConnectionFactory.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCConnectionFactory.java (rev 0)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCConnectionFactory.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -0,0 +1,276 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+package org.exoplatform.services.jcr.impl.core.lock.jbosscache;
+
+import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.ExoContainerContext;
+import org.exoplatform.services.jdbc.DataSourceProvider;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+import org.jboss.cache.loader.AdjListJDBCCacheLoaderConfig;
+import org.jboss.cache.loader.ConnectionFactory;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+
+/**
+ * @author <a href="mailto:nicolas.filotto@exoplatform.com">Nicolas Filotto</a>
+ * @version $Id$
+ */
+public class JDBCConnectionFactory implements ConnectionFactory
+{
+
+ /**
+ * Logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("exo.jcr.component.core.NonManagedConnectionFactory");
+
+ private static final boolean trace = LOG.isTraceEnabled();
+
+ static final ThreadLocal<Connection> connection = new ThreadLocal<Connection>();
+
+ private DataSource dataSource;
+
+ private String datasourceName;
+
+ public void setConfig(AdjListJDBCCacheLoaderConfig config)
+ {
+ datasourceName = config.getDatasourceName();
+ }
+
+ private DataSourceProvider getDataSourceProvider()
+ {
+ ExoContainer container = ExoContainerContext.getCurrentContainer();
+ if (container == null)
+ {
+ LOG.warn("The current container cannot be found which prevents to retrieve the DataSourceProvider");
+ return null;
+ }
+ DataSourceProvider dsProvider =
+ (DataSourceProvider)container.getComponentInstanceOfType(DataSourceProvider.class);
+ if (dsProvider == null)
+ {
+ LOG.warn("The DataSourceProvider cannot be found in the container " + container.getContext().getName()
+ + ", it will be considered as non managed ");
+ }
+ return dsProvider;
+ }
+
+ public void start() throws Exception
+ {
+ // A datasource will be registered in JNDI in the start portion of
+ // its lifecycle, so now that we are in start() we can look it up
+
+ DataSourceProvider dsProvider = getDataSourceProvider();
+ InitialContext ctx = null;
+ try
+ {
+ if (dsProvider == null)
+ {
+ ctx = new InitialContext();
+ dataSource = (DataSource)ctx.lookup(datasourceName);
+ }
+ else
+ {
+ dataSource = dsProvider.getDataSource(datasourceName);
+ }
+ if (trace)
+ {
+ LOG.trace("Datasource lookup for " + datasourceName + " succeded: " + dataSource);
+ }
+ }
+ catch (NamingException e)
+ {
+ reportAndRethrowError("Failed to lookup datasource " + datasourceName, e);
+ }
+ finally
+ {
+ if (ctx != null)
+ {
+ try
+ {
+ ctx.close();
+ }
+ catch (NamingException e)
+ {
+ LOG.warn("Failed to close naming context.", e);
+ }
+ }
+ }
+ }
+
+ public void prepare(Object tx)
+ {
+ Connection con = getConnection();
+ try
+ {
+ if (con.getAutoCommit())
+ {
+ con.setAutoCommit(false);
+ }
+ }
+ catch (Exception e)
+ {
+ reportAndRethrowError("Failed to set auto-commit", e);
+ }
+
+ /* Connection set in ThreadLocal, no reason to return. It was previously returned for legacy purpouses
+ and to trace log the connection opening in JDBCCacheLoader. */
+ connection.set(con);
+
+ if (trace)
+ {
+ LOG.trace("opened tx connection: tx=" + tx + ", con=" + con);
+ }
+
+ }
+
+ public Connection getConnection()
+ {
+ Connection con = connection.get();
+
+ if (con == null)
+ {
+ try
+ {
+ con = checkoutConnection();
+ // connection.set(con);
+ }
+ catch (SQLException e)
+ {
+ reportAndRethrowError("Failed to get connection for datasource=" + datasourceName, e);
+ }
+ }
+
+ if (trace)
+ {
+ LOG.trace("using connection: " + con);
+ }
+
+ return con;
+ }
+
+ public Connection checkoutConnection() throws SQLException
+ {
+ return dataSource.getConnection();
+ }
+
+ public void commit(Object tx)
+ {
+ Connection con = connection.get();
+ if (con == null)
+ {
+ throw new IllegalStateException("Failed to commit: thread is not associated with the connection!");
+ }
+
+ try
+ {
+ con.commit();
+ if (trace)
+ {
+ LOG.trace("committed tx=" + tx + ", con=" + con);
+ }
+ }
+ catch (SQLException e)
+ {
+ reportAndRethrowError("Failed to commit", e);
+ }
+ finally
+ {
+ closeTxConnection(con);
+ }
+ }
+
+ public void rollback(Object tx)
+ {
+ Connection con = connection.get();
+
+ try
+ {
+ con.rollback();
+ if (trace)
+ {
+ LOG.trace("rolledback tx=" + tx + ", con=" + con);
+ }
+ }
+ catch (SQLException e)
+ {
+ reportAndRethrowError("Failed to rollback", e);
+ }
+ finally
+ {
+ closeTxConnection(con);
+ }
+ }
+
+ public void close(Connection con)
+ {
+ if (con != null && con != connection.get())
+ {
+ try
+ {
+ con.close();
+
+ if (trace)
+ {
+ LOG.trace("closed non tx connection: " + con);
+ }
+ }
+ catch (SQLException e)
+ {
+ LOG.warn("Failed to close connection " + con, e);
+ }
+ }
+ }
+
+ public void stop()
+ {
+ }
+
+ private void closeTxConnection(Connection con)
+ {
+ safeClose(con);
+ connection.set(null);
+ }
+
+ private void safeClose(Connection con)
+ {
+ if (con != null)
+ {
+ try
+ {
+ con.close();
+ }
+ catch (SQLException e)
+ {
+ LOG.warn("Failed to close connection", e);
+ }
+ }
+ }
+
+ private void reportAndRethrowError(String message, Exception cause) throws IllegalStateException
+ {
+ LOG.error(message, cause);
+ throw new IllegalStateException(message, cause);
+ }
+}
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -128,8 +128,6 @@
private volatile BloomFilter<String> filterOwner;
- private TransactionManager transactionManager;
-
/**
* The service for executing commands on all nodes of cluster.
*/
@@ -397,7 +395,7 @@
WorkspaceStorageCache cache, SystemDataContainerHolder systemDataContainerHolder,
TransactionableResourceManager txResourceManager, TransactionService transactionService, RPCService rpcService)
{
- super(dataContainer, systemDataContainerHolder, txResourceManager);
+ super(dataContainer, systemDataContainerHolder, txResourceManager, transactionService.getTransactionManager());
bfProbability =
wsConfig.getContainer().getParameterDouble(WorkspaceDataContainer.ACL_BF_FALSE_PROPBABILITY,
@@ -422,8 +420,6 @@
this.requestCache = new ConcurrentHashMap<Integer, DataRequest>();
addItemPersistenceListener(new CacheItemsPersistenceListener());
- transactionManager = transactionService.getTransactionManager();
-
this.rpcService = rpcService;
this.txResourceManager = txResourceManager;
doInitRemoteCommands();
@@ -469,7 +465,7 @@
WorkspaceStorageCache cache, SystemDataContainerHolder systemDataContainerHolder,
TransactionableResourceManager txResourceManager, RPCService rpcService)
{
- super(dataContainer, systemDataContainerHolder, txResourceManager);
+ super(dataContainer, systemDataContainerHolder, txResourceManager, getTransactionManagerFromCache(cache));
bfProbability =
wsConfig.getContainer().getParameterDouble(WorkspaceDataContainer.ACL_BF_FALSE_PROPBABILITY,
@@ -493,18 +489,6 @@
this.requestCache = new ConcurrentHashMap<Integer, DataRequest>();
addItemPersistenceListener(new CacheItemsPersistenceListener());
-
- try
- {
- transactionManager =
- (TransactionManager)cache.getClass().getMethod("getTransactionManager", null).invoke(null, null);
- }
- catch (Exception e)
- {
- LOG.debug("Could not get the transaction manager from the cache", e);
- transactionManager = null;
- }
-
this.rpcService = rpcService;
this.txResourceManager = txResourceManager;
doInitRemoteCommands();
@@ -550,6 +534,24 @@
}
/**
+ * Try to get the TransactionManager from the cache by calling by reflection
+ * getTransactionManager() on the cache instance, by default it will return null
+ */
+ private static TransactionManager getTransactionManagerFromCache(WorkspaceStorageCache cache)
+ {
+ try
+ {
+ return (TransactionManager)cache.getClass().getMethod("getTransactionManager", (Class<?>[])null)
+ .invoke(cache, (Object[])null);
+ }
+ catch (Exception e)
+ {
+ LOG.debug("Could not get the transaction manager from the cache", e);
+ }
+ return null;
+ }
+
+ /**
* Get Items Cache.
*
* @return WorkspaceStorageCache
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspacePersistentDataManager.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspacePersistentDataManager.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspacePersistentDataManager.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -61,6 +61,9 @@
import javax.jcr.InvalidItemStateException;
import javax.jcr.RepositoryException;
+import javax.transaction.Status;
+import javax.transaction.Synchronization;
+import javax.transaction.TransactionManager;
/**
* Created by The eXo Platform SAS.<br>
@@ -102,7 +105,7 @@
/**
* Persistent level listeners filters.
*/
- protected final List<ItemsPersistenceListenerFilter> liestenerFilters;
+ protected final List<ItemsPersistenceListenerFilter> listenerFilters;
/**
* Read-only status.
@@ -115,6 +118,10 @@
private final TransactionableResourceManager txResourceManager;
/**
+ * The transaction manager
+ */
+ protected final TransactionManager transactionManager;
+ /**
* Changes log wrapper adds possibility to replace changes log.
* Changes log contains transient data on save but listeners should be notifyed
* with persisted data only.
@@ -177,7 +184,7 @@
protected WorkspacePersistentDataManager(WorkspaceDataContainer dataContainer,
SystemDataContainerHolder systemDataContainerHolder)
{
- this(dataContainer, systemDataContainerHolder, null);
+ this(dataContainer, systemDataContainerHolder, null, null);
}
/**
@@ -191,15 +198,16 @@
* the resource manager used to manage the whole tx
*/
public WorkspacePersistentDataManager(WorkspaceDataContainer dataContainer,
- SystemDataContainerHolder systemDataContainerHolder, TransactionableResourceManager txResourceManager)
+ SystemDataContainerHolder systemDataContainerHolder, TransactionableResourceManager txResourceManager, TransactionManager transactionManager)
{
this.dataContainer = dataContainer;
this.systemDataContainer = systemDataContainerHolder.getContainer();
this.listeners = new ArrayList<ItemsPersistenceListener>();
this.mandatoryListeners = new ArrayList<MandatoryItemsPersistenceListener>();
- this.liestenerFilters = new ArrayList<ItemsPersistenceListenerFilter>();
+ this.listenerFilters = new ArrayList<ItemsPersistenceListenerFilter>();
this.txResourceManager = txResourceManager;
+ this.transactionManager = transactionManager;
}
/**
@@ -248,7 +256,7 @@
}
// replace log with persisted data only
logWrapper.setLog(persistedLog);
-
+ persister.prepare();
notifySaveItems(persistedLog, true);
onCommit(persister, mode);
failed = false;
@@ -262,7 +270,7 @@
persister.clear();
if (failed)
{
- onRollback(persister, mode);
+ persister.rollback();
}
}
}
@@ -274,22 +282,13 @@
{
if (txResourceManager != null && txResourceManager.isGlobalTxActive())
{
- return ConnectionMode.PARTIALLY_MANAGED;
+ return ConnectionMode.GLOBAL_TX;
}
- return ConnectionMode.NORMAL;
- }
-
- /**
- * @param persister
- * @throws RepositoryException
- */
- private void onRollback(final ChangesLogPersister persister, ConnectionMode mode) throws RepositoryException
- {
- if (mode == ConnectionMode.NORMAL || mode == ConnectionMode.PARTIALLY_MANAGED)
+ else if (transactionManager != null)
{
- // The rollback is done normally
- persister.rollback();
+ return ConnectionMode.WITH_TRANSACTION_MANAGER;
}
+ return ConnectionMode.NORMAL;
}
/**
@@ -303,8 +302,58 @@
// The commit is done normally
persister.commit();
}
- else if (mode == ConnectionMode.PARTIALLY_MANAGED)
+ else if (mode == ConnectionMode.WITH_TRANSACTION_MANAGER)
{
+ try
+ {
+ transactionManager.getTransaction().registerSynchronization(new Synchronization()
+ {
+
+ public void beforeCompletion()
+ {
+ }
+
+ public void afterCompletion(int status)
+ {
+ switch (status)
+ {
+ case Status.STATUS_COMMITTED:
+ try
+ {
+ persister.commit();
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Could not commit the transaction", e);
+ }
+ break;
+ case Status.STATUS_UNKNOWN:
+ LOG.warn("Status UNKNOWN received in afterCompletion method, some data could have been corrupted !!");
+ case Status.STATUS_MARKED_ROLLBACK:
+ case Status.STATUS_ROLLEDBACK:
+ try
+ {
+ persister.rollback();
+ }
+ catch (Exception e)
+ {
+ LOG.error("Could not roll back the transaction", e);
+ }
+ break;
+
+ default:
+ throw new IllegalStateException("illegal status: " + status);
+ }
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ throw new RepositoryException("Cannot register the synchronization for a late commit", e);
+ }
+ }
+ else if (mode == ConnectionMode.GLOBAL_TX)
+ {
// The commit or rollback will be done by callback once the tx will be completed since it could
// fail later in the tx
txResourceManager.addListener(new TransactionableResourceManagerListener()
@@ -328,7 +377,7 @@
}
private enum ConnectionMode {
- NORMAL, PARTIALLY_MANAGED
+ NORMAL, WITH_TRANSACTION_MANAGER, GLOBAL_TX
}
class ChangesLogPersister
@@ -352,6 +401,18 @@
}
}
+ protected void prepare() throws IllegalStateException, RepositoryException
+ {
+ if (thisConnection != null && thisConnection.isOpened())
+ {
+ thisConnection.prepare();
+ }
+ if (systemConnection != null && !systemConnection.equals(thisConnection) && systemConnection.isOpened())
+ {
+ systemConnection.prepare();
+ }
+ }
+
protected void clear()
{
// help to GC
@@ -961,7 +1022,7 @@
*/
public void addItemPersistenceListenerFilter(ItemsPersistenceListenerFilter filter)
{
- this.liestenerFilters.add(filter);
+ this.listenerFilters.add(filter);
}
/**
@@ -969,7 +1030,7 @@
*/
public void removeItemPersistenceListenerFilter(ItemsPersistenceListenerFilter filter)
{
- this.liestenerFilters.remove(filter);
+ this.listenerFilters.remove(filter);
}
/**
@@ -982,7 +1043,7 @@
*/
protected boolean isListenerAccepted(ItemsPersistenceListener listener)
{
- for (ItemsPersistenceListenerFilter f : liestenerFilters)
+ for (ItemsPersistenceListenerFilter f : listenerFilters)
{
if (!f.accept(listener))
{
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -348,16 +348,38 @@
if (!readOnly)
{
- dbConnection.rollback();
+ try
+ {
+ dbConnection.rollback();
+ }
+ finally
+ {
+ // rollback from the end
+ IOException e = null;
+ for (int p = valueChanges.size() - 1; p >= 0; p--)
+ {
+ try
+ {
+ valueChanges.get(p).rollback();
+ }
+ catch (IOException e1)
+ {
+ if (e == null)
+ {
+ e = e1;
+ }
+ else
+ {
+ LOG.error("Could not rollback value change", e1);
+ }
+ }
+ }
+ if (e != null)
+ {
+ throw e;
+ }
+ }
}
-
- dbConnection.close();
-
- // rollback from the end
- for (int p = valueChanges.size() - 1; p >= 0; p--)
- {
- valueChanges.get(p).rollback();
- }
}
catch (SQLException e)
{
@@ -370,6 +392,17 @@
finally
{
valueChanges.clear();
+ try
+ {
+ dbConnection.close();
+ }
+ catch (SQLException e)
+ {
+ if (LOG.isWarnEnabled())
+ {
+ LOG.warn("Could not close the connection", e);
+ }
+ }
}
}
@@ -580,6 +613,24 @@
LOG.error("Can't close the statement: " + e.getMessage());
}
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public final void prepare() throws IllegalStateException, RepositoryException
+ {
+ try
+ {
+ for (ValueIOChannel vo : valueChanges)
+ {
+ vo.prepare();
+ }
+ }
+ catch (IOException e)
+ {
+ throw new RepositoryException(e);
+ }
+ }
/**
* {@inheritDoc}
@@ -591,33 +642,44 @@
{
closeStatements();
- if (!this.readOnly)
+ if (!readOnly)
{
+ try
+ {
+ for (ValueIOChannel vo : valueChanges)
+ {
+ vo.twoPhaseCommit();
+ }
+ }
+ catch (IOException e)
+ {
+ throw new RepositoryException(e);
+ }
+ finally
+ {
+ valueChanges.clear();
+ }
dbConnection.commit();
}
-
- dbConnection.close();
-
+ }
+ catch (SQLException e)
+ {
+ throw new RepositoryException(e);
+ }
+ finally
+ {
try
{
- for (ValueIOChannel vo : valueChanges)
+ dbConnection.close();
+ }
+ catch (SQLException e)
+ {
+ if (LOG.isWarnEnabled())
{
- vo.commit();
+ LOG.warn("Could not close the connection", e);
}
}
- catch (IOException e)
- {
- throw new RepositoryException(e);
- }
- finally
- {
- valueChanges.clear();
- }
}
- catch (SQLException e)
- {
- throw new RepositoryException(e);
- }
}
/**
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java.orig
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java.orig 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java.orig 2012-03-06 08:54:13 UTC (rev 5809)
@@ -167,7 +167,7 @@
protected PreparedStatement findPropertiesByParentId;
- protected PreparedStatement findLowestPropertyVersions;
+ protected PreparedStatement findMaxPropertyVersions;
protected PreparedStatement insertItem;
@@ -485,9 +485,9 @@
findPropertiesByParentId.close();
}
- if (findLowestPropertyVersions != null)
+ if (findMaxPropertyVersions != null)
{
- findLowestPropertyVersions.close();
+ findMaxPropertyVersions.close();
}
if (insertItem != null)
@@ -1006,6 +1006,44 @@
/**
* {@inheritDoc}
*/
+ public int getMaxPropertyVersion(PropertyData data) throws RepositoryException
+ {
+ checkIfOpened();
+ try
+ {
+ ResultSet count = findMaxPropertyVersion(data.getParentIdentifier(), data.getQPath().getName().getAsString(), data.getQPath().getIndex());
+ try
+ {
+ if (count.next())
+ {
+ return count.getInt(1);
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ finally
+ {
+ try
+ {
+ count.close();
+ }
+ catch (SQLException e)
+ {
+ LOG.error("Can't close the ResultSet: " + e);
+ }
+ }
+ }
+ catch (SQLException e)
+ {
+ throw new RepositoryException(e);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public int getChildNodesCount(NodeData parent) throws RepositoryException
{
checkIfOpened();
@@ -2699,16 +2737,6 @@
}
};
- protected ResultSet findLowestPropertyVersions() throws SQLException
- {
- if (findLowestPropertyVersions == null)
- {
- findLowestPropertyVersions = dbConnection.prepareStatement(FIND_LOWEST_PROPERTY_VERSIONS);
- }
-
- return findLowestPropertyVersions.executeQuery();
- }
-
protected abstract int addNodeRecord(NodeData data) throws SQLException;
protected abstract int addPropertyRecord(PropertyData prop) throws SQLException;
@@ -2773,4 +2801,6 @@
protected abstract ResultSet findValueByPropertyIdOrderNumber(String cid, int orderNumb) throws SQLException;
+ protected abstract ResultSet findMaxPropertyVersion(String parentId, String name, int index) throws SQLException;
+
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/statistics/StatisticsJDBCStorageConnection.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/statistics/StatisticsJDBCStorageConnection.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/statistics/StatisticsJDBCStorageConnection.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -69,6 +69,12 @@
/**
* The description of the statistics corresponding to the method
+ * <code>prepare()</code>
+ */
+ private static final String PREPARE_DESCR = "prepare";
+
+ /**
+ * The description of the statistics corresponding to the method
* <code>rename(NodeData data)</code>
*/
private static final String RENAME_NODE_DATA_DESCR = "renameNodeData";
@@ -237,6 +243,8 @@
ALL_STATISTICS.put(RENAME_NODE_DATA_DESCR, new Statistics(GLOBAL_STATISTICS, RENAME_NODE_DATA_DESCR));
// Rollback
ALL_STATISTICS.put(ROLLBACK_DESCR, new Statistics(GLOBAL_STATISTICS, ROLLBACK_DESCR));
+ // Prepare
+ ALL_STATISTICS.put(PREPARE_DESCR, new Statistics(GLOBAL_STATISTICS, PREPARE_DESCR));
// Others
ALL_STATISTICS.put(IS_OPENED_DESCR, new Statistics(null, IS_OPENED_DESCR));
ALL_STATISTICS.put(CLOSE_DESCR, new Statistics(null, CLOSE_DESCR));
@@ -625,6 +633,23 @@
/**
* {@inheritDoc}
*/
+ public void prepare() throws IllegalStateException, RepositoryException
+ {
+ Statistics s = ALL_STATISTICS.get(PREPARE_DESCR);
+ try
+ {
+ s.begin();
+ wcs.prepare();
+ }
+ finally
+ {
+ s.end();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public void rollback() throws IllegalStateException, RepositoryException
{
Statistics s = ALL_STATISTICS.get(ROLLBACK_DESCR);
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/ValueOperation.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/ValueOperation.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/ValueOperation.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -49,11 +49,26 @@
void rollback() throws IOException;
/**
- * Commit Value content.
+ * Commit Value content (one phase).
*
* @throws IOException
* if error occurs
*/
void commit() throws IOException;
+ /**
+ * Prepare Value content.
+ *
+ * @throws IOException
+ * if error occurs
+ */
+ void prepare() throws IOException;
+
+ /**
+ * Commit Value content (two phases).
+ *
+ * @throws IOException
+ * if error occurs
+ */
+ void twoPhaseCommit() throws IOException;
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/FileIOChannel.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/FileIOChannel.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/FileIOChannel.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -124,6 +124,15 @@
/**
* {@inheritDoc}
*/
+ public void prepare() throws IOException
+ {
+ for (ValueOperation vo : changes)
+ vo.prepare();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public void commit() throws IOException
{
try
@@ -140,6 +149,22 @@
/**
* {@inheritDoc}
*/
+ public void twoPhaseCommit() throws IOException
+ {
+ try
+ {
+ for (ValueOperation vo : changes)
+ vo.twoPhaseCommit();
+ }
+ finally
+ {
+ changes.clear();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public void rollback() throws IOException
{
try
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableDeleteValues.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableDeleteValues.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableDeleteValues.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -81,11 +81,11 @@
* {@inheritDoc}
*/
@Override
- public void commit() throws IOException
+ public void prepare() throws IOException
{
try
{
- super.commit();
+ super.prepare();
}
finally
{
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableWriteValue.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableWriteValue.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableWriteValue.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -149,66 +149,71 @@
* {@inheritDoc}
*/
@Override
- public void commit() throws IOException
+ public void prepare() throws IOException
{
if (fileLock != null)
+ {
+ // write VCAS record first
try
{
- // write VCAS record first
- try
+ vcas.addValue(propertyId, orderNumb, vcasHash);
+ }
+ catch (RecordAlreadyExistsException e)
+ {
+ if (tempFile != null && tempFile.exists() && !tempFile.delete())
{
- vcas.addValue(propertyId, orderNumb, vcasHash);
+ LOG.warn("Can't delete CAS temp file. Added to file cleaner. " + tempFile.getAbsolutePath());
+ cleaner.addFile(tempFile);
}
- catch (RecordAlreadyExistsException e)
- {
- if (tempFile != null && tempFile.exists() && !tempFile.delete())
- {
- LOG.warn("Can't delete CAS temp file. Added to file cleaner. " + tempFile.getAbsolutePath());
- cleaner.addFile(tempFile);
- }
- throw new RecordAlreadyExistsException("Write error: " + e, e);
- }
+ throw new RecordAlreadyExistsException("Write error: " + e, e);
+ }
- if (!vcasFile.exists())
- {
- // it's new CAS Value, we have to move temp to vcas location
- // use RENAME only, don't copy - as copy will means that destination already exists etc.
+ if (!vcasFile.exists())
+ {
+ // it's new CAS Value, we have to move temp to vcas location
+ // use RENAME only, don't copy - as copy will means that destination already exists etc.
- // make sure parent dir exists
- vcasFile.getParentFile().mkdirs();
-
- // rename propetynamed file to hashnamed one
- try
- {
- DirectoryHelper.renameFile(tempFile, vcasFile);
- }
- catch (IOException e)
- {
- throw new VCASException("File " + tempFile.getAbsolutePath() + " can't be renamed to VCAS-named "
- + vcasFile.getAbsolutePath(), e);
- }
- } // else - CASed Value already exists
-
- if (!value.isByteArray() && value instanceof StreamPersistedValueData)
+ // make sure parent dir exists
+ vcasFile.getParentFile().mkdirs();
+ // rename propetynamed file to hashnamed one
+ try
{
- // set persisted file
- ((StreamPersistedValueData)value).setPersistedFile(vcasFile);
+ DirectoryHelper.renameFile(tempFile, vcasFile);
}
+ catch (IOException e)
+ {
+ throw new VCASException("File " + tempFile.getAbsolutePath() + " can't be renamed to VCAS-named "
+ + vcasFile.getAbsolutePath(), e);
+ }
+ } // else - CASed Value already exists
- }
- finally
+ if (!value.isByteArray() && value instanceof StreamPersistedValueData)
{
- // remove temp file
- tempFile.delete(); // should be ok without file cleaner
-
- fileLock.unlock();
+ // set persisted file
+ ((StreamPersistedValueData)value).setPersistedFile(vcasFile);
}
+ }
}
/**
* {@inheritDoc}
*/
@Override
+ public void twoPhaseCommit() throws IOException
+ {
+ if (fileLock != null)
+ {
+ // remove temp file
+ tempFile.delete(); // should be ok without file cleaner
+
+ fileLock.unlock();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public void rollback() throws IOException
{
if (fileLock != null)
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/DeleteValues.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/DeleteValues.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/DeleteValues.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -19,10 +19,12 @@
package org.exoplatform.services.jcr.impl.storage.value.fs.operations;
import org.exoplatform.services.jcr.impl.storage.value.ValueDataResourceHolder;
+import org.exoplatform.services.jcr.impl.util.io.DirectoryHelper;
import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
import java.io.File;
import java.io.IOException;
+import java.util.concurrent.atomic.AtomicLong;
/**
* Created by The eXo Platform SAS.
@@ -35,6 +37,7 @@
*/
public class DeleteValues extends ValueFileOperation
{
+ private static final AtomicLong SEQUENCE = new AtomicLong();
/**
* Files to be deleted.
@@ -47,6 +50,11 @@
private ValueFileLock[] locks;
/**
+ * The backup files
+ */
+ protected File[] bckFiles;
+
+ /**
* DeleteValues constructor.
*
* @param files
@@ -83,24 +91,58 @@
/**
* {@inheritDoc}
*/
+ public void prepare() throws IOException
+ {
+ if (locks != null)
+ {
+ bckFiles = new File[files.length];
+ for (int i = 0,length = files.length; i < length; i++)
+ {
+ File file = files[i];
+ if (file.exists())
+ {
+ bckFiles[i] = new File(file.getAbsolutePath() + "." + System.currentTimeMillis() + "_" + SEQUENCE.incrementAndGet());
+ DirectoryHelper.renameFile(file, bckFiles[i]);
+ }
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public void rollback() throws IOException
{
if (locks != null)
- for (ValueFileLock fl : locks)
- fl.unlock();
+ try
+ {
+ for (int i = 0,length = files.length; i < length; i++)
+ {
+ File f = bckFiles[i];
+ if (f != null)
+ {
+ DirectoryHelper.renameFile(f, files[i]);
+ }
+ }
+ }
+ finally
+ {
+ for (ValueFileLock fl : locks)
+ fl.unlock();
+ }
}
/**
* {@inheritDoc}
*/
- public void commit() throws IOException
+ public void twoPhaseCommit() throws IOException
{
if (locks != null)
try
{
- for (File f : files)
+ for (File f : bckFiles)
{
- if (!f.delete())
+ if (f != null && !f.delete())
// Possible place of error: FileNotFoundException when we delete/update existing
// Value and then add/update again.
// After the time the Cleaner will delete the file which is mapped to the Value.
@@ -110,9 +152,8 @@
}
finally
{
- if (locks != null)
- for (ValueFileLock fl : locks)
- fl.unlock();
+ for (ValueFileLock fl : locks)
+ fl.unlock();
}
}
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -282,4 +282,19 @@
performed = true;
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public void commit() throws IOException
+ {
+ try
+ {
+ prepare();
+ }
+ finally
+ {
+ twoPhaseCommit();
+ }
+ }
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/WriteValue.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/WriteValue.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/WriteValue.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -80,33 +80,46 @@
fileLock.lock();
}
- /**
- * {@inheritDoc}
- */
- public void rollback() throws IOException
+ public void prepare() throws IOException
{
if (fileLock != null)
- fileLock.unlock();
+ {
+ // be sure the destination dir exists (case for Tree-style storage)
+ file.getParentFile().mkdirs();
+ // write value to the file
+ writeValue(file, value);
+ }
}
/**
* {@inheritDoc}
*/
- public void commit() throws IOException
+ public void rollback() throws IOException
{
if (fileLock != null)
+ {
try
{
- // be sure the destination dir exists (case for Tree-style storage)
- file.getParentFile().mkdirs();
-
- // write value to the file
- writeValue(file, value);
+ if (file.exists() && !file.delete())
+ {
+ cleaner.addFile(file);
+ }
}
finally
{
fileLock.unlock();
}
+ }
}
+ /**
+ * {@inheritDoc}
+ */
+ public void twoPhaseCommit() throws IOException
+ {
+ if (fileLock != null)
+ {
+ fileLock.unlock();
+ }
+ }
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceStorageConnection.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceStorageConnection.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceStorageConnection.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -41,7 +41,7 @@
* should have "opened" state. The connection becomes "closed" (invalid for using) after calling
* commit() or rollback() methods. In this case methods calling will cause an IllegalStateException
*
- * Connection object intended to be as "light" as possible i.e. connection creation SHOULD NOT be
+ * Connection object intends to be as "light" as possible i.e. connection creation SHOULD NOT be
* expensive operation, so better NOT to open/close potentially EXPENSIVE resources using by
* Connection (WorkspaceDataContainer should be responsible for that). The Connection IS NOT a
* thread-safe object and normally SHOULD NOT be pooled/cached.
@@ -370,6 +370,16 @@
IllegalStateException;
/**
+ * Prepare the commit phase.
+ *
+ * @throws IllegalStateException
+ * if connection is already closed
+ * @throws RepositoryException
+ * if some exception occurred
+ */
+ void prepare() throws IllegalStateException, RepositoryException;
+
+ /**
* Persist changes and closes connection. It can be database transaction commit for instance etc.
*
* @throws IllegalStateException
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/value/ValueIOChannel.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/value/ValueIOChannel.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/value/ValueIOChannel.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -102,14 +102,30 @@
String getStorageId();
/**
- * Commit channel changes.
+ * Prepare channel changes.
*
* @throws IOException
* if error occurs
*/
+ void prepare() throws IOException;
+
+ /**
+ * Commit channel changes (one phase).
+ *
+ * @throws IOException
+ * if error occurs
+ */
void commit() throws IOException;
/**
+ * Commit channel changes (two phases).
+ *
+ * @throws IOException
+ * if error occurs
+ */
+ void twoPhaseCommit() throws IOException;
+
+ /**
* Rollback channel changes.
*
* @throws IOException
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -747,6 +747,11 @@
throw new UnsupportedOperationException();
}
+ public void prepare() throws IllegalStateException, RepositoryException
+ {
+ throw new UnsupportedOperationException("TestWorkspaceStorageConnection: operation is unsupported.");
+ }
+
}
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestCacheableWorkspaceDataManager.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestCacheableWorkspaceDataManager.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestCacheableWorkspaceDataManager.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -473,6 +473,10 @@
{
}
+ public void prepare() throws IllegalStateException, RepositoryException
+ {
+ }
+
public void delete(NodeData data) throws RepositoryException, UnsupportedOperationException,
InvalidItemStateException, IllegalStateException
{
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestWorkspaceStorageCacheInClusterMode.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestWorkspaceStorageCacheInClusterMode.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestWorkspaceStorageCacheInClusterMode.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -651,6 +651,10 @@
{
}
+ public void prepare() throws IllegalStateException, RepositoryException
+ {
+ }
+
public void commit() throws IllegalStateException, RepositoryException
{
if (wait.get() != null && wait.get())
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/cache/jbosscache/TestJBossCacheWorkspaceStorageCache.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/cache/jbosscache/TestJBossCacheWorkspaceStorageCache.java 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/cache/jbosscache/TestJBossCacheWorkspaceStorageCache.java 2012-03-06 08:54:13 UTC (rev 5809)
@@ -291,6 +291,10 @@
{
}
+ public void prepare() throws IllegalStateException, RepositoryException
+ {
+ }
+
public void update(NodeData data) throws RepositoryException, UnsupportedOperationException,
InvalidItemStateException, IllegalStateException
{
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq/jcr-faq.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq/jcr-faq.xml 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq/jcr-faq.xml 2012-03-06 08:54:13 UTC (rev 5809)
@@ -307,8 +307,9 @@
<properties>
<property name="jbosscache-configuration" value="test-jbosscache-data.xml" />
<property name="jgroups-configuration" value="udp-mux.xml" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="JCR-cluster-db1-ws" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="JCR-cluster-data" />
+ <property name="jbosscache-shareable" value="true"/>
</properties>
</cache></programlisting>
@@ -325,8 +326,9 @@
</listitem>
<listitem>
- <para>"jgroups-multiplexer-stack" just simply "true". Strongly
- recommended;</para>
+ <para>"jgroups-multiplexer-stack" set to "false" with the
+ jgroups configuration with the shared transport enabled in
+ order to use the shared transport.</para>
</listitem>
<listitem>
@@ -335,6 +337,11 @@
component. I.e.:
<repository_name>-<ws_name>-<component(cache\|lock\|index)></para>
</listitem>
+
+ <listitem>
+ <para>"jbosscache-shareable" set "true" in order to share the
+ same JBoss Cache instance between several workspaces.</para>
+ </listitem>
</itemizedlist>
</listitem>
</itemizedlist>
@@ -356,8 +363,9 @@
<programlisting language="xml"><property name="jbosscache-configuration" value="test-jbosscache-indexer.xml" />
<property name="jgroups-configuration" value="udp-mux.xml" />
-<property name="jgroups-multiplexer-stack" value="true" />
-<property name="jbosscache-cluster-name" value="JCR-cluster-indexer-db1-ws" />
+<property name="jgroups-multiplexer-stack" value="false" />
+<property name="jbosscache-cluster-name" value="JCR-cluster-indexer" />
+<property name="jbosscache-shareable" value="true"/>
<property name="max-volatile-time" value="60" /></programlisting>
</listitem>
</itemizedlist>
@@ -384,16 +392,17 @@
<property name="time-out" value="15m" />
<property name="jbosscache-configuration" value="test-jbosscache-lock.xml" />
<property name="jgroups-configuration" value="udp-mux.xml" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="JCR-cluster-locks-db1-ws" />
- <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlocks_db1_ws" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="JCR-cluster-locks" />
+ <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlocks" />
<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="jcrlocks_db1_ws_pk" />
+ <property name="jbosscache-cl-cache.jdbc.table.primarykey" value="jcrlocks_pk" />
<property name="jbosscache-cl-cache.jdbc.fqn.column" value="fqn" />
<property name="jbosscache-cl-cache.jdbc.node.column" value="node" />
<property name="jbosscache-cl-cache.jdbc.parent.column" value="parent" />
<property name="jbosscache-cl-cache.jdbc.datasource" value="jdbcjcr" />
+ <property name="jbosscache-shareable" value="true"/>
</properties>
</lock-manager>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/cluster-config.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/cluster-config.xml 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/cluster-config.xml 2012-03-06 08:54:13 UTC (rev 5809)
@@ -224,8 +224,9 @@
<properties>
<property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-data.xml" /> <!-- path to JBoss Cache configuration for data storage -->
<property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" /> <!-- path to JGroups configuration -->
- <property name="jbosscache-cluster-name" value="JCR_Cluster_cache_production" /> <!-- JBoss Cache data storage cluster name -->
- <property name="jgroups-multiplexer-stack" value="true" />
+ <property name="jbosscache-cluster-name" value="JCR_Cluster_cache" /> <!-- JBoss Cache data storage cluster name -->
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-shareable" value="true" />
</properties>
</cache> </programlisting>
</listitem>
@@ -239,8 +240,9 @@
<property name="index-dir" value="/mnt/tornado/temp/jcrlucenedb/production" /> <!-- path within NFS where ValueStorage will hold it's data -->
<property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-indexer.xml" /> <!-- path to JBoss Cache configuration for indexer -->
<property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" /> <!-- path to JGroups configuration -->
- <property name="jbosscache-cluster-name" value="JCR_Cluster_indexer_production" /> <!-- JBoss Cache indexer cluster name -->
- <property name="jgroups-multiplexer-stack" value="true" />
+ <property name="jbosscache-cluster-name" value="JCR_Cluster_indexer" /> <!-- JBoss Cache indexer cluster name -->
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-shareable" value="true" />
</properties>
</query-handler> </programlisting>
</listitem>
@@ -253,17 +255,17 @@
<property name="time-out" value="15m" />
<property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-lock.xml" /> <!-- path to JBoss Cache configuration for lock manager -->
<property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" /> <!-- path to JGroups configuration -->
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="JCR_Cluster_lock_production" /> <!-- JBoss Cache locks cluster name -->
-
- <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlocks_production"/> <!-- the name of the DB table where lock's data will be stored -->
+ <property name="jbosscache-cluster-name" value="JCR_Cluster_locks" /> <!-- JBoss Cache locks cluster name -->
+ <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlocks"/> <!-- the name of the DB table where lock's data will be stored -->
<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="jcrlocks_production_pk"/>
+ <property name="jbosscache-cl-cache.jdbc.table.primarykey" value="jcrlocks_pk"/>
<property name="jbosscache-cl-cache.jdbc.fqn.column" value="fqn"/>
<property name="jbosscache-cl-cache.jdbc.node.column" value="node"/>
<property name="jbosscache-cl-cache.jdbc.parent.column" value="parent"/>
<property name="jbosscache-cl-cache.jdbc.datasource" value="jdbcjcr"/>
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-shareable" value="true" />
</properties>
</lock-manager></programlisting>
</listitem>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml 2012-03-06 08:54:13 UTC (rev 5809)
@@ -67,6 +67,15 @@
<programlisting language="xml"><property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" />
<property name="jgroups-multiplexer-stack" value="true" /></programlisting>
+
+ <para>I<emphasis>t is now highly recommended to use the shared transport
+ instead of the multiplexer</emphasis>, to do so simply disable the
+ multiplexer stack in the configuration of each component then set the
+ property <emphasis>singleton_name</emphasis> of your JGroups configuration
+ to a unique name.</para>
+
+ <programlisting language="xml"><property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" />
+<property name="jgroups-multiplexer-stack" value="false" /></programlisting>
</section>
<section>
@@ -114,22 +123,21 @@
<programlisting language="xml"><?xml version="1.0" encoding="UTF-8"?>
<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
- <locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false"
+ <locking useLockStriping="false" concurrencyLevel="500" lockParentForChildInsertRemove="false"
lockAcquisitionTimeout="20000" />
<clustering mode="replication" clusterName="${jbosscache-cluster-name}">
<stateRetrieval timeout="20000" fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
<sync />
</clustering>
<!-- Eviction configuration -->
<eviction wakeUpInterval="5000">
- <default algorithmClass="org.jboss.cache.eviction.LRUAlgorithm"
+ <default algorithmClass="org.jboss.cache.eviction.ExpirationAlgorithm"
actionPolicyClass="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.ParentNodeEvictionActionPolicy"
eventQueueSize="1000000">
<property name="maxNodes" value="1000000" />
- <property name="timeToLive" value="120000" />
+ <property name="warnNoExpirationKey" value="false" />
</default>
</eviction>
</jbosscache></programlisting>
@@ -163,18 +171,17 @@
<programlisting language="xml"><?xml version="1.0" encoding="UTF-8"?>
<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
- <locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false"
+ <locking useLockStriping="false" concurrencyLevel="500" lockParentForChildInsertRemove="false"
lockAcquisitionTimeout="20000" />
<clustering mode="replication" clusterName="${jbosscache-cluster-name}">
<stateRetrieval timeout="20000" fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
<sync />
</clustering>
<loaders passivation="false" shared="true">
<preload>
<node fqn="/" />
</preload>
- <loader class="org.jboss.cache.loader.JDBCCacheLoader" async="false" fetchPersistentState="false"
+ <loader class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.JDBCCacheLoader" async="false" fetchPersistentState="false"
ignoreModifications="false" purgeOnStartup="false">
<properties>
cache.jdbc.table.name=${jbosscache-cl-cache.jdbc.table.name}
@@ -192,6 +199,13 @@
</loaders>
</jbosscache></programlisting>
+ <note>
+ <para>To prevent any consistency issue regarding the lock data please
+ ensure that your cache loader is
+ <emphasis>org.exoplatform.services.jcr.impl.core.lock.jbosscache.JDBCCacheLoader</emphasis>
+ and that your database engine is transactional.</para>
+ </note>
+
<table>
<title>Template variables</title>
@@ -258,20 +272,12 @@
<programlisting language="xml"><?xml version="1.0" encoding="UTF-8"?>
<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
- <locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false"
+ <locking useLockStriping="false" concurrencyLevel="500" lockParentForChildInsertRemove="false"
lockAcquisitionTimeout="20000" />
<clustering mode="replication" clusterName="${jbosscache-cluster-name}">
<stateRetrieval timeout="20000" fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
<sync />
</clustering>
- <!-- Eviction configuration -->
- <eviction wakeUpInterval="5000">
- <default algorithmClass="org.jboss.cache.eviction.FIFOAlgorithm" eventQueueSize="1000000">
- <property name="maxNodes" value="10000" />
- <property name="minTimeToLive" value="60000" />
- </default>
- </eviction>
</jbosscache></programlisting>
<table>
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml 2012-03-06 08:54:13 UTC (rev 5809)
@@ -25,10 +25,16 @@
<para><classname>org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl</classname>;</para>
</listitem>
</itemizedlist>
+ </section>
- <para>In this article, we will mostly mention about
- CacheableLockManagerImpl.</para>
+ <section>
+ <title>CacheableLockManagerImpl</title>
+ <para>CacheableLockManagerImpl stores Lock objects in JBoss-cache, so
+ Locks are replicable and affect on cluster, not only a single node. Also,
+ JBoss-cache has JDBCCacheLoader, so Locks will be stored to the
+ database.</para>
+
<para>You can enable LockManager by adding lock-manager-configuration to
workspace-configuration.</para>
@@ -44,26 +50,11 @@
</lock-manager>
...
</workspace></programlisting>
- </section>
- <section>
- <title>CacheableLockManagerImpl</title>
+ <para>Wher <emphasis>time-out</emphasis> parameter represents interval to
+ remove Expired Locks. LockRemover separates threads, that periodically ask
+ LockManager to remove Locks that live so long.</para>
- <para>CacheableLockManagerImpl stores Lock objects in JBoss-cache, so
- Locks are replicable and affect on cluster, not only a single node. Also,
- JBoss-cache has JDBCCacheLoader, so Locks will be stored to the
- database.</para>
-
- <para>It supports to remove Expired Locks. LockRemover separates threads,
- that periodically ask LockManager to remove Locks that live so long. So,
- the timeout for LockRemover may be set as follows, the default value is
- 30m.</para>
-
- <programlisting language="xml"><properties>
- <property name="time-out" value="10m" />
- ...
-</properties></programlisting>
-
<section>
<title>Configuration</title>
@@ -77,12 +68,11 @@
<programlisting language="xml"><?xml version="1.0" encoding="UTF-8"?>
<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
- <locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false"
+ <locking useLockStriping="false" concurrencyLevel="500" lockParentForChildInsertRemove="false"
lockAcquisitionTimeout="20000" />
<clustering mode="replication" clusterName="${jbosscache-cluster-name}">
<stateRetrieval timeout="20000" fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
<sync />
</clustering>
@@ -95,7 +85,7 @@
For another cache-loader class you should use another template with
cache-loader specific parameters
->
- <loader class="org.jboss.cache.loader.JDBCCacheLoader" async="false" fetchPersistentState="false"
+ <loader class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.JDBCCacheLoader" async="false" fetchPersistentState="false"
ignoreModifications="false" purgeOnStartup="false">
<properties>
cache.jdbc.table.name=${jbosscache-cl-cache.jdbc.table.name}
@@ -113,6 +103,13 @@
</loaders>
</jbosscache></programlisting>
+ <note>
+ <para>To prevent any consistency issue regarding the lock data +
+ please ensure that your cache loader is
+ <emphasis>org.exoplatform.services.jcr.impl.core.lock.jbosscache.JDBCCacheLoader</emphasis>
+ and that your database engine is transactional.</para>
+ </note>
+
<para>As you see, all configurable parameters are filled by templates
and will be replaced by LockManagers configuration parameters:</para>
@@ -143,9 +140,8 @@
and <parameter>jbosscache-cl-cache.jdbc.node.type</parameter> is
the same as cache.jdbc.fqn.type and cache.jdbc.node.type in
JBoss-Cache configuration. You can set those data types according
- to database type (See <link endterm="datatypes.title"
- linkend="datatypes"></link>) or set it as AUTO (or do not set at
- all) and data type will be detected automatically.</para>
+ to your database type or set it as AUTO (or do not set at all) and
+ data type will be detected automatically.</para>
</listitem>
<listitem>
@@ -157,41 +153,73 @@
</listitem>
</itemizedlist></para>
- <para><filename>our-udp-mux.xml</filename></para>
+ <para><filename>our udp-mux.xml</filename></para>
- <programlisting language="xml"><protocol_stacks>
- <stack name="jcr.stack">
- <config>
- <UDP mcast_addr="228.10.10.10" mcast_port="45588" tos="8" ucast_recv_buf_size="20000000"
- ucast_send_buf_size="640000" mcast_recv_buf_size="25000000" mcast_send_buf_size="640000" loopback="false"
- discard_incompatible_packets="true" max_bundle_size="64000" max_bundle_timeout="30"
- use_incoming_packet_handler="true" ip_ttl="2" enable_bundling="true" enable_diagnostics="true"
- thread_naming_pattern="cl" use_concurrent_stack="true" thread_pool.enabled="true" thread_pool.min_threads="2"
- thread_pool.max_threads="8" thread_pool.keep_alive_time="5000" thread_pool.queue_enabled="true"
- thread_pool.queue_max_size="1000" thread_pool.rejection_policy="discard" oob_thread_pool.enabled="true"
- oob_thread_pool.min_threads="1" oob_thread_pool.max_threads="8" oob_thread_pool.keep_alive_time="5000"
- oob_thread_pool.queue_enabled="false" oob_thread_pool.queue_max_size="100" oob_thread_pool.rejection_policy="Run" />
+ <programlisting language="xml"><config>
+ <UDP
+ singleton_name="JCR-cluster"
+ mcast_addr="${jgroups.udp.mcast_addr:228.10.10.10}"
+ mcast_port="${jgroups.udp.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="true"
+ thread_naming_pattern="cl"
- <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> </programlisting>
+ 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></programlisting>
</section>
<section id="datatypes">
Modified: jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml
===================================================================
--- jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml 2012-03-06 07:08:30 UTC (rev 5808)
+++ jcr/branches/1.15.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml 2012-03-06 08:54:13 UTC (rev 5809)
@@ -282,12 +282,13 @@
value="org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter" />
<property name="jbosscache-configuration" value="jbosscache-indexer.xml" />
<property name="jgroups-configuration" value="udp-mux.xml" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="JCR-cluster-indexer-ws" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="JCR-cluster-indexer" />
<property name="max-volatile-time" value="60" />
<property name="rdbms-reindexing" value="true" />
<property name="reindexing-page-size" value="1000" />
<property name="index-recovery-mode" value="from-coordinator" />
+ <property name="jbosscache-shareable" value="true" />
</properties>
</query-handler>
</workspace></programlisting>
@@ -306,12 +307,13 @@
value="org.exoplatform.services.jcr.impl.core.query.jbosscache.LocalIndexChangesFilter" />
<property name="jbosscache-configuration" value="jbosscache-indexer.xml" />
<property name="jgroups-configuration" value="udp-mux.xml" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="JCR-cluster-indexer-ws" />
+ <property name="jgroups-multiplexer-stack" value="false" />
+ <property name="jbosscache-cluster-name" value="JCR-cluster-indexer" />
<property name="max-volatile-time" value="60" />
<property name="rdbms-reindexing" value="true" />
<property name="reindexing-page-size" value="1000" />
<property name="index-recovery-mode" value="from-coordinator" />
+ <property name="jbosscache-shareable" value="true" />
</properties>
</query-handler>
</workspace>
@@ -411,17 +413,8 @@
<clustering mode="replication" clusterName="${jbosscache-cluster-name}">
<stateRetrieval timeout="20000" fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
<sync />
</clustering>
- <!-- Eviction configuration -->
- <eviction wakeUpInterval="5000">
- <default algorithmClass="org.jboss.cache.eviction.FIFOAlgorithm" eventQueueSize="1000000">
- <property name="maxNodes" value="10000" />
- <property name="minTimeToLive" value="60000" />
- </default>
- </eviction>
-
</jbosscache></programlisting>
<para>See more about template configurations <link
14 years, 1 month