SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
Liferay portal modern
architecting and
development
MODULARITY PATTERNS USING OSGI
INNOVSQUARE
Rafik HARABI
EclipseCon Europe 2015
Who am I ?
 Software Architect and Liferay Specialist.
 Building portal using Liferay since 2009 (more then 15 portals).
@innovsquare
linkedin.com/rafik.harabi
INNOVSQUARE
https://github.com/innovsquare
rafik.harabi@innovsquare.com
EclipseCon Europe 2015
Who are you ?
Before we get started...
We are building portals at work,
We are building Portal using Liferay,
We have heard about Liferay Portal and we want to learn more.
INNOVSQUARE EclipseCon Europe 2015
This talk ...
Liferay monolithic architecture
Modularity promises
Liferay 7 modular architecture
Building modules in Liferay 7: the OSGi way
Customizing & extending modules
Lessons learned & takeaways
INNOVSQUARE EclipseCon Europe 2015
A few words about Liferay
Open source leader Portal that implement Portlet API 1.0 (JSR 168) and Portlet
2.0 (JSR 286)
Lines of Code : 5. 1 Millions
 About 70 Out of The Box Portlets
Features: Web Content Management, Document Management, Workflow,
Search, Enterprise Collaboration & Social Networking, …
A marketplace: 490 apps http://liferay.com/marketplace
INNOVSQUARE EclipseCon Europe 2015
A few words about Liferay
Portal Instance
Site
Portal Instance
Site Site Site Site Site
Portlets
Instances
INNOVSQUARE EclipseCon Europe 2015
System
Liferay monolithic architecture
Portlet Application
Liferay Portal WAR
Core Services Web Content Management WikiBlog
Application Server
Portlet Application Portlet Application
INNOVSQUARE EclipseCon Europe 2015
…
Liferay class loading hierarchy
JDK Class Loaders
Application Server Class Loaders
Portal Class Loader Plugin A Plugin B Plugin C
Service A Service B Service C
Portal Services API
Portal Services Impl
INNOVSQUARE EclipseCon Europe 2015
WAR WAR WARWAR
Liferay class loading hierarchy
JDK Class Loaders
Application Server Class Loaders
Portal Class Loader Plugin A Plugin B Plugin C
Service A Service B Service C
Portal services api
INNOVSQUARE EclipseCon Europe 2015
WARWAR WAR WAR
Portal Services Impl
Liferay class loading hierarchy
JDK Class Loaders
Application Server Class Loaders
Portal Class Loader Plugin A Plugin B Plugin C
Service A Service B Service C
Portal services api
INNOVSQUARE EclipseCon Europe 2015
Portal Services Impl
WARWAR WAR WAR
Liferay class loading hierarchy
JDK Class Loaders
Application Server Class Loaders
Portal Class Loader Plugin A Plugin B Plugin C
Service A Service B Service C
Portal services api
INNOVSQUARE EclipseCon Europe 2015
Portal Services Impl
WARWAR WAR WAR
Portal customization capabilities
* Liferay Buyer’s Checklist
INNOVSQUARE EclipseCon Europe 2015
Portal customization capabilities
INNOVSQUARE EclipseCon Europe 2015
Extend menu
Add Entry
Customize
Portal customization capabilities
INNOVSQUARE EclipseCon Europe 2015
Extend menu
Add Entry
Customize
Customization should be a first class citizen
Liferay releases vs Business agility
2012 2013 2014 2015 2016
6.1.0 6.2.0 6.2.1 6.2.2
> 1 year
Business agility
Recurrent incremental change
services building and delivery are going from few months to few weeks to
few days
INNOVSQUARE EclipseCon Europe 2015
Limits of the Liferay monolithic
architecture
Invoking service between plugins /portlets:
No standard solution
Technical debt: hard to maintain
An All-in-One Package
One big war of 230 MB
Cannot deploy only what is needed: minimal version
Cannot manage portal features separately
 Deployment depends on app server
Scalability: only one dimension scaling
Marketplace: overriding JSP creates conflicts
INNOVSQUARE EclipseCon Europe 2015
Modularity promises
 Portlet independent versioning from Liferay Portal
OSGi semantic versioning
 Business Agility:
More frequent delivery of new features or improvements
Easy and decoupled development process.
Contract first approach / Loose coupling
Dynamic extensions
INNOVSQUAREINNOVSQUARE EclipseCon Europe 2015
Modularity promises
Resiliency /design for failure
Enhance Security : bundle isolation/seal
Patching : just replace the bundle
 Microservices: small and independent (both for development and
deployment)
Make your product Powerfully customizable
INNOVSQUARE EclipseCon Europe 2015
Modularity challenges
Communications challenges
=> OSGi provides in VM-microservices.
Zero configuration.
How do I manage the configuration ?
OSGi Framework provides Configuration Admin service.
INNOVSQUARE EclipseCon Europe 2015
From monolithic to microservices
INNOVSQUARE EclipseCon Europe 2015
Core Services (ldap auth, messaging, cache …)
WikiBlog
Liferay Portal WAR OSGi Container
ldap auth messaging cache
OSGi Service Registry
Blog UI
Blog API
Blog Service
Wiki UI
Wiki API
Wiki Service
…
Liferay 7 modular architecture
OSGI Container
Module
ModuleModule
AppApp
App App
Liferay Portal Core (not yet extracted)
Log Service
Http Service
JSP Support
Config Admin
INNOVSQUARE EclipseCon Europe 2015
Application Server
Liferay 7 modular architecture
Statistics (based on Liferay 7 alpha1):
Number of extracted bundles: 326
Number of integration points > 200
INNOVSQUARE EclipseCon Europe 2015
Liferay module framework
base path of the module framework
Module bundles
Portal core’s services bundles
framework persistence directory
INNOVSQUARE EclipseCon Europe 2015
Liferay’s module framework bundles
Testing bundles
Bundles to start with the module framework
Test utility
Tools
Liferay module framework
Liferay Portal
OSGi Container
OSGi Service Registry
Bundle A Bundle B Bundle C
IndexPostProcessorWrapperServiceRegistryWrapper
Liferay custom bundle
registration Utility
(Service Tracker)
Hot deploy listeners
Module
deploy
folder
INNOVSQUARE EclipseCon Europe 2015
Liferay Service Registry Liferay Service Tracker
Liferay Core’s
Services
Liferay module framework
 Liferay 7 owns the deployment Lifecycle: no longer relaying on application
