SlideShare a Scribd company logo
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

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
DataWorks Summit
 
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
GR8Conf
 
Drupalcamp Estonia - High Performance Sites
Drupalcamp Estonia - High Performance SitesDrupalcamp Estonia - High Performance Sites
Drupalcamp Estonia - High Performance Sites
drupalcampest
 

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

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

Pom
PomPom
Pom
 
Pom configuration java xml
Pom configuration java xmlPom configuration java xml
Pom configuration java xml
 
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

How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 

Recently uploaded (20)

GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
GraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysisGraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysis
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
 

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/