2016-07-27 9 views
2

Ich habe ein Magnolia CMS-System und ich versuche, ein geclustertes Repository für einen Arbeitsbereich mit benutzergeneriertem Inhalt zu konfigurieren. Wir werden einen Autor und eine öffentliche Instanz haben, jede mit einer eigenen MYSQL-Datenbank für das Magnolia-Standard-Repository. Der vom Benutzer generierte Inhalt sollte in einer h2-Datenbank gespeichert werden, die sich in einem freigegebenen Verzeichnis befindet. Wir können die h2-Datenbank nicht direkt im Servermodus starten, daher werden die Verbindungen zur h2-Datenbank als gemischter Modus mit dem Flag AUTO_SERVER = true konfiguriert (siehe http://www.h2database.com/html/features.html#auto_mixed_mode).Jackrabbit-Clustering mit einer H2-Datenbank im gemischten Modus

Die Initialisierung der Repositories ist fehlerfrei. Sobald Daten im geclusterten Repository gespeichert sind, stoppt/hängt der nächste Neustart während der Ladephase des geclusterten Repositorys (siehe Protokoll).

Habe ich eine Konfiguration vermisst? Ist es sogar möglich, ein h2 im gemischten Modus für das Jackrabbit-Clustering zu verwenden?

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> 

gruppierten-hase-Bündel-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> 

log:

--------------------------------------------- 
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 .: Ich bin nicht sicher, warum es sagt "cluster id:" "'. Obwohl ich es als org.apache.jackrabbit.core.cluster.node_id in meiner Eigenschaftendatei festgelegt habe.

Antwort

1

Aus der folgenden wiki page:

Die Cluster-ID identifiziert die Instanz und verwendet wird, um Änderungen an der Zeitschrift zu schreiben sowie Änderungen aus der Zeitschrift zu laden. Stellen Sie sicher, dass dies ein eindeutiger Wert ist und nicht mit den anderen Knoten im Cluster geteilt wird.

Cluster-ID definiert werden kann entweder in der Eigenschaftendatei (bequemste Weg) oder in den Persistenz-Managern in der Cluster-Konfiguration (in beiden Richtungen in den beigefügten Dateien verwendet werden)

Da Sie nicht zur Verfügung gestellt haben Wenn Sie eine Cluster-ID in Ihrer Jackrabbit-Konfigurationsdatei oben eingeben, können Sie überprüfen, ob Ihre magnolia.properties Datei einen enthält? Wenn nicht, legen Sie einfach einen eindeutigen Wert für jede Magnolia-Instanz fest, die auf den JCR-Cluster zugreift.

Verwandte Themen