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: </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