SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler 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/

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Semelhante a 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
 

Semelhante a 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
 

Último

WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
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
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
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
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
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
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 

Último (20)

WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
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 🔝✔️✔️
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
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-...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
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 🔝✔️✔️
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 

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/