server for deployment.
Dynamically manage module lifecycles.
Liferay modules are versioned and explicitly declare dependencies.
INNOVSQUARE EclipseCon Europe 2015
Building modules with OSGi
 Liferay support various OSGi framework:
 OSGi API
Blueprint
iPOJO
OSGi Declarative Services
INNOVSQUARE EclipseCon Europe 2015
Building modules with OSGi
Which technology is recommended by Liferay ?
 Liferay recommendation is to use
declarative services.
INNOVSQUARE EclipseCon Europe 2015
Portlets using Declaratives Services
6.2 and earlier 7.0
portlet.xml
liferay-portlet.xml
liferay-display.xml
XML Configuration Annotation (DS)
Portlet as a service
INNOVSQUARE EclipseCon Europe 2015
Modularize the service builder
Service builder : Liferay service layer code scaffolding
6.2 and earlier 7.0
API (jar)
Service Impl
Portlet UI (JSP, …)
Portlet Application (WAR) Bundles (Jars)
Service Registry
API
Service
Test
INNOVSQUARE EclipseCon Europe 2015
Sharing services between applications
 Zero Effort, Zero Configuration !
All what you need is to publish your services in the OSGi service registry.
Service A
Service B
Service C
Service D
Portlet 1
Portlet 2
Portlet 3
Service Registry
INNOVSQUARE EclipseCon Europe 2015
Overriding Liferay’s services
INNOVSQUARE EclipseCon Europe 2015
Overriding core services
deploy a service with a higher service ranking than the original
Using OSGi service ranking :
property= {"service.ranking:Integer=100"}
INNOVSQUARE EclipseCon Europe 2015
Portlet Filter
6.2 and earlier 7.0
Portlet Application (WAR)
Portlet Filter
- Defined inside the portlet app !
- Hard to implement filter for OTB portlets
Bundles (Jars)
INNOVSQUARE EclipseCon Europe 2015
Portlet Filter
6.2 and earlier 7.0
Portlet Application (WAR)
Portlet Filter
- Defined inside the portlet app !
- Hard to implement filter for OTB portlets
Portlet Filter
Bundles (Jars)
Portlet
INNOVSQUARE EclipseCon Europe 2015
Split into modules : Form Builder as
example
INNOVSQUARE EclipseCon Europe 2015
Split into microservices: Form Builder as
example
6.2 (Monolithic) 7 (OSGI)
INNOVSQUARE EclipseCon Europe 2015
Split into microservices: Form Builder as
example
com.liferay.dynamic.data.mapping.type.checkbox.jar
com.liferay.dynamic.data.mapping.type.radio.jar
com.liferay.dynamic.data.mapping.type.text.jar
com.liferay.dynamic.data.mapping.type.select.jar
INNOVSQUARE EclipseCon Europe 2015
Split into microservices: build for
extension
My custom type
INNOVSQUARE EclipseCon Europe 2015
Portal Configuration API
Available Configuration for Liferay 6:
Portal properties files:
don’t have types
restart on every change
Portal.properties file:
One big file with 10000 lines
Portlets preferences:
XML based
don’t support types
INNOVSQUARE EclipseCon Europe 2015
Portal Configuration API
Configuration management based on :
 OSGi Configuration Admin
OSGi MetaType
Properties are typed
Properties are well separated by modules
Dynamically load properties on runtime
INNOVSQUARE EclipseCon Europe 2015
Portal Configuration API
INNOVSQUARE EclipseCon Europe 2015
Portal Configuration API - Scopes
Portal Instance
Site
Portal Instance
Site Site Site Site Site
Portlets
System
INNOVSQUARE EclipseCon Europe 2015
Portal Configuration API –Customize
properties
Customize properties using Configuration Admin portlet:
INNOVSQUARE EclipseCon Europe 2015
Portal Configuration API –Customize
properties
 Locate the Configuration class : annotated with :
 Create a .cfg file with the id:
 Add properties with the new values:
admin.email.from.address=contentmanager@mycompany.com
admin.email.from.name=contentmanager@mycompany.com
 Drop it into the deploy folder of Liferay
INNOVSQUARE EclipseCon Europe 2015
UI customization & extension
extensible user interfaces using the already built in mechanisms into the platform.
 Dynamic include using the Liferay extension points :
<liferay-util:dynamic-include key=“com.liferay.frontend.editors.web"/>
INNOVSQUARE EclipseCon Europe 2015
Customizing UI Components
Why: provide a better configuration for your needs.
INNOVSQUARE EclipseCon Europe 2015
Customizing UI Components
INNOVSQUARE EclipseCon Europe 2015
Dev Tools
 BND Tools:
Robust OSGi bundles build tools.
 Blade Tools: Liferay tools to build modules
https://github.com/gamerson/blade.tools
 Liferay provide also a set of plugins to build custom modules:
