We have a change to the bootstrap setup (iirc an include in one of the properties files) that enables a new repository.xml to be used
doc is at [1], look towards the latter sections or search for repository.xml If this looks like it makes sense for Sling I could patch ? Ian 1 http://confluence.sakaiproject.org/display/KERNDOC/KERN-692+Configuring+Nakamura On 14 Jun 2010, at 07:05, Justin Edelson wrote: > I really don't think we should be *suggesting* that people modify the > Sling source tree. > > If it is too hard to build custom launchpad applications, let's fix > that. If it is too hard to provide a custom repository.xml file, let's > fix that. > > But it shouldn't be necessary or recommended to modify sources in order > to get either of these tasks done. > > Justin > > -------- Original Message -------- > Subject: [CONF] Apache Sling Website > Jackrabbit Persistence > Date: Mon, 14 Jun 2010 08:58:00 -0400 (EDT) > From: [email protected] > Reply-To: [email protected] > To: [email protected] > > > > Jackrabbit Persistence > > <https://cwiki.apache.org/confluence/display/SLINGxSITE/Jackrabbit+Persistence> > > > Page *edited* by Felix Meschberger > <https://cwiki.apache.org/confluence/display/~fmeschbe> > > > Changes (5) > > ... > h2. Replace Derby in a running Sling Instance > > To replace Derby in a running Sling instance just uninstall the Derby > bundle and install the JDBC driver bundle through the Web Console (at > {{/system/console}}). > > > ... > h2. Reconfiguring Jackrabbit > > Two options: > * Reconfigure after first startup > * Reconfigure build > To actually use a persistence manager other than the default (Derby) > persistence manager, you have to configure Jackrabbit to use it. There > are two options: You can modify the build or you can create a > {{repository.xml}} file in the {{sling/jackrabbit}} folder before > starting Sling for the first time. > > h3. Prepare repository.xml File > > To prepare a repository.xml file before first startup, use the > {{[repository.xml|http://svn.apache.org/repos/asf/sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/repository.xml]}} > as a template and modify it by replacing the {{<PersistenceManager>}} > elements to refer to the selected persistence manager. > > For example to use PostgreSQL instead of Derby modify the > {{<PersistenceManager>}} elements as follows: > > {code} > <Repository> > ... > <Workspace name="${wsp.name}"> > ... > <PersistenceManager > class="org.apache.jackrabbit.core.persistence.bundle.PostgreSQLPersistenceManager"> > > <param name="driver" value="org.postgresql.Driver"/> > <param name="url" > value="jdbc:postgresql://localhost:5432/YOUR_DB_NAME_HERE"/> > <param name="schema" value="postgresql"/> > <param name="user" value="YOUR_USER_HERE"/> > <param name="password" value="YOUR_PASSWORD_HERE"/> > <param name="schemaObjectPrefix" value="jcr_${wsp.name}_"/> > <param name="externalBLOBs" value="false"/> > </PersistenceManager> > ... > </Workspace> > > <Versioning rootPath="${rep.home}/version"> > ... > <PersistenceManager > class="org.apache.jackrabbit.core.persistence.bundle.PostgreSQLPersistenceManager"> > > <param name="driver" value="org.postgresql.Driver"/> > <param name="url" > value="jdbc:postgresql://localhost:5432/YOUR_DB_NAME_HERE"/> > <param name="schema" value="postgresql"/> > <param name="user" value="YOUR_USER_HERE"/> > <param name="password" value="YOUR_PASSWORD_HERE"/> > <param name="schemaObjectPrefix" value="version_"/> > <param name="externalBLOBs" value="false"/> > </PersistenceManager> > </Versioning> > ... > </Repository> > {code} > > Modify the {{url}}, {{user}}, and {{password}} parameters to match your > database setup. > > > h3. Modify the Build > > To modify the build apply above changes directly to the > {{src/main/resources/repository.xml}} file in the Embedded Jackrabbit > Server bundle source. > > > h2. Credits > > ... > > > Full Content > > > Jackrabbit Persistence > > Out-of-the-box the embedded Jackrabbit repository used by Sling (the > Embedded Jackrabbit Repository bundle) uses Derby to persist the JCR > nodes and properties. For some applications or environments it may be > required or required to replace Derby with another backing store such as > PostgreSQL or Oracle. > > This page is based on the journey of Tony Giaccone to get Sling running > with a PostgreSQL based Jackrabbit instance. > > > Management Summary > > To replace Derby as the persistence manager for Jackrabbit the following > steps are required: > > 1. Provide a JDBC driver for your database as an OSGi bundle > 2. Reconfigure Jackrabbit to use your database > 3. (Re-) Start the Embedded Jackrabbit bundle > > When you are not using the Derby persistence manager, you may safely > remove the Derby bundle from your Sling instance. > > > JDBC Driver > > The hardest thing to do is probably getting the JDBC driver for your > database. One option is to look at the bundles provided by Spring Source > in their repository at http://www.springsource.com/repository/. > > Another option is to create the bundle on your own using Peter Kriens' > BND Tool <http://www.aqute.biz/Code/Bnd>: > > 1. Get the JDBC driver for your database from the driver provider > 2. Wrap the JDBC driver library into an OSGi bundle: > > # Example for PostgreSQL JDBC 3 driver 8.4-701 > $ java -jar bnd.jar wrap postgresql-8.4-701.jdbc3.jar > $ mv postgresql-8.4-701.jdbc3.bar postgresql-8.4-701.jdbc3-bnd.jar > > 3. Deploy the driver to your local Maven 2 Repository (Required if > adding the JDBC driver to the Sling build) > > $ mvn install:install-file -DgroupId=postgresql > -DartifactId=postgresql -Dversion=8.4.701.jdbc3 \ > -Dpackaging=jar -Dfile=postgresql-8.4-701.jdbc3-bnd.jar > > Tony reports no success with the Spring Source bundle, whily the BND > approach worked for the PostgreSQL JDBC driver. > > > Replace Derby in a running Sling Instance > > To replace Derby in a running Sling instance just uninstall the Derby > bundle and install the JDBC driver bundle through the Web Console (at > /system/console). > > > Replace Derby in the Sling Build > > To replace Derby (included with Sling by default) with the new JDBC > driver, the bundle list file src/main/bundles/list.xml of the Sling > Launchpad Builder project can be modified. > > Look for the Derby database section: > > <bundle> > <groupId>org.apache.derby</groupId> > <artifactId>derby</artifactId> > <version>10.5.3.0_1</version> > </bundle> > > and replace this section by the Maven 2 reference to your JDBC driver. > > For example, for the PostgreSQL JDBC driver bundle prepared in the > prepared in the previous step replace the Derby reference with this: > > <bundle> > <groupId>postgresql</groupId> > <artifactId>postgresql</artifactId> > <version>8.4.701.jdbc3</version> > </bundle> > > > Reconfiguring Jackrabbit > > To actually use a persistence manager other than the default (Derby) > persistence manager, you have to configure Jackrabbit to use it. There > are two options: You can modify the build or you can create a > repository.xml file in the sling/jackrabbit folder before starting Sling > for the first time. > > > Prepare repository.xml File > > To prepare a repository.xml file before first startup, use the > repository.xml > <http://svn.apache.org/repos/asf/sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/repository.xml> > as a template and modify it by replacing the <PersistenceManager> > elements to refer to the selected persistence manager. > > For example to use PostgreSQL instead of Derby modify the > <PersistenceManager> elements as follows: > > <Repository> > ... > <Workspace name="${wsp.name}"> > ... > <PersistenceManager > class="org.apache.jackrabbit.core.persistence.bundle.PostgreSQLPersistenceManager"> > <param name="driver" value="org.postgresql.Driver"/> > <param name="url" > value="jdbc:postgresql://localhost:5432/YOUR_DB_NAME_HERE"/> > <param name="schema" value="postgresql"/> > <param name="user" value="YOUR_USER_HERE"/> > <param name="password" value="YOUR_PASSWORD_HERE"/> > <param name="schemaObjectPrefix" value="jcr_${wsp.name}_"/> > <param name="externalBLOBs" value="false"/> > </PersistenceManager> > ... > </Workspace> > > <Versioning rootPath="${rep.home}/version"> > ... > <PersistenceManager > class="org.apache.jackrabbit.core.persistence.bundle.PostgreSQLPersistenceManager"> > <param name="driver" value="org.postgresql.Driver"/> > <param name="url" > value="jdbc:postgresql://localhost:5432/YOUR_DB_NAME_HERE"/> > <param name="schema" value="postgresql"/> > <param name="user" value="YOUR_USER_HERE"/> > <param name="password" value="YOUR_PASSWORD_HERE"/> > <param name="schemaObjectPrefix" value="version_"/> > <param name="externalBLOBs" value="false"/> > </PersistenceManager> > </Versioning> > ... > </Repository> > > Modify the url, user, and password parameters to match your database setup. > > > Modify the Build > > To modify the build apply above changes directly to the > src/main/resources/repository.xml file in the Embedded Jackrabbit Server > bundle source. > > > Credits > > This description is based on Tony Giaccone's description Swapping > Postgres for Derby <http://markmail.org/message/wlbfrukmjjsl33hh> sent > to the Sling Users mailing list. > > Change Notification Preferences > <https://cwiki.apache.org/confluence/users/viewnotifications.action> > View Online > <https://cwiki.apache.org/confluence/display/SLINGxSITE/Jackrabbit+Persistence> > | View Changes > <https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=22315341&revisedVersion=2&originalVersion=1> > | Add Comment > <https://cwiki.apache.org/confluence/display/SLINGxSITE/Jackrabbit+Persistence?showComments=true&showCommentArea=true#addcomment> >
