2016-07-27 1 views
2

J'ai un système Magnolia CMS et j'essaie de configurer un référentiel en cluster pour un espace de travail avec un contenu généré par l'utilisateur. Nous aurons un auteur et une instance publique, chacun avec une base de données MYSQL dédiée au référentiel magnolia default. Le contenu généré par l'utilisateur doit être stocké dans une base de données h2 qui sera située dans un répertoire partagé. Nous ne pouvons pas démarrer la base de données h2 directement en mode serveur. Par conséquent, les connexions à la base de données h2 seront configurées en mode mixte avec l'indicateur AUTO_SERVER = true (voir http://www.h2database.com/html/features.html#auto_mixed_mode).Mise en cluster Jackrabbit avec une base de données H2 en mode mixte

L'initialisation des référentiels est sans faille. Une fois les données stockées dans le référentiel en cluster, le redémarrage suivant s'arrête/se bloque pendant la phase de chargement du référentiel en cluster (voir le journal).

Est-ce que j'ai manqué une configuration? Est-il même possible d'utiliser un h2 en mode mixte pour le clustering jackrabbit?

repository.xml:

<JCR> 
    <RepositoryMapping> 
     <Map name="userGeneratedContent" repositoryName="magnoliacluster" workspaceName="userGeneratedContent" /> 
     <Map name="website" repositoryName="magnolia" workspaceName="website" /> 
     <Map name="config" repositoryName="magnolia" workspaceName="config" /> 
     <Map name="users" repositoryName="magnolia" workspaceName="users" /> 
     <Map name="userroles" repositoryName="magnolia" workspaceName="userroles" /> 
     <Map name="usergroups" repositoryName="magnolia" workspaceName="usergroups" /> 
     <Map name="mgnlSystem" repositoryName="magnolia" workspaceName="mgnlSystem" /> <!-- System internal data --> 
     <Map name="mgnlVersion" repositoryName="magnolia" workspaceName="mgnlVersion" /> <!-- magnolia version workspace --> 
    </RepositoryMapping> 

    <!-- magnolia default repository --> 
    <Repository name="magnolia" provider="info.magnolia.jackrabbit.ProviderImpl" loadOnStartup="true"> 
     <param name="configFile" value="${magnolia.repositories.jackrabbit.config}" /> 
     <param name="repositoryHome" value="${magnolia.repositories.home}/magnolia" /> 
     <!-- the default node types are loaded automatically 
      <param name="customNodeTypes" value="WEB-INF/config/repo-conf/nodetypes/magnolia_nodetypes.xml" /> 
     --> 
     <param name="contextFactoryClass" value="org.apache.jackrabbit.core.jndi.provider.DummyInitialContextFactory" /> 
     <param name="providerURL" value="localhost" /> 
     <param name="bindName" value="${magnolia.webapp}" /> 
     <workspace name="website" /> 
     <workspace name="config" /> 
     <workspace name="users" /> 
     <workspace name="userroles" /> 
     <workspace name="usergroups" /> 
     <workspace name="mgnlSystem" /> 
     <workspace name="mgnlVersion" /> 
    </Repository> 

    <!-- magnolia cluster repository --> 
    <Repository name="magnoliacluster" provider="info.magnolia.jackrabbit.ProviderImpl" loadOnStartup="true"> 
     <param name="configFile" value="${magnolia.repositories.jackrabbit.cluster.config}" /> 
     <param name="repositoryHome" value="${magnolia.repositories.home}/magnoliacluster" /> 
     <!-- the default node types are loaded automatically 
      <param name="customNodeTypes" value="WEB-INF/config/repo-conf/nodetypes/magnolia_nodetypes.xml" /> 
     --> 
     <param name="contextFactoryClass" value="org.apache.jackrabbit.core.jndi.provider.DummyInitialContextFactory" /> 
     <param name="providerURL" value="localhost" /> 
     <param name="bindName" value="cluster-${magnolia.webapp}" /> 
     <workspace name="userGeneratedContent" /> 
    </Repository> 
</JCR> 

cluster-Jackrabbit-paquet-h2-search.xml:

<Repository> 
    <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem"> 
     <param name="url" value="jdbc:h2:/PATH/TO/db;AUTO_SERVER=TRUE"/> 
     <param name="schemaObjectPrefix" value="fs_"/> 
     <param name="user" value="sa"/> 
     <param name="password" value="sa"/> 
    </FileSystem> 
    <Security appName="magnolia"> 
     <SecurityManager class="org.apache.jackrabbit.core.DefaultSecurityManager" /> 
     <AccessManager 
      class="org.apache.jackrabbit.core.security.DefaultAccessManager"> 
     </AccessManager> 
     <LoginModule 
      class="info.magnolia.jaas.sp.jcr.JackrabbitAuthenticationModule"> 
     </LoginModule> 
    </Security> 
    <DataStore class="org.apache.jackrabbit.core.data.FileDataStore"> 
     <param name="url" value="jdbc:h2:/PATH/TO/db;AUTO_SERVER=TRUE"/> 
     <param name="schemaObjectPrefix" value="datastore_"/> 
     <param name="user" value="sa"/> 
     <param name="password" value="sa"/> 
    </DataStore> 
    <Workspaces rootPath="${rep.home}/workspaces" 
     defaultWorkspace="default" /> 
    <Workspace name="default"> 
     <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> 
      <param name="path" value="${wsp.home}/default" /> 
     </FileSystem> 
     <PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.H2PersistenceManager"> 
      <param name="url" value="jdbc:h2:/PATH/TO/db;AUTO_SERVER=TRUE"/> 
      <param name="schemaObjectPrefix" value="ws_${wsp.name}_"/> 
      <param name="user" value="sa"/> 
      <param name="password" value="sa"/> 
     </PersistenceManager> 
     <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex"> 
      <param name="path" value="${wsp.home}/index" /> 
      <param name="useCompoundFile" value="true" /> 
      <param name="minMergeDocs" value="100" /> 
      <param name="volatileIdleTime" value="3" /> 
      <param name="maxMergeDocs" value="100000" /> 
      <param name="mergeFactor" value="10" /> 
      <param name="maxFieldLength" value="10000" /> 
      <param name="bufferSize" value="10" /> 
      <param name="cacheSize" value="1000" /> 
      <param name="forceConsistencyCheck" value="false" /> 
      <param name="autoRepair" value="true" /> 
      <param name="queryClass" value="org.apache.jackrabbit.core.query.QueryImpl" /> 
      <param name="resultFetchSize" value="100" /> 
      <param name="extractorPoolSize" value="3" /> 
      <param name="extractorTimeout" value="100" /> 
      <param name="extractorBackLogSize" value="100" /> 
      <!-- needed to highlight the searched term --> 
      <param name="supportHighlighting" value="true"/> 
     </SearchIndex> 
     <WorkspaceSecurity> 
      <AccessControlProvider 
       class="info.magnolia.cms.core.MagnoliaAccessProvider" /> 
     </WorkspaceSecurity> 
    </Workspace> 
    <Versioning rootPath="${rep.home}/version"> 
     <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> 
      <param name="path" value="${rep.home}/workspaces/version" /> 
     </FileSystem> 
     <PersistenceManager 
       class="org.apache.jackrabbit.core.persistence.bundle.H2PersistenceManager"> 
      <param name="url" value="jdbc:h2:${rep.home}/version/db" /> 
      <param name="schemaObjectPrefix" value="version_" /> 
     </PersistenceManager> 
    </Versioning> 
    <Cluster> 
     <Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal"> 
      <param name="driver" value="org.h2.Driver" /> 
      <param name="url" value="jdbc:h2:/PATH/TO/db;AUTO_SERVER=TRUE"/> 
      <param name="schemaObjectPrefix" value="journal_"/> 
      <param name="databaseType" value="h2"/> 
      <param name="user" value="sa"/> 
      <param name="password" value="sa"/> 
     </Journal> 
    </Cluster> 
</Repository> 

journal:

--------------------------------------------- 
MAGNOLIA LICENSE 
--------------------------------------------- 
Version number : 5.3.5 
Build   : 4. November 2014 (rev. of UNKNOWN) 
Edition  : Enterprise Edition 
Provider  : Magnolia International Ltd. ([email protected]) 
2016-07-27 11:17:59,919 INFO info.magnolia.cms.beans.config.ConfigLoader  : Initializing content repositories 
2016-07-27 11:17:59,922 INFO info.magnolia.repository.DefaultRepositoryManager : Loading JCR 
2016-07-27 11:17:59,931 INFO info.magnolia.repository.DefaultRepositoryManager : Loading JCR magnolia 
2016-07-27 11:17:59,951 INFO info.magnolia.jackrabbit.ProviderImpl    : Loading repository at /PATH/author/repositories/magnolia (config file: /PATH/WEB-INF/config/repo-conf/jackrabbit-bundle-h2-search.xml) - cluster id: "<unset>" 
Jul 27, 2016 11:18:00 AM org.apache.catalina.startup.HostConfig deployDirectory 
INFO: Deploying web application directory /PATH/webapps/manager 
Jul 27, 2016 11:18:00 AM org.apache.catalina.startup.TldConfig execute 
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
Jul 27, 2016 11:18:00 AM org.apache.catalina.startup.HostConfig deployDirectory 
INFO: Deployment of web application directory /PATH/webapps/manager has finished in 417 ms 
2016-07-27 11:18:02,174 INFO info.magnolia.repository.DefaultRepositoryManager : Loading JCR magnoliacluster 
2016-07-27 11:18:02,174 INFO info.magnolia.jackrabbit.ProviderImpl    : Loading repository at /PATH/author/repositories/magnoliacluster (config file: /PATH/WEB-INF/config/repo-conf/clustered-jackrabbit-bundle-h2-search.xml) - cluster id: "<unset>" 

Ps .: Je ne suis pas Bien sûr, il est dit 'ID de cluster: ""'. Bien que je l'ai défini comme org.apache.jackrabbit.core.cluster.node_id dans mon fichier de propriétés.

Répondre

1

De l'wiki page suivante:

L'ID du cluster identifie l'instance et est utilisé pour écrire des modifications à la revue ainsi que des changements de charge de la revue. Assurez-vous que cette valeur est unique et qu'elle n'est pas partagée avec les autres nœuds du cluster.

id cluster peut être défini dans le fichier de propriétés (de manière la plus pratique) ou dans le gestionnaire de persistance dans la configuration du cluster (deux méthodes sont utilisées dans les fichiers joints)

Puisque vous n'avez pas fourni n'importe quel identifiant de cluster dans votre fichier de configuration jackrabbit ci-dessus, pourriez-vous vérifier que votre fichier magnolia.properties en contient un? Sinon, définissez simplement une valeur unique pour chaque instance Magnolia accédant au cluster JCR.