com.liferay.portal.tools.sample.sql.builder
com.liferay.portal.tools.service.builder
com.liferay.portal.tools.upgrade.table.builder
com.liferay.portal.tools.wsdd.builder
INNOVSQUARE EclipseCon Europe 2015
Useful Resources
Liferay developer network:
https://dev.liferay.com/develop/
Liferay DevCon 2015:
https://www.liferay.com/fr/web/events2015/devcon/recap
Liferay Blade project:
https://github.com/rotty3000/blade
Liferay Blade Tools:
https://github.com/gamerson/blade.tools
INNOVSQUAREINNOVSQUARE EclipseCon Europe 2015
Conclusion – lessons learned
Be realistic & do it in steps: leaving Rome wasn't built in a day !
First step: In-VM microservices
Choose robust tools and standards: OSGi is one of the best for java world.
 Provide dev and migration tools :very important for your customers.
Focus on Single Responsibility Principle (SRP)
INNOVSQUARE EclipseCon Europe 2015
Conclusion – takeaways
 Each @Component can be replaced with your own.
Reusable components: Taglibs, Item Selector, Portlet decorator …
Customize and extend
INNOVSQUARE EclipseCon Europe 2015
Questions ?
INNOVSQUARE EclipseCon Europe 2015
You want to learn more ?
2 talks by Ray Augé :
Today : Tomorrow:

Mais conteúdo relacionado

Mais procurados

Liferay as solution for legacy applications
Liferay as solution for legacy applicationsLiferay as solution for legacy applications
Liferay as solution for legacy applicationsManish Kumar Jaiswal
 
OSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixOSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixMarcel Offermans
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferaydaveayan
 
Creating Better Customer and Employee Experiences with Liferay Portal and Cra...
Creating Better Customer and Employee Experiences with Liferay Portal and Cra...Creating Better Customer and Employee Experiences with Liferay Portal and Cra...
Creating Better Customer and Employee Experiences with Liferay Portal and Cra...Crafter Software
 
Liferay v. Drupal: Pound for Pound @ Liferay Symposium 2014 - Findings from t...
Liferay v. Drupal: Pound for Pound @ Liferay Symposium 2014 - Findings from t...Liferay v. Drupal: Pound for Pound @ Liferay Symposium 2014 - Findings from t...
Liferay v. Drupal: Pound for Pound @ Liferay Symposium 2014 - Findings from t...Dave DeMichele
 
Liferay portal – moving beyond content management
Liferay portal – moving beyond content managementLiferay portal – moving beyond content management
Liferay portal – moving beyond content managementAmbientia
 
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay Screens
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay ScreensLiferay Italy Symposium 2015 Liferay Mobile SDK and Liferay Screens
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay ScreensDenis Signoretto
 
Introduction to Portlets Using Liferay Portal
Introduction to Portlets Using Liferay PortalIntroduction to Portlets Using Liferay Portal
Introduction to Portlets Using Liferay Portalrivetlogic
 
2014 Liferay Roadshow Ambientia Finland
2014  Liferay Roadshow Ambientia Finland2014  Liferay Roadshow Ambientia Finland
2014 Liferay Roadshow Ambientia FinlandRuud Kluivers
 
Liferay Developer Best Practices for a Successful Deployment
Liferay Developer Best Practices for a Successful DeploymentLiferay Developer Best Practices for a Successful Deployment
Liferay Developer Best Practices for a Successful Deploymentrivetlogic
 
[DevDay2018] Liferay DXP – A powerful Enterprise Solution - By Vy Bui, Develo...
[DevDay2018] Liferay DXP – A powerful Enterprise Solution - By Vy Bui, Develo...[DevDay2018] Liferay DXP – A powerful Enterprise Solution - By Vy Bui, Develo...
[DevDay2018] Liferay DXP – A powerful Enterprise Solution - By Vy Bui, Develo...DevDay.org
 
Benefits of using liferay
Benefits of using liferay Benefits of using liferay
Benefits of using liferay SKALI Group
 
Mavenizing your Liferay project
Mavenizing your Liferay projectMavenizing your Liferay project
Mavenizing your Liferay projectmimacom
 
A microservice approach for legacy modernisation
A microservice approach for legacy modernisationA microservice approach for legacy modernisation
A microservice approach for legacy modernisationluisw19
 
Liferay architecture By Navin Agarwal
Liferay architecture By Navin AgarwalLiferay architecture By Navin Agarwal
Liferay architecture By Navin AgarwalNavin Agarwal
 

Mais procurados (20)

Liferay as solution for legacy applications
Liferay as solution for legacy applicationsLiferay as solution for legacy applications
Liferay as solution for legacy applications
 
Liferay with xebia
Liferay with xebiaLiferay with xebia
Liferay with xebia
 
OSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixOSGi on Google Android using Apache Felix
OSGi on Google Android using Apache Felix
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
 
Liferay 7
Liferay 7Liferay 7
Liferay 7
 
Liferay portal advantages
Liferay portal advantagesLiferay portal advantages
Liferay portal advantages
 
Creating Better Customer and Employee Experiences with Liferay Portal and Cra...
Creating Better Customer and Employee Experiences with Liferay Portal and Cra...Creating Better Customer and Employee Experiences with Liferay Portal and Cra...
Creating Better Customer and Employee Experiences with Liferay Portal and Cra...
 
Liferay v. Drupal: Pound for Pound @ Liferay Symposium 2014 - Findings from t...
Liferay v. Drupal: Pound for Pound @ Liferay Symposium 2014 - Findings from t...Liferay v. Drupal: Pound for Pound @ Liferay Symposium 2014 - Findings from t...
Liferay v. Drupal: Pound for Pound @ Liferay Symposium 2014 - Findings from t...
 
Liferay portal – moving beyond content management
Liferay portal – moving beyond content managementLiferay portal – moving beyond content management
Liferay portal – moving beyond content management
 
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay Screens
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay ScreensLiferay Italy Symposium 2015 Liferay Mobile SDK and Liferay Screens
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay Screens
 
