Dashboard > Community Wiki > ... > Deployment > DataSourcePersistenceManager
DataSourcePersistenceManager Log In View a printable version of the current page.

Added by GrĂ©gory Joseph , last edited by Boris Kraft on Jun 23, 2008  (view change)
Labels: 

DataSourcePersistenceManager, a PersistenceManager which uses the container connection pooling

News

A new persistence manager based on DataSourcePersistenceManager has been released. If you are using Magnolia 3.5, please look at How to setup JNDIPooledDatabasePersistenceManager.

How it works

This persistance manager (to be used with Magnolia 3.0) will retreive the connection needed (one connection each time the driver is called for a load / store or exists method) from a DataSource (which has been retreive by a JNDI call) definition, and close it at the end of the call.

How to install

  • Unzip magnoliaAuthor.war into a tempory directory
  • Download the jar on http://www.iorga.com/downloads/DataSourcePersistenceManager.jar
  • Place it in the WEB-INF/lib/ directory
  • Create the datasource definition. If you're using Tomcat, edit or create the file <TOMCAT_HOME>/conf/Catalina/localhost/<WEB_APP_NAME>.xml (replacing <TOMCAT_HOME> and <WEB_APP_NAME> with the correct values). Here is an example for Tomcat 5.0.x (be carefull, the structure has changed for 5.5.x), don't forget to replace <USER> <PASSWORD> and <DATABASE> :
    <Context path="/magnoliaAuthor">
    <Resource name="jdbc/magnolia" auth="Container" type="javax.sql.DataSource" />
    
      <ResourceParams name="jdbc/magnolia">
         <parameter>
            <name>factory</name>
            <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
         </parameter>
    
         <parameter>
            <name>driverClassName</name>
            <value>com.mysql.jdbc.Driver</value>
         </parameter>
    
         <parameter>
            <name>validationQuery</name>
            <value>select now();</value>
         </parameter>
    
         <parameter>
            <name>maxWait</name>
            <value>5000</value>
         </parameter>
    
         <parameter>
            <name>maxActive</name>
            <value>4</value>
         </parameter>
    
         <parameter>
            <name>password</name>
            <value><PASSWORD></value>
         </parameter>
    
         <parameter>
            <name>url</name>
            <value>jdbc:mysql:///<DATABASE></value>
         </parameter>
    
         <parameter>
            <name>maxIdle</name>
            <value>2</value>
         </parameter>
    
         <parameter>
            <name>username</name>
            <value><USERNAME></value>
         </parameter>
                 <parameter>
            <name>removeAbandoned</name>
            <value>true</value>
         </parameter>
             <parameter>
            <name>removeAbandonedTimeout</name>
            <value>300</value>
         </parameter>
             <parameter>
            <name>logAbandoned</name>
            <value>true</value>
         </parameter>
          </ResourceParams>
    </Context>
  • Then edit or create the file WEB-INF/config/repo-conf/jackrabbit-dspm-search-author.xml based on WEB-INF/config/repo-conf/jackrabbit-mysql-search.xml. Here is an example :
    <Repository>
       <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
           <param name="path" value="${rep.home}/repository"/>
       </FileSystem>
       <Security appName="Jackrabbit">
           <AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager"></AccessManager>
           <LoginModule class="org.apache.jackrabbit.core.security.SimpleLoginModule">
               <param name="anonymousId" value="anonymous"/>
           </LoginModule>
       </Security>
       <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="com.iorgagroup.jackrabbit.core.state.db.DataSourcePersistenceManager">
               <param name="dataSourceLocation" value="java:comp/env/jdbc/magnolia"/>
               <param name="schemaObjectPrefix" value="author_${wsp.name}_"/>
               <param name="externalBLOBs" value="false"/>
           </PersistenceManager>
           <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
               <param name="textFilterClasses"
                      value="org.apache.jackrabbit.core.query.MsExcelTextFilter,org.apache.jackrabbit.core.query.MsPowerPointTextFilter,
                                 org.apache.jackrabbit.core.query.MsWordTextFilter,org.apache.jackrabbit.core.query.PdfTextFilter,
                                 org.apache.jackrabbit.core.query.HTMLTextFilter,
                                 org.apache.jackrabbit.core.query.XMLTextFilter,
                                 org.apache.jackrabbit.core.query.RTFTextFilter"/>
               <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="bufferSize" value="10"/>
           </SearchIndex>
       </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="com.iorgagroup.jackrabbit.core.state.db.DataSourcePersistenceManager">
               <param name="dataSourceLocation" value="java:comp/env/jdbc/magnolia"/>
               <param name="schemaObjectPrefix" value="author_version_"/>
               <param name="externalBLOBs" value="false"/>
           </PersistenceManager>
       </Versioning>
    </Repository>
  • Edit the file WEB-INF/config/default/magnolia.properties and change the value magnolia.repositories.jackrabbit.config to : magnolia.repositories.jackrabbit.config=WEB-INF/config/repo-conf/jackrabbit-dspm-search-author.xml
  • Delete the bundled datas provided with the (not so good) Derby PersistenceManager : delete the folder repositories
  • Rezip magnoliaAuthor.war
  • Proceed through all the previous steps replacing "author" by "public" and "Author" by "Public" anywhere it's possible in order to patch also magnoliaPublic.war

FAQ

Please feel free to add your answered questions here. Most of them are answered at the moment in the user list archive :

In its previous incarnation on JspWiki, this page was last edited on Jun 29, 2007 12:49:53 AM by Magnolia
Other known authors include :

  • AnthonyOgier
  • GregoryJoseph
Powered by a free Atlassian Confluence Open Source Project License granted to Magnolia International. Evaluate Confluence today.
Powered by Atlassian Confluence 2.7, the Enterprise Wiki. Bug/feature request - Atlassian news - Contact administrators