SlideShare a Scribd company logo
1 of 22
Download to read offline
Woonsan Ko
Nov. 15, 2018
(By courtesy of USFWS Mountain-Prairie, licensed by CC BY 2.0)
● slideshare.net/woonsan
● woonsanko.blogspot.com
“What is Apache Jackrabbit?
Is it what I need to know?”
Disclaimer:
Not supported yet
by BRC.
● (repository.xml)
<Repository>
<!-- SNIP -->
<Workspace name="${wsp.name}">
<FileSystem class="...">...</FileSystem>
<PersistenceManager class="...">...</PersistenceManager>
<SearchIndex class="...">...</SearchIndex>
<!-- SNIP -->
</Workspace>
<Versioning rootPath="${rep.home}/version">
<FileSystem class="...">...</FileSystem>
<PersistenceManager class="...">...</PersistenceManager>
<!-- SNIP -->
</Versioning>
<DataStore class="org.apache.jackrabbit.core.data.db.DbDataStore">...</DataStore>
<!-- SNIP -->
</Repository>
“Can’t we store huge amount of binary data in JCR?” *
* https://woonsanko.blogspot.com/2016/08/cant-we-store-huge-amount-of-binary.html
● When using DbDataStore (the default option)
> 85% : binaries
(DATASTORE table)
* More at https://woonsanko.blogspot.com/2018/11/apache-jackrabbit-database-usage.html
Apache Jackrabbit DataStore supports:
● PersistenceManager
● DataStore
●
<< DbDataStore >> << VFS DataStores >>
AbstractDataStore
DbDataStore CachingDataStore
S3DataStoreVFSDataStore
LocalCache
E.g, ./datastore/
● (repository.xml)
<Repository>
<!-- SNIP -->
<DataStore class="org.apache.jackrabbit.aws.ext.ds.S3DataStore">
<param name="config" value="${catalina.base}/conf/aws-s3-datastore.properties"/>
<param name="cacheSize" value="68719476736"/> <!-- 64MB -->
<param name="minRecordLength " value="1024"/>
<!-- SNIP -->
<param name="concurrentUploadsThreads" value="10"/>
<param name="asyncUploadLimit" value="100"/>
<param name="uploadRetries" value="3"/>
</DataStore>
<!-- SNIP -->
</Repository>
* Find example configs from https://github.com/woonsanko/hippo-davstore-demo/tree/master/conf/.
● (repository.xml)
<Repository>
<!-- SNIP -->
<DataStore class="org.apache.jackrabbit.vfs.ext.ds.VFSDataStore">
<param name="config" value="${catalina.base}/conf/vfs2-datastore-sftp.properties" />
<param name="cacheSize" value="68719476736"/> <!-- 64MB -->
<param name="minRecordLength" value="1024"/>
<!-- SNIP -->
<param name="asyncWritePoolSize" value="10" />
</DataStore>
<!-- SNIP -->
</Repository>
* Find example configs from https://github.com/woonsanko/hippo-davstore-demo/tree/master/conf/.
● Benefits:
○ Transparent
○ Almost unlimited storage for binaries
■ Amazon S3, SFTP Gateway for S3
■ SFTP file server, SFTP server with Google Cloud Platform backend
○ Cheaper storage
■ Amazon RDS vs. Amazon S3 buckets or SFTP
○ Faster backup, import, migration
■ Build new environment quickly from production data.
○ Save backup storage
■ Nightly DB backup files
○ Encryption at rest
■ Amazon S3 encryption, SFTP server with Linux file system encryption
“Can’t we keep unlimited amount of revision history?”
* https://woonsanko.blogspot.com/2018/11/externalizing-jcr-version-storage-with.html
●
[1] https://www.onehippo.org/library/administration/maintenance/cleaning-up-version-history.html
> 55% : versions
(VERSION_BUNDLE table)
● When using BundleDbPersistenceManager (the default option)
> 25% : binaries
(DATASTORE table)
* More at https://woonsanko.blogspot.com/2018/11/apache-jackrabbit-database-usage.html
● (repository.xml)
<Repository>
<!-- SNIP -->
<Versioning rootPath="${rep.home}/version">
<FileSystem class="org.apache.jackrabbit.vfs.ext.fs.VFSFileSystem">
<param name="config" value="${catalina.base}/conf/vfs2-filesystem-sftp.properties" />
</FileSystem>
<PersistenceManager
class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager">
</PersistenceManager>
<!-- SNIP -->
</Versioning>
<!-- SNIP →
</Repository>
* Find example configs from https://github.com/woonsanko/hippo-davstore-demo/tree/master/conf/.
- The first project, FeedbackPlugin, started on 2008-01-11.
- boudekerk did the first SVN commit at 2008-01-15 14:20:15 CEST.
- arjecahn made the second commit on that day at 14:49 CEST.
- ...
- jeroenhoffman: “Moving to github is done!” at 2017-02-17 13:34:00 CEST.
- 32 active projects... welcoming your participation!
- ...
● “Don’t stay up. Just schedule it.”
○ The Forge Utilities project supports scheduling Groovy Updater scripts.
○ Check out https://bloomreach-forge.github.io/hippo-utilities/
● “FreeMarker, Handlebars or Thymeleaf? No problem!”
○ The Tempating Support project allows to use any of those.
○ Check out https://bloomreach-forge.github.io/templating-support/
● “Content Packaging REST endpoints? Content-EXIM!”
○ It now supports built-in REST endpoints to export and import content in a flexible way.
○ Check out https://bloomreach-forge.github.io/content-export-import/builtin-rest-services.html
● “Web page flow control like Spring WebFlow in HST apps? Page-Flow!”
○ Page-Flow project supports easy page flow control development, seamlessly integrated with
Channel Manager and Relevance.
○ Checkout https://bloomreach-forge.github.io/page-flow/
● “Can we update webfiles on server at runtime?” or
“Can we use JCR API through JCR over HTTP?”
○ Jackrabbit support SimpleWebDAVServlet and JcrRemotingServlet.
○ Check out https://bloomreach-forge.github.io/hippo-jcr-over-webdav/.
○ Use cadaver or cyberduck for WebDAV access.
○ JCR-Shell (https://bloomreach-forge.github.io/jcr-shell/), a CLI tool for JCR,
using JCR over WebDAV (JCR Remoting).
● https://github.com/woonsanko/hippo-davstore-demo
○ Follow README.md to build and run it on your laptop.
● Scenarios
○ VFS DataStore with SFTP backend
○ VFS FileSystem for Versioning
○ More if time allows...
https://bloomreach-forge.github.io/
https://github.com/bloomreach-forge
...
● jackrabbit.apache.org
● developers.bloomreach.com / www.onehippo.org
● bloomreach-forge.github.io/

More Related Content

What's hot

Elasticsearch 1.x Cluster Installation (VirtualBox)
Elasticsearch 1.x Cluster Installation (VirtualBox)Elasticsearch 1.x Cluster Installation (VirtualBox)
Elasticsearch 1.x Cluster Installation (VirtualBox)Amir Sedighi
 
Drupal feature proposal: two new stream-wrappers
Drupal feature proposal: two new stream-wrappersDrupal feature proposal: two new stream-wrappers
Drupal feature proposal: two new stream-wrappersMarcus Deglos
 
Distributed Data Processing Workshop - SBU
Distributed Data Processing Workshop - SBUDistributed Data Processing Workshop - SBU
Distributed Data Processing Workshop - SBUAmir Sedighi
 
FOSSASIA 2015 - 10 Features your developers are missing when stuck with Propr...
FOSSASIA 2015 - 10 Features your developers are missing when stuck with Propr...FOSSASIA 2015 - 10 Features your developers are missing when stuck with Propr...
FOSSASIA 2015 - 10 Features your developers are missing when stuck with Propr...Ashnikbiz
 
MongoDB WiredTiger Internals
MongoDB WiredTiger InternalsMongoDB WiredTiger Internals
MongoDB WiredTiger InternalsNorberto Leite
 
MySQL Live Migration - Common Scenarios
MySQL Live Migration - Common ScenariosMySQL Live Migration - Common Scenarios
MySQL Live Migration - Common ScenariosMydbops
 
Mojo Facets – so, you have data and browser?
Mojo Facets – so, you have data and browser?Mojo Facets – so, you have data and browser?
Mojo Facets – so, you have data and browser?Dobrica Pavlinušić
 
MongoDB Miami Meetup 1/26/15: Introduction to WiredTiger
MongoDB Miami Meetup 1/26/15: Introduction to WiredTigerMongoDB Miami Meetup 1/26/15: Introduction to WiredTiger
MongoDB Miami Meetup 1/26/15: Introduction to WiredTigerValeri Karpov
 
An Introduction to Elasticsearch for Beginners
An Introduction to Elasticsearch for BeginnersAn Introduction to Elasticsearch for Beginners
An Introduction to Elasticsearch for BeginnersAmir Sedighi
 
Building low latency java applications with ehcache
Building low latency java applications with ehcacheBuilding low latency java applications with ehcache
Building low latency java applications with ehcacheChris Westin
 
Countdown to PostgreSQL v9.5 - Foriegn Tables can be part of Inheritance Tree
Countdown to PostgreSQL v9.5 - Foriegn Tables can be part of Inheritance Tree Countdown to PostgreSQL v9.5 - Foriegn Tables can be part of Inheritance Tree
Countdown to PostgreSQL v9.5 - Foriegn Tables can be part of Inheritance Tree Ashnikbiz
 
Developing, deploying and monitoring Java applications using Google App Engine
Developing, deploying and monitoring Java applications using Google App EngineDeveloping, deploying and monitoring Java applications using Google App Engine
Developing, deploying and monitoring Java applications using Google App EngineIndicThreads
 
Status of Hadoop 0.23 Operations at Yahoo
Status of Hadoop 0.23 Operations at YahooStatus of Hadoop 0.23 Operations at Yahoo
Status of Hadoop 0.23 Operations at YahooDataWorks Summit
 
Premiers pas avec Ops Manager
Premiers pas avec Ops ManagerPremiers pas avec Ops Manager
Premiers pas avec Ops ManagerMongoDB
 
GR8Conf 2011: Building Progressive UIs with Grails
GR8Conf 2011: Building Progressive UIs with GrailsGR8Conf 2011: Building Progressive UIs with Grails
GR8Conf 2011: Building Progressive UIs with GrailsGR8Conf
 
Using memcache to improve php performance
Using memcache to improve php performanceUsing memcache to improve php performance
Using memcache to improve php performanceSudar Muthu
 
Drupalcamp Estonia - High Performance Sites
Drupalcamp Estonia - High Performance SitesDrupalcamp Estonia - High Performance Sites
Drupalcamp Estonia - High Performance Sitesdrupalcampest
 

What's hot (20)

Elasticsearch 1.x Cluster Installation (VirtualBox)
Elasticsearch 1.x Cluster Installation (VirtualBox)Elasticsearch 1.x Cluster Installation (VirtualBox)
Elasticsearch 1.x Cluster Installation (VirtualBox)
 
Drupal feature proposal: two new stream-wrappers
Drupal feature proposal: two new stream-wrappersDrupal feature proposal: two new stream-wrappers
Drupal feature proposal: two new stream-wrappers
 
Distributed Data Processing Workshop - SBU
Distributed Data Processing Workshop - SBUDistributed Data Processing Workshop - SBU
Distributed Data Processing Workshop - SBU
 
X3
X3X3
X3
 
FOSSASIA 2015 - 10 Features your developers are missing when stuck with Propr...
FOSSASIA 2015 - 10 Features your developers are missing when stuck with Propr...FOSSASIA 2015 - 10 Features your developers are missing when stuck with Propr...
FOSSASIA 2015 - 10 Features your developers are missing when stuck with Propr...
 
MongoDB WiredTiger Internals
MongoDB WiredTiger InternalsMongoDB WiredTiger Internals
MongoDB WiredTiger Internals
 
MySQL Live Migration - Common Scenarios
MySQL Live Migration - Common ScenariosMySQL Live Migration - Common Scenarios
MySQL Live Migration - Common Scenarios
 
Mojo Facets – so, you have data and browser?
Mojo Facets – so, you have data and browser?Mojo Facets – so, you have data and browser?
Mojo Facets – so, you have data and browser?
 
MongoDB Miami Meetup 1/26/15: Introduction to WiredTiger
MongoDB Miami Meetup 1/26/15: Introduction to WiredTigerMongoDB Miami Meetup 1/26/15: Introduction to WiredTiger
MongoDB Miami Meetup 1/26/15: Introduction to WiredTiger
 
An Introduction to Elasticsearch for Beginners
An Introduction to Elasticsearch for BeginnersAn Introduction to Elasticsearch for Beginners
An Introduction to Elasticsearch for Beginners
 
Building low latency java applications with ehcache
Building low latency java applications with ehcacheBuilding low latency java applications with ehcache
Building low latency java applications with ehcache
 
Countdown to PostgreSQL v9.5 - Foriegn Tables can be part of Inheritance Tree
Countdown to PostgreSQL v9.5 - Foriegn Tables can be part of Inheritance Tree Countdown to PostgreSQL v9.5 - Foriegn Tables can be part of Inheritance Tree
Countdown to PostgreSQL v9.5 - Foriegn Tables can be part of Inheritance Tree
 
Mini-Training: To cache or not to cache
Mini-Training: To cache or not to cacheMini-Training: To cache or not to cache
Mini-Training: To cache or not to cache
 
Developing, deploying and monitoring Java applications using Google App Engine
Developing, deploying and monitoring Java applications using Google App EngineDeveloping, deploying and monitoring Java applications using Google App Engine
Developing, deploying and monitoring Java applications using Google App Engine
 
Status of Hadoop 0.23 Operations at Yahoo
Status of Hadoop 0.23 Operations at YahooStatus of Hadoop 0.23 Operations at Yahoo
Status of Hadoop 0.23 Operations at Yahoo
 
Premiers pas avec Ops Manager
Premiers pas avec Ops ManagerPremiers pas avec Ops Manager
Premiers pas avec Ops Manager
 
Grails and Neo4j
Grails and Neo4jGrails and Neo4j
Grails and Neo4j
 
GR8Conf 2011: Building Progressive UIs with Grails
GR8Conf 2011: Building Progressive UIs with GrailsGR8Conf 2011: Building Progressive UIs with Grails
GR8Conf 2011: Building Progressive UIs with Grails
 
Using memcache to improve php performance
Using memcache to improve php performanceUsing memcache to improve php performance
Using memcache to improve php performance
 
Drupalcamp Estonia - High Performance Sites
Drupalcamp Estonia - High Performance SitesDrupalcamp Estonia - High Performance Sites
Drupalcamp Estonia - High Performance Sites
 

Similar to Hidden gems in Apache Jackrabbit and BloomReach Forge

Pom configuration java xml
Pom configuration java xmlPom configuration java xml
Pom configuration java xmlakmini
 
Spring into rails
Spring into railsSpring into rails
Spring into railsHiro Asari
 
Jlook web ui framework
Jlook web ui frameworkJlook web ui framework
Jlook web ui frameworkHongSeong Jeon
 
Jaxitalia09 Spring Best Practices
Jaxitalia09 Spring Best PracticesJaxitalia09 Spring Best Practices
Jaxitalia09 Spring Best PracticesMassimiliano Dessì
 
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Arun Gupta
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortalJennifer Bourey
 
Riga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationRiga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationNicolas Fränkel
 
Building com Phing - 7Masters PHP
Building com Phing - 7Masters PHPBuilding com Phing - 7Masters PHP
Building com Phing - 7Masters PHPiMasters
 
Automated Java Deployments With Rpm
Automated Java Deployments With RpmAutomated Java Deployments With Rpm
Automated Java Deployments With RpmMartin Jackson
 
How to simplify OSGi development using OBR - Peter Kriens
How to simplify OSGi development using OBR - Peter KriensHow to simplify OSGi development using OBR - Peter Kriens
How to simplify OSGi development using OBR - Peter Kriensmfrancis
 
spring3.2 java config Servler3
spring3.2 java config Servler3spring3.2 java config Servler3
spring3.2 java config Servler3YongHyuk Lee
 
Securing Java EE apps using WildFly Elytron
Securing Java EE apps using WildFly ElytronSecuring Java EE apps using WildFly Elytron
Securing Java EE apps using WildFly ElytronJan Kalina
 
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)DK Lee
 
Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2A.K.M. Ahsrafuzzaman
 

