You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by Justin Edelson <ju...@gmail.com> on 2010/06/14 15:05:15 UTC
Fwd: [CONF] Apache Sling Website > Jackrabbit Persistence
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: confluence@apache.org
Reply-To: dev@sling.apache.org
To: commits@sling.apache.org
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>
Re: Fwd: [CONF] Apache Sling Website > Jackrabbit Persistence
Posted by Felix Meschberger <fm...@gmail.com>.
Hi,
Ok, I removed all text referring to modifying the builds now and just
describe how to change an existing setup.
Regards
Felix
On 14.06.2010 16:18, Justin Edelson wrote:
> On 6/14/10 9:31 AM, Felix Meschberger wrote:
>> Hi,
>>
>> On 14.06.2010 15:05, Justin Edelson wrote:
>>> I really don't think we should be *suggesting* that people modify the
>>> Sling source tree.
>>
>> Well, yes and no.
>>
>> But basically you are right, the primary way is to just remove the derby
>> bundle, add the JDBC bundle and provide the fixed configuration.
>>
>>>
>>> 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.
>>
>> We don't exactly modify the source. We modify the list of bundles to be
>> included. I think this is somewhat different.
> And if people want to use a customized set of bundles, they should be
> creating their own projects to do that, not hacking on
> launchpad.builder. But this page describes modifying the bundle list in
> launchpad.builder and repository.xml in the jcr.jackrabbit-server. Both
> of which IMHO count as modifying the source.
>
>>
>> For proving a different Jackrabbit Persistence Manager setup: IMHO
>> configuration of Jackrabbit is a problem in its own scope and should be
>> fixed in one way or the other -- but I don't have a clue what these ways
>> really are given the current way Jackrabbit is to be configured.
>>
>> So, maybe just being able to provide a fixed repository.xml during build
>> time may help.
> So the goal is to have a custom repository.xml file in the JAR/WAR? This
> can't be (easily?) done today, but I can imagine doing it. Something like...
>
> if a repository.xml exists at a well-known location (/repository.xml for
> JAR, /WEB-INF/repository.xml for WAR), unpack that file to sling.home
> and set the sling.repository.config.file.url framework property to the
> location.
>
> This adds some Jackrabbit-specific logic to Launchpad, but in a way that
> is not overly problematic. We just have to watch out for this becoming a
> slippery slope.
>
>>
>> Maybe we can provide prepared bundle lists (as build profiles) together
>> with prefabricated repository.xml for a number of persistences managers ?
> With respect to the drivers, what I think might be effective is to add a
> configuration property to the maven-launchpad-plugin like this:
>
> <dbName>mysql</dbName>
>
> or
>
> <dbDriver>
> <groupId>...</groupId>
> <artifactId>...</artifactId>
> <version>...</version>
> </dbDriver>
>
> (the former being an shortcut for some well-known values for the latter)
>
> and this would automatically add the appropriate bundle JAR to the JAR
> or WAR produced by the project. This is, however, contingent upon having
> valid OSGi bundles for the drivers. The SpringSource one appears to be
> fine for MySQL, but I can't speak for any of the others.
>
> I'm not sure about providing prefab repository.xml for other PMs. That
> just seems like a support problem waiting to happen.
>
> Justin
>
>>
>> Regards
>> Felix
>>
>>>
>>> Justin
>>>
>>> -------- Original Message --------
>>> Subject: [CONF] Apache Sling Website > Jackrabbit Persistence
>>> Date: Mon, 14 Jun 2010 08:58:00 -0400 (EDT)
>>> From: confluence@apache.org
>>> Reply-To: dev@sling.apache.org
>>> To: commits@sling.apache.org
>>>
>>>
>>>
>>> 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>
>>>
>>>
>
>
Re: Fwd: [CONF] Apache Sling Website > Jackrabbit Persistence
Posted by Justin Edelson <ju...@gmail.com>.
On 6/14/10 9:31 AM, Felix Meschberger wrote:
> Hi,
>
> On 14.06.2010 15:05, Justin Edelson wrote:
>> I really don't think we should be *suggesting* that people modify the
>> Sling source tree.
>
> Well, yes and no.
>
> But basically you are right, the primary way is to just remove the derby
> bundle, add the JDBC bundle and provide the fixed configuration.
>
>>
>> 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.
>
> We don't exactly modify the source. We modify the list of bundles to be
> included. I think this is somewhat different.
And if people want to use a customized set of bundles, they should be
creating their own projects to do that, not hacking on
launchpad.builder. But this page describes modifying the bundle list in
launchpad.builder and repository.xml in the jcr.jackrabbit-server. Both
of which IMHO count as modifying the source.
>
> For proving a different Jackrabbit Persistence Manager setup: IMHO
> configuration of Jackrabbit is a problem in its own scope and should be
> fixed in one way or the other -- but I don't have a clue what these ways
> really are given the current way Jackrabbit is to be configured.
>
> So, maybe just being able to provide a fixed repository.xml during build
> time may help.
So the goal is to have a custom repository.xml file in the JAR/WAR? This
can't be (easily?) done today, but I can imagine doing it. Something like...
if a repository.xml exists at a well-known location (/repository.xml for
JAR, /WEB-INF/repository.xml for WAR), unpack that file to sling.home
and set the sling.repository.config.file.url framework property to the
location.
This adds some Jackrabbit-specific logic to Launchpad, but in a way that
is not overly problematic. We just have to watch out for this becoming a
slippery slope.
>
> Maybe we can provide prepared bundle lists (as build profiles) together
> with prefabricated repository.xml for a number of persistences managers ?
With respect to the drivers, what I think might be effective is to add a
configuration property to the maven-launchpad-plugin like this:
<dbName>mysql</dbName>
or
<dbDriver>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
</dbDriver>
(the former being an shortcut for some well-known values for the latter)
and this would automatically add the appropriate bundle JAR to the JAR
or WAR produced by the project. This is, however, contingent upon having
valid OSGi bundles for the drivers. The SpringSource one appears to be
fine for MySQL, but I can't speak for any of the others.
I'm not sure about providing prefab repository.xml for other PMs. That
just seems like a support problem waiting to happen.
Justin
>
> Regards
> Felix
>
>>
>> Justin
>>
>> -------- Original Message --------
>> Subject: [CONF] Apache Sling Website > Jackrabbit Persistence
>> Date: Mon, 14 Jun 2010 08:58:00 -0400 (EDT)
>> From: confluence@apache.org
>> Reply-To: dev@sling.apache.org
>> To: commits@sling.apache.org
>>
>>
>>
>> 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>
>>
>>
Re: Fwd: [CONF] Apache Sling Website > Jackrabbit Persistence
Posted by Felix Meschberger <fm...@gmail.com>.
Hi,
On 14.06.2010 15:05, Justin Edelson wrote:
> I really don't think we should be *suggesting* that people modify the
> Sling source tree.
Well, yes and no.
But basically you are right, the primary way is to just remove the derby
bundle, add the JDBC bundle and provide the fixed configuration.
>
> 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.
We don't exactly modify the source. We modify the list of bundles to be
included. I think this is somewhat different.
For proving a different Jackrabbit Persistence Manager setup: IMHO
configuration of Jackrabbit is a problem in its own scope and should be
fixed in one way or the other -- but I don't have a clue what these ways
really are given the current way Jackrabbit is to be configured.
So, maybe just being able to provide a fixed repository.xml during build
time may help.
Maybe we can provide prepared bundle lists (as build profiles) together
with prefabricated repository.xml for a number of persistences managers ?
Regards
Felix
>
> Justin
>
> -------- Original Message --------
> Subject: [CONF] Apache Sling Website > Jackrabbit Persistence
> Date: Mon, 14 Jun 2010 08:58:00 -0400 (EDT)
> From: confluence@apache.org
> Reply-To: dev@sling.apache.org
> To: commits@sling.apache.org
>
>
>
> 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>
>
>
Re: [CONF] Apache Sling Website > Jackrabbit Persistence
Posted by Ian Boston <ie...@tfd.co.uk>.
On 14 Jun 2010, at 07:59, Justin Edelson wrote:
> I like the idea of creating an include file which can be specified on
> the command line like this, although IMHO it would be more inline with
> what already is there to not use a system property and add a command
> line argument, like:
> -i /etc/nakamura/setup-repository.properties
agreed
That makes much more sense that a -D
>
> I'm not sure how this would/could work in the webapp case. Is Nakamura
> standalone-only?
yes it is.
Ian
Re: [CONF] Apache Sling Website > Jackrabbit Persistence
Posted by Justin Edelson <ju...@gmail.com>.
I like the idea of creating an include file which can be specified on
the command line like this, although IMHO it would be more inline with
what already is there to not use a system property and add a command
line argument, like:
-i /etc/nakamura/setup-repository.properties
I'm not sure how this would/could work in the webapp case. Is Nakamura
standalone-only?
Justin
On 6/14/10 9:16 AM, Ian Boston wrote:
> 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: confluence@apache.org
>> Reply-To: dev@sling.apache.org
>> To: commits@sling.apache.org
>>
>>
>>
>> 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>
>>
>
Re: [CONF] Apache Sling Website > Jackrabbit Persistence
Posted by Ian Boston <ie...@tfd.co.uk>.
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: confluence@apache.org
> Reply-To: dev@sling.apache.org
> To: commits@sling.apache.org
>
>
>
> 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>
>