Introduction to Portlets Using Liferay Portal
Introduction to Portlets Using Liferay PortalIntroduction to Portlets Using Liferay Portal
Introduction to Portlets Using Liferay Portal
 
2014 Liferay Roadshow Ambientia Finland
2014  Liferay Roadshow Ambientia Finland2014  Liferay Roadshow Ambientia Finland
2014 Liferay Roadshow Ambientia Finland
 
Liferay Developer Best Practices for a Successful Deployment
Liferay Developer Best Practices for a Successful DeploymentLiferay Developer Best Practices for a Successful Deployment
Liferay Developer Best Practices for a Successful Deployment
 
[DevDay2018] Liferay DXP – A powerful Enterprise Solution - By Vy Bui, Develo...
[DevDay2018] Liferay DXP – A powerful Enterprise Solution - By Vy Bui, Develo...[DevDay2018] Liferay DXP – A powerful Enterprise Solution - By Vy Bui, Develo...
[DevDay2018] Liferay DXP – A powerful Enterprise Solution - By Vy Bui, Develo...
 
Beyond OSGi Software Architecture
Beyond OSGi Software ArchitectureBeyond OSGi Software Architecture
Beyond OSGi Software Architecture
 
Why choose-liferay
Why choose-liferayWhy choose-liferay
Why choose-liferay
 
Benefits of using liferay
Benefits of using liferay Benefits of using liferay
Benefits of using liferay
 
Mavenizing your Liferay project
Mavenizing your Liferay projectMavenizing your Liferay project
Mavenizing your Liferay project
 
A microservice approach for legacy modernisation
A microservice approach for legacy modernisationA microservice approach for legacy modernisation
A microservice approach for legacy modernisation
 
Liferay architecture By Navin Agarwal
Liferay architecture By Navin AgarwalLiferay architecture By Navin Agarwal
Liferay architecture By Navin Agarwal
 

Destaque

Liferay hardening principles
Liferay hardening principlesLiferay hardening principles
Liferay hardening principlesAmbientia
 
Liferay portals in real projects
Liferay portals  in real projectsLiferay portals  in real projects
Liferay portals in real projectsIBACZ
 
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterprise
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterpriseMoved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterprise
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterpriseMilen Dyankov
 
2011.10 Liferay European Symposium. Alistair Oldfield
2011.10 Liferay European Symposium. Alistair Oldfield2011.10 Liferay European Symposium. Alistair Oldfield
2011.10 Liferay European Symposium. Alistair OldfieldEmeldi Group
 
Social Networking Presentation For Chamber Of Commerce
Social Networking Presentation For Chamber Of CommerceSocial Networking Presentation For Chamber Of Commerce
Social Networking Presentation For Chamber Of CommerceBARBARA ROZGONYI
 
Liferay 6.2 theme premium
Liferay 6.2 theme premiumLiferay 6.2 theme premium
Liferay 6.2 theme premiumWeekServices
 
Building an Enterprise Content Management solution on top of liferay
Building an Enterprise Content Management solution on top of liferayBuilding an Enterprise Content Management solution on top of liferay
Building an Enterprise Content Management solution on top of liferayAndrea Di Giorgi
 
CTO School Networking Presentation
CTO School Networking PresentationCTO School Networking Presentation
CTO School Networking PresentationScott Britton
 
Introducing the new calendar app in liferay 6.2
Introducing the new calendar app in liferay 6.2Introducing the new calendar app in liferay 6.2
Introducing the new calendar app in liferay 6.2Andrea Di Giorgi
 
Implementing AutoComplete for Freemarker and Velocity languages in ACE Editor
Implementing AutoComplete for Freemarker and Velocity languages in ACE EditorImplementing AutoComplete for Freemarker and Velocity languages in ACE Editor
Implementing AutoComplete for Freemarker and Velocity languages in ACE Editorpeychevi
 
Portlet Framework: the Liferay way
Portlet Framework: the Liferay wayPortlet Framework: the Liferay way
Portlet Framework: the Liferay wayriround
 

Destaque (14)

Liferay hardening principles
Liferay hardening principlesLiferay hardening principles
Liferay hardening principles
 
Liferay portals in real projects
Liferay portals  in real projectsLiferay portals  in real projects
Liferay portals in real projects
 
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterprise
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterpriseMoved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterprise
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterprise
 
Overview of Liferay 7 Technology
Overview of Liferay 7 TechnologyOverview of Liferay 7 Technology
Overview of Liferay 7 Technology
 
Liferay maven sdk
Liferay maven sdkLiferay maven sdk
Liferay maven sdk
 
2011.10 Liferay European Symposium. Alistair Oldfield
2011.10 Liferay European Symposium. Alistair Oldfield2011.10 Liferay European Symposium. Alistair Oldfield
2011.10 Liferay European Symposium. Alistair Oldfield
 
Social Networking Presentation For Chamber Of Commerce
Social Networking Presentation For Chamber Of CommerceSocial Networking Presentation For Chamber Of Commerce
Social Networking Presentation For Chamber Of Commerce
 
Liferay 6.2 theme premium
Liferay 6.2 theme premiumLiferay 6.2 theme premium
Liferay 6.2 theme premium
 
6.2 presentation
6.2 presentation6.2 presentation
6.2 presentation
 
Building an Enterprise Content Management solution on top of liferay
Building an Enterprise Content Management solution on top of liferayBuilding an Enterprise Content Management solution on top of liferay
Building an Enterprise Content Management solution on top of liferay
 
CTO School Networking Presentation
CTO School Networking PresentationCTO School Networking Presentation
CTO School Networking Presentation
 
Introducing the new calendar app in liferay 6.2
Introducing the new calendar app in liferay 6.2Introducing the new calendar app in liferay 6.2
Introducing the new calendar app in liferay 6.2
 