Similar to Hidden gems in Apache Jackrabbit and BloomReach Forge (20)

Pom configuration java xml
Pom configuration java xmlPom configuration java xml
Pom configuration java xml
 
Pom
PomPom
Pom
 
Spring into rails
Spring into railsSpring into rails
Spring into rails
 
Jlook web ui framework
Jlook web ui frameworkJlook web ui framework
Jlook web ui framework
 
infra-as-code
infra-as-codeinfra-as-code
infra-as-code
 
Hibernate java and_oracle
Hibernate java and_oracleHibernate java and_oracle
Hibernate java and_oracle
 
Jaxitalia09 Spring Best Practices
Jaxitalia09 Spring Best PracticesJaxitalia09 Spring Best Practices
Jaxitalia09 Spring Best Practices
 
J boss
J bossJ boss
J boss
 
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortal
 
Riga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationRiga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous Integration
 
Xusage
XusageXusage
Xusage
 
161208
161208161208
161208
 
Building com Phing - 7Masters PHP
Building com Phing - 7Masters PHPBuilding com Phing - 7Masters PHP
Building com Phing - 7Masters PHP
 
Automated Java Deployments With Rpm
Automated Java Deployments With RpmAutomated Java Deployments With Rpm
Automated Java Deployments With Rpm
 
