Friday, June 5, 2020

How to start sling with RDBMS

Use case: Start Sling using RDBMS (Mysql, Oracle) as a persistent manager.

Prerequisite: Make sure that you have mysql or oracle install. Here is instruction https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/

Currently sling comes out of the box with Tar and Mongo persistent manager but setting up RDBMS instruction is hard to find.

Note that sling underneath has Oak for data persistence and OAK does support different type of RDB persistence that you can get it from here. https://jackrabbit.apache.org/oak/docs/nodestore/document/rdb-document-store.html

Here are steps to set up RDB persistence for sling,


Step 1: Checkout sling project from https://sling.apache.org/downloads.cgi
example
git clone https://github.com/apache/sling-org-apache-sling-starter.git
OR
git clone https://github.com/apache/sling-org-apache-sling-app-cms.git

Step 2: find oak.txt either under src/main/provisioning or builder/src/main/provisioning

Step 3: Add the following lines in oak.txt

[artifacts startLevel=15 runModes=oak_rdb]
mysql/mysql-connector-java/8.0.20
com.h2database/h2-mvstore/1.4.194
org.apache.sling/org.apache.sling.datasource/1.0.4

org.apache.sling.datasource.DataSourceFactory-mysql.config 
url="jdbc:mysql://localhost:3306/slingcms"         
driverClassName="com.mysql.jdbc.Driver"   
username="root"   
password=""   
datasource.name="oak"
validationQuery="show\ tables"
connectionProperties="serverTimezone\=UTC"
Step 4: Find  boot.txt which is under the same folder where oak.txt was and append the following in property sling.run.mode.install.options

sling.run.mode.install.options=oak_tar,oak_mongo,oak_rdb

Step 5: Build project using
mvn clean install

Step 6: Copy stand-alone jar files to the location where you want to run the project (Usually they are under target folder at root or builder directory)

Step 7: Run following command 
java -jar -Dsling.run.modes=oak_rdb <jar file> start
Step 8: To check if right tables are created you can down load any mysql explorer https://www.mysql.com/products/workbench/ and check