Implementing AutoComplete for Freemarker and Velocity languages in ACE Editor
Implementing AutoComplete for Freemarker and Velocity languages in ACE EditorImplementing AutoComplete for Freemarker and Velocity languages in ACE Editor
Implementing AutoComplete for Freemarker and Velocity languages in ACE Editor
 
Portlet Framework: the Liferay way
Portlet Framework: the Liferay wayPortlet Framework: the Liferay way
Portlet Framework: the Liferay way
 

Semelhante a EclipseCon Europe 2015 - liferay modularity patterns using OSGi -Rafik Harabi

[apidays LIVE HONK KONG] - OAS to Managed API in Seconds
[apidays LIVE HONK KONG] - OAS to Managed API in Seconds[apidays LIVE HONK KONG] - OAS to Managed API in Seconds
[apidays LIVE HONK KONG] - OAS to Managed API in SecondsWSO2
 
The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0
The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0
The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0WSO2
 
How WSO2 API Manager helps to open the Quby Smart Thermostat and Energy Monit...
How WSO2 API Manager helps to open the Quby Smart Thermostat and Energy Monit...How WSO2 API Manager helps to open the Quby Smart Thermostat and Energy Monit...
How WSO2 API Manager helps to open the Quby Smart Thermostat and Energy Monit...Yenlo
 
Service Mesh - Why? How? What?
Service Mesh - Why? How? What?Service Mesh - Why? How? What?
Service Mesh - Why? How? What?Orkhan Gasimov
 
London-MuleSoft-Meetup-April-19-2023
London-MuleSoft-Meetup-April-19-2023London-MuleSoft-Meetup-April-19-2023
London-MuleSoft-Meetup-April-19-2023AnuragSharma900
 
London MuleSoft Meetup
London MuleSoft Meetup London MuleSoft Meetup
London MuleSoft Meetup Akshata Sawant
 
Weave GitOps - continuous delivery for any Kubernetes
Weave GitOps - continuous delivery for any KubernetesWeave GitOps - continuous delivery for any Kubernetes
Weave GitOps - continuous delivery for any KubernetesWeaveworks
 
apidays Paris 2022 - Adding a mock as a service capability to your API strate...
apidays Paris 2022 - Adding a mock as a service capability to your API strate...apidays Paris 2022 - Adding a mock as a service capability to your API strate...
apidays Paris 2022 - Adding a mock as a service capability to your API strate...apidays
 
Creating a Scalable and Decentralized API Management Architecture with WSO2 A...
Creating a Scalable and Decentralized API Management Architecture with WSO2 A...Creating a Scalable and Decentralized API Management Architecture with WSO2 A...
Creating a Scalable and Decentralized API Management Architecture with WSO2 A...WSO2
 
Presentation at the 2016 Linux Foundation Collab Summit
Presentation at the 2016 Linux Foundation Collab SummitPresentation at the 2016 Linux Foundation Collab Summit
Presentation at the 2016 Linux Foundation Collab SummitOpen API Initiative (OAI)
 
apidays LIVE Australia 2021 - OpenAPI Generator - The Babel Fish of the API W...
apidays LIVE Australia 2021 - OpenAPI Generator - The Babel Fish of the API W...apidays LIVE Australia 2021 - OpenAPI Generator - The Babel Fish of the API W...
apidays LIVE Australia 2021 - OpenAPI Generator - The Babel Fish of the API W...apidays
 
Kubernetes in Modern Application Architecture - Orkhan Gasimov
Kubernetes in Modern Application Architecture - Orkhan GasimovKubernetes in Modern Application Architecture - Orkhan Gasimov
Kubernetes in Modern Application Architecture - Orkhan GasimovKuberton
 
Orkhan Gasimov "Reactive & Distributed - Modern JavaScript"
Orkhan Gasimov "Reactive & Distributed - Modern JavaScript"Orkhan Gasimov "Reactive & Distributed - Modern JavaScript"
Orkhan Gasimov "Reactive & Distributed - Modern JavaScript"LogeekNightUkraine
 
apidays LIVE Paris 2021 - OpenAPI Generator - The Babel Fish of the API World...
apidays LIVE Paris 2021 - OpenAPI Generator - The Babel Fish of the API World...apidays LIVE Paris 2021 - OpenAPI Generator - The Babel Fish of the API World...
apidays LIVE Paris 2021 - OpenAPI Generator - The Babel Fish of the API World...apidays
 
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
[2015-11월 정기 세미나] Cloud Native Platform - PivotalOpenStack Korea Community
 
OpenAPI Generator The Babel Fish of The API World - apidays Live Paris
OpenAPI Generator The Babel Fish of The API World - apidays Live ParisOpenAPI Generator The Babel Fish of The API World - apidays Live Paris
OpenAPI Generator The Babel Fish of The API World - apidays Live ParisCliffano Subagio
 
Api Lifecycle Operation with Open Source Products
Api Lifecycle Operation with Open Source ProductsApi Lifecycle Operation with Open Source Products
Api Lifecycle Operation with Open Source ProductsDevOps Indonesia
 
An Introduction to the WSO2 API Manager
An Introduction to the WSO2 API Manager An Introduction to the WSO2 API Manager
An Introduction to the WSO2 API Manager WSO2
 
OpenAPI Generator The Babel Fish of The API World - apidays Live Australia
OpenAPI Generator The Babel Fish of The API World - apidays Live AustraliaOpenAPI Generator The Babel Fish of The API World - apidays Live Australia
OpenAPI Generator The Babel Fish of The API World - apidays Live AustraliaCliffano Subagio
 

Semelhante a EclipseCon Europe 2015 - liferay modularity patterns using OSGi -Rafik Harabi (20)