How to simplify OSGi development using OBR - Peter Kriens
How to simplify OSGi development using OBR - Peter KriensHow to simplify OSGi development using OBR - Peter Kriens
How to simplify OSGi development using OBR - Peter Kriens
 
spring3.2 java config Servler3
spring3.2 java config Servler3spring3.2 java config Servler3
spring3.2 java config Servler3
 
Securing Java EE apps using WildFly Elytron
Securing Java EE apps using WildFly ElytronSecuring Java EE apps using WildFly Elytron
Securing Java EE apps using WildFly Elytron
 
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
 
Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2
 

Recently uploaded

call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 

Recently uploaded (20)

call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 

Hidden gems in Apache Jackrabbit and BloomReach Forge

  • 1. Woonsan Ko Nov. 15, 2018 (By courtesy of USFWS Mountain-Prairie, licensed by CC BY 2.0)
  • 3. “What is Apache Jackrabbit? Is it what I need to know?”
  • 5. ● (repository.xml) <Repository> <!-- SNIP --> <Workspace name="${wsp.name}"> <FileSystem class="...">...</FileSystem> <PersistenceManager class="...">...</PersistenceManager> <SearchIndex class="...">...</SearchIndex> <!-- SNIP --> </Workspace> <Versioning rootPath="${rep.home}/version"> <FileSystem class="...">...</FileSystem> <PersistenceManager class="...">...</PersistenceManager> <!-- SNIP --> </Versioning> <DataStore class="org.apache.jackrabbit.core.data.db.DbDataStore">...</DataStore> <!-- SNIP --> </Repository>
  • 6. “Can’t we store huge amount of binary data in JCR?” * * https://woonsanko.blogspot.com/2016/08/cant-we-store-huge-amount-of-binary.html
  • 7. ● When using DbDataStore (the default option) > 85% : binaries (DATASTORE table) * More at https://woonsanko.blogspot.com/2018/11/apache-jackrabbit-database-usage.html
  • 8. Apache Jackrabbit DataStore supports: ● PersistenceManager ● DataStore ● << DbDataStore >> << VFS DataStores >>
  • 10. ● (repository.xml) <Repository> <!-- SNIP --> <DataStore class="org.apache.jackrabbit.aws.ext.ds.S3DataStore"> <param name="config" value="${catalina.base}/conf/aws-s3-datastore.properties"/> <param name="cacheSize" value="68719476736"/> <!-- 64MB --> <param name="minRecordLength " value="1024"/> <!-- SNIP --> <param name="concurrentUploadsThreads" value="10"/> <param name="asyncUploadLimit" value="100"/> <param name="uploadRetries" value="3"/> </DataStore> <!-- SNIP --> </Repository> * Find example configs from https://github.com/woonsanko/hippo-davstore-demo/tree/master/conf/.
  • 11. ● (repository.xml) <Repository> <!-- SNIP --> <DataStore class="org.apache.jackrabbit.vfs.ext.ds.VFSDataStore"> <param name="config" value="${catalina.base}/conf/vfs2-datastore-sftp.properties" /> <param name="cacheSize" value="68719476736"/> <!-- 64MB --> <param name="minRecordLength" value="1024"/> <!-- SNIP --> <param name="asyncWritePoolSize" value="10" /> </DataStore> <!-- SNIP --> </Repository> * Find example configs from https://github.com/woonsanko/hippo-davstore-demo/tree/master/conf/.
  • 12. ● Benefits: ○ Transparent ○ Almost unlimited storage for binaries ■ Amazon S3, SFTP Gateway for S3 ■ SFTP file server, SFTP server with Google Cloud Platform backend ○ Cheaper storage ■ Amazon RDS vs. Amazon S3 buckets or SFTP ○ Faster backup, import, migration ■ Build new environment quickly from production data. ○ Save backup storage ■ Nightly DB backup files ○ Encryption at rest ■ Amazon S3 encryption, SFTP server with Linux file system encryption
  • 13. “Can’t we keep unlimited amount of revision history?” * https://woonsanko.blogspot.com/2018/11/externalizing-jcr-version-storage-with.html
  • 15. > 55% : versions (VERSION_BUNDLE table) ● When using BundleDbPersistenceManager (the default option) > 25% : binaries (DATASTORE table) * More at https://woonsanko.blogspot.com/2018/11/apache-jackrabbit-database-usage.html
  • 16. ● (repository.xml) <Repository> <!-- SNIP --> <Versioning rootPath="${rep.home}/version"> <FileSystem class="org.apache.jackrabbit.vfs.ext.fs.VFSFileSystem"> <param name="config" value="${catalina.base}/conf/vfs2-filesystem-sftp.properties" /> </FileSystem> <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager"> </PersistenceManager> <!-- SNIP --> </Versioning> <!-- SNIP → </Repository> * Find example configs from https://github.com/woonsanko/hippo-davstore-demo/tree/master/conf/.
  • 17. - The first project, FeedbackPlugin, started on 2008-01-11. - boudekerk did the first SVN commit at 2008-01-15 14:20:15 CEST. - arjecahn made the second commit on that day at 14:49 CEST. - ... - jeroenhoffman: “Moving to github is done!” at 2017-02-17 13:34:00 CEST. - 32 active projects... welcoming your participation! - ...
  • 18. ● “Don’t stay up. Just schedule it.” ○ The Forge Utilities project supports scheduling Groovy Updater scripts. ○ Check out https://bloomreach-forge.github.io/hippo-utilities/ ● “FreeMarker, Handlebars or Thymeleaf? No problem!” ○ The Tempating Support project allows to use any of those. ○ Check out https://bloomreach-forge.github.io/templating-support/ ● “Content Packaging REST endpoints? Content-EXIM!” ○ It now supports built-in REST endpoints to export and import content in a flexible way. ○ Check out https://bloomreach-forge.github.io/content-export-import/builtin-rest-services.html ● “Web page flow control like Spring WebFlow in HST apps? Page-Flow!” ○ Page-Flow project supports easy page flow control development, seamlessly integrated with Channel Manager and Relevance. ○ Checkout https://bloomreach-forge.github.io/page-flow/
  • 19. ● “Can we update webfiles on server at runtime?” or “Can we use JCR API through JCR over HTTP?” ○ Jackrabbit support SimpleWebDAVServlet and JcrRemotingServlet. ○ Check out https://bloomreach-forge.github.io/hippo-jcr-over-webdav/. ○ Use cadaver or cyberduck for WebDAV access. ○ JCR-Shell (https://bloomreach-forge.github.io/jcr-shell/), a CLI tool for JCR, using JCR over WebDAV (JCR Remoting).
  • 20. ● https://github.com/woonsanko/hippo-davstore-demo ○ Follow README.md to build and run it on your laptop. ● Scenarios ○ VFS DataStore with SFTP backend ○ VFS FileSystem for Versioning ○ More if time allows...
  • 22. ... ● jackrabbit.apache.org ● developers.bloomreach.com / www.onehippo.org ● bloomreach-forge.github.io/