[apidays LIVE HONK KONG] - OAS to Managed API in Seconds
[apidays LIVE HONK KONG] - OAS to Managed API in Seconds[apidays LIVE HONK KONG] - OAS to Managed API in Seconds
[apidays LIVE HONK KONG] - OAS to Managed API in Seconds
 
The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0
The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0
The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0
 
How WSO2 API Manager helps to open the Quby Smart Thermostat and Energy Monit...
How WSO2 API Manager helps to open the Quby Smart Thermostat and Energy Monit...How WSO2 API Manager helps to open the Quby Smart Thermostat and Energy Monit...
How WSO2 API Manager helps to open the Quby Smart Thermostat and Energy Monit...
 
Service Mesh - Why? How? What?
Service Mesh - Why? How? What?Service Mesh - Why? How? What?
Service Mesh - Why? How? What?
 
London-MuleSoft-Meetup-April-19-2023
London-MuleSoft-Meetup-April-19-2023London-MuleSoft-Meetup-April-19-2023
London-MuleSoft-Meetup-April-19-2023
 
London MuleSoft Meetup
London MuleSoft Meetup London MuleSoft Meetup
London MuleSoft Meetup
 
Weave GitOps - continuous delivery for any Kubernetes
Weave GitOps - continuous delivery for any KubernetesWeave GitOps - continuous delivery for any Kubernetes
Weave GitOps - continuous delivery for any Kubernetes
 
apidays Paris 2022 - Adding a mock as a service capability to your API strate...
apidays Paris 2022 - Adding a mock as a service capability to your API strate...apidays Paris 2022 - Adding a mock as a service capability to your API strate...
apidays Paris 2022 - Adding a mock as a service capability to your API strate...
 
Creating a Scalable and Decentralized API Management Architecture with WSO2 A...
Creating a Scalable and Decentralized API Management Architecture with WSO2 A...Creating a Scalable and Decentralized API Management Architecture with WSO2 A...
Creating a Scalable and Decentralized API Management Architecture with WSO2 A...
 
Presentation at the 2016 Linux Foundation Collab Summit
Presentation at the 2016 Linux Foundation Collab SummitPresentation at the 2016 Linux Foundation Collab Summit
Presentation at the 2016 Linux Foundation Collab Summit
 
apidays LIVE Australia 2021 - OpenAPI Generator - The Babel Fish of the API W...
apidays LIVE Australia 2021 - OpenAPI Generator - The Babel Fish of the API W...apidays LIVE Australia 2021 - OpenAPI Generator - The Babel Fish of the API W...
apidays LIVE Australia 2021 - OpenAPI Generator - The Babel Fish of the API W...
 
Kubernetes in Modern Application Architecture - Orkhan Gasimov
Kubernetes in Modern Application Architecture - Orkhan GasimovKubernetes in Modern Application Architecture - Orkhan Gasimov
Kubernetes in Modern Application Architecture - Orkhan Gasimov
 
Orkhan Gasimov "Reactive & Distributed - Modern JavaScript"
Orkhan Gasimov "Reactive & Distributed - Modern JavaScript"Orkhan Gasimov "Reactive & Distributed - Modern JavaScript"
Orkhan Gasimov "Reactive & Distributed - Modern JavaScript"
 
2.1.design center
2.1.design center2.1.design center
2.1.design center
 
apidays LIVE Paris 2021 - OpenAPI Generator - The Babel Fish of the API World...
apidays LIVE Paris 2021 - OpenAPI Generator - The Babel Fish of the API World...apidays LIVE Paris 2021 - OpenAPI Generator - The Babel Fish of the API World...
apidays LIVE Paris 2021 - OpenAPI Generator - The Babel Fish of the API World...
 
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
 
OpenAPI Generator The Babel Fish of The API World - apidays Live Paris
OpenAPI Generator The Babel Fish of The API World - apidays Live ParisOpenAPI Generator The Babel Fish of The API World - apidays Live Paris
OpenAPI Generator The Babel Fish of The API World - apidays Live Paris
 
Api Lifecycle Operation with Open Source Products
Api Lifecycle Operation with Open Source ProductsApi Lifecycle Operation with Open Source Products
Api Lifecycle Operation with Open Source Products
 
An Introduction to the WSO2 API Manager
An Introduction to the WSO2 API Manager An Introduction to the WSO2 API Manager
An Introduction to the WSO2 API Manager
 
OpenAPI Generator The Babel Fish of The API World - apidays Live Australia
OpenAPI Generator The Babel Fish of The API World - apidays Live AustraliaOpenAPI Generator The Babel Fish of The API World - apidays Live Australia
OpenAPI Generator The Babel Fish of The API World - apidays Live Australia
 

Último

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
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
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
 
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
 
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
 
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
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
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
 
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
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 

Último (20)

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 ...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
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...
 
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
 
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
 
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
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
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
 
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
 
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
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 

EclipseCon Europe 2015 - liferay modularity patterns using OSGi -Rafik Harabi

  • 1. Liferay portal modern architecting and development MODULARITY PATTERNS USING OSGI INNOVSQUARE Rafik HARABI EclipseCon Europe 2015
  • 2. Who am I ?  Software Architect and Liferay Specialist.  Building portal using Liferay since 2009 (more then 15 portals). @innovsquare linkedin.com/rafik.harabi INNOVSQUARE https://github.com/innovsquare rafik.harabi@innovsquare.com EclipseCon Europe 2015
  • 3. Who are you ? Before we get started... We are building portals at work, We are building Portal using Liferay, We have heard about Liferay Portal and we want to learn more. INNOVSQUARE EclipseCon Europe 2015
  • 4. This talk ... Liferay monolithic architecture Modularity promises Liferay 7 modular architecture Building modules in Liferay 7: the OSGi way Customizing & extending modules Lessons learned & takeaways INNOVSQUARE EclipseCon Europe 2015
  • 5. A few words about Liferay Open source leader Portal that implement Portlet API 1.0 (JSR 168) and Portlet 2.0 (JSR 286) Lines of Code : 5. 1 Millions  About 70 Out of The Box Portlets Features: Web Content Management, Document Management, Workflow, Search, Enterprise Collaboration & Social Networking, … A marketplace: 490 apps http://liferay.com/marketplace INNOVSQUARE EclipseCon Europe 2015
  • 6. A few words about Liferay Portal Instance Site Portal Instance Site Site Site Site Site Portlets Instances INNOVSQUARE EclipseCon Europe 2015 System
  • 7. Liferay monolithic architecture Portlet Application Liferay Portal WAR Core Services Web Content Management WikiBlog Application Server Portlet Application Portlet Application INNOVSQUARE EclipseCon Europe 2015 …
  • 8. Liferay class loading hierarchy JDK Class Loaders Application Server Class Loaders Portal Class Loader Plugin A Plugin B Plugin C Service A Service B Service C Portal Services API Portal Services Impl INNOVSQUARE EclipseCon Europe 2015 WAR WAR WARWAR
  • 9. Liferay class loading hierarchy JDK Class Loaders Application Server Class Loaders Portal Class Loader Plugin A Plugin B Plugin C Service A Service B Service C Portal services api INNOVSQUARE EclipseCon Europe 2015 WARWAR WAR WAR Portal Services Impl
  • 10. Liferay class loading hierarchy JDK Class Loaders Application Server Class Loaders Portal Class Loader Plugin A Plugin B Plugin C Service A Service B Service C Portal services api INNOVSQUARE EclipseCon Europe 2015 Portal Services Impl WARWAR WAR WAR
  • 11. Liferay class loading hierarchy JDK Class Loaders Application Server Class Loaders Portal Class Loader Plugin A Plugin B Plugin C Service A Service B Service C Portal services api INNOVSQUARE EclipseCon Europe 2015 Portal Services Impl WARWAR WAR WAR
  • 12. Portal customization capabilities * Liferay Buyer’s Checklist INNOVSQUARE EclipseCon Europe 2015
  • 13. Portal customization capabilities INNOVSQUARE EclipseCon Europe 2015 Extend menu Add Entry Customize
  • 14. Portal customization capabilities INNOVSQUARE EclipseCon Europe 2015 Extend menu Add Entry Customize Customization should be a first class citizen
  • 15. Liferay releases vs Business agility 2012 2013 2014 2015 2016 6.1.0 6.2.0 6.2.1 6.2.2 > 1 year Business agility Recurrent incremental change services building and delivery are going from few months to few weeks to few days INNOVSQUARE EclipseCon Europe 2015
  • 16. Limits of the Liferay monolithic architecture Invoking service between plugins /portlets: No standard solution Technical debt: hard to maintain An All-in-One Package One big war of 230 MB Cannot deploy only what is needed: minimal version Cannot manage portal features separately  Deployment depends on app server Scalability: only one dimension scaling Marketplace: overriding JSP creates conflicts INNOVSQUARE EclipseCon Europe 2015
  • 17. Modularity promises  Portlet independent versioning from Liferay Portal OSGi semantic versioning  Business Agility: More frequent delivery of new features or improvements Easy and decoupled development process. Contract first approach / Loose coupling Dynamic extensions INNOVSQUAREINNOVSQUARE EclipseCon Europe 2015
  • 18. Modularity promises Resiliency /design for failure Enhance Security : bundle isolation/seal Patching : just replace the bundle  Microservices: small and independent (both for development and deployment) Make your product Powerfully customizable INNOVSQUARE EclipseCon Europe 2015
  • 19. Modularity challenges Communications challenges => OSGi provides in VM-microservices. Zero configuration. How do I manage the configuration ? OSGi Framework provides Configuration Admin service. INNOVSQUARE EclipseCon Europe 2015
  • 20. From monolithic to microservices INNOVSQUARE EclipseCon Europe 2015 Core Services (ldap auth, messaging, cache …) WikiBlog Liferay Portal WAR OSGi Container ldap auth messaging cache OSGi Service Registry Blog UI Blog API Blog Service Wiki UI Wiki API Wiki Service …
  • 21. Liferay 7 modular architecture OSGI Container Module ModuleModule AppApp App App Liferay Portal Core (not yet extracted) Log Service Http Service JSP Support Config Admin INNOVSQUARE EclipseCon Europe 2015 Application Server
  • 22. Liferay 7 modular architecture Statistics (based on Liferay 7 alpha1): Number of extracted bundles: 326 Number of integration points > 200 INNOVSQUARE EclipseCon Europe 2015
  • 23. Liferay module framework base path of the module framework Module bundles Portal core’s services bundles framework persistence directory INNOVSQUARE EclipseCon Europe 2015 Liferay’s module framework bundles Testing bundles Bundles to start with the module framework Test utility Tools
  • 24. Liferay module framework Liferay Portal OSGi Container OSGi Service Registry Bundle A Bundle B Bundle C IndexPostProcessorWrapperServiceRegistryWrapper Liferay custom bundle registration Utility (Service Tracker) Hot deploy listeners Module deploy folder INNOVSQUARE EclipseCon Europe 2015 Liferay Service Registry Liferay Service Tracker Liferay Core’s Services
  • 25. Liferay module framework  Liferay 7 owns the deployment Lifecycle: no longer relaying on application server for deployment. Dynamically manage module lifecycles. Liferay modules are versioned and explicitly declare dependencies. INNOVSQUARE EclipseCon Europe 2015
  • 26. Building modules with OSGi  Liferay support various OSGi framework:  OSGi API Blueprint iPOJO OSGi Declarative Services INNOVSQUARE EclipseCon Europe 2015
  • 27. Building modules with OSGi Which technology is recommended by Liferay ?  Liferay recommendation is to use declarative services. INNOVSQUARE EclipseCon Europe 2015
  • 28. Portlets using Declaratives Services 6.2 and earlier 7.0 portlet.xml liferay-portlet.xml liferay-display.xml XML Configuration Annotation (DS) Portlet as a service INNOVSQUARE EclipseCon Europe 2015
  • 29. Modularize the service builder Service builder : Liferay service layer code scaffolding 6.2 and earlier 7.0 API (jar) Service Impl Portlet UI (JSP, …) Portlet Application (WAR) Bundles (Jars) Service Registry API Service Test INNOVSQUARE EclipseCon Europe 2015
  • 30. Sharing services between applications  Zero Effort, Zero Configuration ! All what you need is to publish your services in the OSGi service registry. Service A Service B Service C Service D Portlet 1 Portlet 2 Portlet 3 Service Registry INNOVSQUARE EclipseCon Europe 2015
  • 32. Overriding core services deploy a service with a higher service ranking than the original Using OSGi service ranking : property= {"service.ranking:Integer=100"} INNOVSQUARE EclipseCon Europe 2015
  • 33. Portlet Filter 6.2 and earlier 7.0 Portlet Application (WAR) Portlet Filter - Defined inside the portlet app ! - Hard to implement filter for OTB portlets Bundles (Jars) INNOVSQUARE EclipseCon Europe 2015
  • 34. Portlet Filter 6.2 and earlier 7.0 Portlet Application (WAR) Portlet Filter - Defined inside the portlet app ! - Hard to implement filter for OTB portlets Portlet Filter Bundles (Jars) Portlet INNOVSQUARE EclipseCon Europe 2015
  • 35. Split into modules : Form Builder as example INNOVSQUARE EclipseCon Europe 2015
  • 36. Split into microservices: Form Builder as example 6.2 (Monolithic) 7 (OSGI) INNOVSQUARE EclipseCon Europe 2015
  • 37. Split into microservices: Form Builder as example com.liferay.dynamic.data.mapping.type.checkbox.jar com.liferay.dynamic.data.mapping.type.radio.jar com.liferay.dynamic.data.mapping.type.text.jar com.liferay.dynamic.data.mapping.type.select.jar INNOVSQUARE EclipseCon Europe 2015
  • 38. Split into microservices: build for extension My custom type INNOVSQUARE EclipseCon Europe 2015
  • 39. Portal Configuration API Available Configuration for Liferay 6: Portal properties files: don’t have types restart on every change Portal.properties file: One big file with 10000 lines Portlets preferences: XML based don’t support types INNOVSQUARE EclipseCon Europe 2015
  • 40. Portal Configuration API Configuration management based on :  OSGi Configuration Admin OSGi MetaType Properties are typed Properties are well separated by modules Dynamically load properties on runtime INNOVSQUARE EclipseCon Europe 2015
  • 41. Portal Configuration API INNOVSQUARE EclipseCon Europe 2015
  • 42. Portal Configuration API - Scopes Portal Instance Site Portal Instance Site Site Site Site Site Portlets System INNOVSQUARE EclipseCon Europe 2015
  • 43. Portal Configuration API –Customize properties Customize properties using Configuration Admin portlet: INNOVSQUARE EclipseCon Europe 2015
  • 44. Portal Configuration API –Customize properties  Locate the Configuration class : annotated with :  Create a .cfg file with the id:  Add properties with the new values: admin.email.from.address=contentmanager@mycompany.com admin.email.from.name=contentmanager@mycompany.com  Drop it into the deploy folder of Liferay INNOVSQUARE EclipseCon Europe 2015
  • 45. UI customization & extension extensible user interfaces using the already built in mechanisms into the platform.  Dynamic include using the Liferay extension points : <liferay-util:dynamic-include key=“com.liferay.frontend.editors.web"/> INNOVSQUARE EclipseCon Europe 2015
  • 46. Customizing UI Components Why: provide a better configuration for your needs. INNOVSQUARE EclipseCon Europe 2015
  • 47. Customizing UI Components INNOVSQUARE EclipseCon Europe 2015
  • 48. Dev Tools  BND Tools: Robust OSGi bundles build tools.  Blade Tools: Liferay tools to build modules https://github.com/gamerson/blade.tools  Liferay provide also a set of plugins to build custom modules: com.liferay.portal.tools.sample.sql.builder com.liferay.portal.tools.service.builder com.liferay.portal.tools.upgrade.table.builder com.liferay.portal.tools.wsdd.builder INNOVSQUARE EclipseCon Europe 2015
  • 49. Useful Resources Liferay developer network: https://dev.liferay.com/develop/ Liferay DevCon 2015: https://www.liferay.com/fr/web/events2015/devcon/recap Liferay Blade project: https://github.com/rotty3000/blade Liferay Blade Tools: https://github.com/gamerson/blade.tools INNOVSQUAREINNOVSQUARE EclipseCon Europe 2015
  • 50. Conclusion – lessons learned Be realistic & do it in steps: leaving Rome wasn't built in a day ! First step: In-VM microservices Choose robust tools and standards: OSGi is one of the best for java world.  Provide dev and migration tools :very important for your customers. Focus on Single Responsibility Principle (SRP) INNOVSQUARE EclipseCon Europe 2015
  • 51. Conclusion – takeaways  Each @Component can be replaced with your own. Reusable components: Taglibs, Item Selector, Portlet decorator … Customize and extend INNOVSQUARE EclipseCon Europe 2015
  • 53.
  • 54. You want to learn more ? 2 talks by Ray Augé : Today : Tomorrow: