SlideShare a Scribd company logo
1 of 34
Download to read offline
Building a Modular Server Platform with OSGi
Dileepa Jayakody
Software Engineer
SSWSO2 Inc.
Outline
• Complex Systems
• OSGi for Modular Systems
• OSGi in SOA middleware
• Carbon : A modular server platform for middleware
• Carbon Architecture
Complex Systems
• A Complex Systems is a set of interconnected heterogeneous
components
• They are hard to maintain, extend or even to understand!
Problems with Complex Systems
• Hard to maintain
• Code duplication
• Inconsistency
• Lack of interoperability
• Tightly coupled components
Solution : Modular Systems
What is OSGi?
• The dynamic modular system for Java
• Defines a way to create true modules and a way for those
modules to interact at runtime to create a modular system
• A module: a bundle
A jar + manifest (bundle metadata)
• Can be installed, updated, and uninstalled without restarting the
JVM
How does OSGi help?
OSGi helps to break down a complex systems into a collection of
interacting modules
• Modularity
• A bundle can share/hide information at package level
• Lifecycle Management
• Separate class loader for each bundle
• A bundle-lifecycle can be managed dynamically
• Services
• Each bundle provides it's functionality as OSGi services to other
bundles
• Services are simply Java objects that implement a given interface
• Implementation is loosely coupled
• Bundles reuse a single Java object registered
• In VM collaborative SOA model
SOA Middleware
• Middleware : The software which glues/connect different
enterprise applications
• A Middleware platform provides;
• Integration
• Governance
• Data Services
• Business Processes
• Connectivity Services
• Identity and Security
• Application Management
• API Management
OSGi in Middleware
• Each SOA component can be represented by an OSGi bundle
• Application Management
• Mediation
• Service Hosting etc.
• Separation of concern
• Each OSGi bundle to provide a set of well-defined services
• Loosely coupled components
• Dynamic loading of modules
• Can extend the system dynamically by installing new bundles
• Is supported by an underlying provisioning platform
WSO2 Carbon
• Carbon: An open-source fully componentized enterprise
middleware platform based on OSGi
• Complemented by Stratos : The cloud enabled middleware
platform (PaaS)
• Consists of a core set of components providing core services
such as;
• Security
• Clustering
• Logging
• Transports
• Registry
• User management etc.
• Other components use the carbon core services and extend
system functionality
Why did we build Carbon?
• Fast growing complexity of the platform
• Overlapping components
• Duplicated functionality
• Difficulty to integrate functionality between products
Carbon Architecture
• Carbon Components
• Carbon Features
• Orbits
• Kernel Services
• Feature Provisioning
Carbon Core Architecture
Carbon Components
• A set of lean and self-consistent OSGi Bundles
• Lives in the Carbon Framework. Hence should adhere to rules
defined in the Carbon Framework
• Fundamental Concept : FE-BE Separation
• Every component has a core runtime, a well-defined front-end console
and a clean SOA management interface
• All completely pluggable and versioned
• Connected via web-services
• Use Core Carbon Services
• Via OSGi service registry
• e.g. Registry Service, UserManager Service, etc.
Carbon Features
• Similar to Eclipse Features
• An aggregate of Carbon components
• Carbon Products are composed using Carbon features (Eclipse
for Servers)
• A Carbon Feature
• Is an installable unit which can be installed into any Carbon based
product
• Allows you to manage bundle and feature level dependencies
• Can be installed using the Carbon Feature Manager
• Can be published as a p2-repository
• A Carbon Feature Category
• A logical grouping of features
• Represents a Carbon Product
Carbon and Equinox P2
• The provisioning platform for Carbon features
• Using Equinox p2 in Carbon you can;
• Install
• Uninstall
• Revert
• Update Carbon features.
• Features can be installed from a P2 repository
• P2 feature repository can be either
• File-based
• Web-based
Orbits : External dependencies
• Lots of open source projects smoothly integrated
• Apache Axis2
• Apache tomcat
• Apache ODE
• Apache synapse
• Bundled as Orbits (Similar to Eclipse Orbit Project)
• Dependencies managed with versions
• External non-OSGi jars are auto-bundled (components/lib)
• Gives the user more flexibility in using external libraries
(eg: jdbc libraries)
Kernel Services
• Kernel services through Carbon core
• Execution (supporting services and workflows)
• Data Storage
• Security (user management, authentication, authorization)
• User Interfaces
• Other Services (monitoring, caching, clustering etc.)
• They are used by most components and simplify development
of new components
• OSGi Maturity model : Level 4 (loosely coupled)
• Separation of interface from implementation
• Provides a services-based module collaboration
• Dependencies semantically versioned
The Big Picture
The Big Picture
OSGi best practises in Carbon
• Controlled number of exports from a bundle
• Semantic Versioning for Imports/Exports
• Version ranges for imports to handle backward compatibilities
• To manage dependencies between components
• To host different versions of the same package and correctly handle
dependencies
• Avoided usage of Required-Bundle
• To avoid tight-coupling
• Declarative services as the dependency injection model
• To manage dependencies between components dynamically
• Use of OSGi HttpService
• To consume http requests by bundles
Carbon Component: Development Process
• Develop the Carbon component
• Back-end component (BE OSGi bundles)
• Front-end component (FE OSGi bundles)
• Common bundles, if any
• Develop the corresponding feature
• BE/Server Feature
• FE/UI Feature
• Composite Feature
• Install into a Carbon based product
• By integrating with the product build system or;
• By developing a feature repository and installing using Feature
Manager
Tools for Carbon
• Maven
• To build Carbon source
• Maven bundle plugin
• To build bundles
• Manage dependencies
• Maven scr plugin (scr : service components runtime)
• Service Components are defined through annotations
• Plugin creates the necessary descriptors for the OSGi Declarative
Services
• Carbon P2 plugin (Developed at WSO2)
• To build features & feature categories
• To build feature repositories
• To build product profiles
Maven Bundle Plugin
• Is the Maven version of BND tool by Peter Kriens
• The primary goal of BND is to relieve the bundle developer from
the pain of creating the bundle manifest
• Wraps BND to make it work with Maven project structure
• BND instructions;
• Manifest headers :
• These instructions are copied to the manifest file as manifest headers. Values
of these instruction are either copied, or generated by the Plugin.
• Variables :
• These instructions act as variables and can be used for property substitution
• Directives :
• These perform some special processing
Maven Bundle Plugin (Apache Felix Plugin)
Carbon P2 Plugin
• Maven tool for creating features, feature-repositories and carbon-
products
• Uses Eclipse FeaturesAndBundles Publisher tool under the hood
• Instructions
• bundleDef : includes a bundle
• IncludedFeatureDef : includes a feature as a sub-feature
• ImportFeatureDef : defines a dependency to an external feature
• Type of the Carbon Feature can be defined as a p2-property
• org.wso2.carbon.p2.category.type:server
• org.wso2.carbon.p2.category.type:console
Generating features with p2-plugin
Feature Categories
• Uses P2 Category publisher under the hood
• Generates the category.xml and provide it to the category
publisher
Feature Manager
• UI based tool to perform provisioning actions on Carbon
• Helps to compose carbon products with the required features
Installed Features
OSGi Future in Carbon
• Multi-tenant OSGi
• Regions for each tenant
• SOA artifacts can be partitioned per tenant in OSGi runtime
Summary
• Complex systems are hard to maintain and extend
• The solution: modular systems
• OSGi : a true dynamic modular system for Java
• OSGi in SOA middleware
• Carbon : a modular server platform for middleware
Questions?
dileepa@wso2.com
dev@wso2.org
Thank you!

More Related Content

What's hot

Open stack + Containers + Hyper-V
Open stack + Containers + Hyper-VOpen stack + Containers + Hyper-V
Open stack + Containers + Hyper-VSriram Subramanian
 
Creating a Kubernetes Operator in Java
Creating a Kubernetes Operator in JavaCreating a Kubernetes Operator in Java
Creating a Kubernetes Operator in JavaRudy De Busscher
 
WSO2Con USA 2015: Carbon 5: A Preview
WSO2Con USA 2015: Carbon 5: A PreviewWSO2Con USA 2015: Carbon 5: A Preview
WSO2Con USA 2015: Carbon 5: A PreviewWSO2
 
Ahmedabad MuleSoft Meetup #1
Ahmedabad MuleSoft Meetup #1Ahmedabad MuleSoft Meetup #1
Ahmedabad MuleSoft Meetup #1Tejas Purohit
 
5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipelineMichel Schildmeijer
 
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...Tony Erwin
 
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...Gilad Garon
 
Container Conf 2017: Rancher Kubernetes
Container Conf 2017: Rancher KubernetesContainer Conf 2017: Rancher Kubernetes
Container Conf 2017: Rancher KubernetesVishal Biyani
 
Oracle SOA suite and Coherence dehydration
Oracle SOA suite and  Coherence dehydrationOracle SOA suite and  Coherence dehydration
Oracle SOA suite and Coherence dehydrationMichel Schildmeijer
 
GWT Enterprise Edition
GWT Enterprise EditionGWT Enterprise Edition
GWT Enterprise EditionGilad Garon
 
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application StartupHow Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application StartupRudy De Busscher
 
Planning WSO2 Deployments on Pivotal Cloud Foundry
Planning WSO2 Deployments on Pivotal Cloud FoundryPlanning WSO2 Deployments on Pivotal Cloud Foundry
Planning WSO2 Deployments on Pivotal Cloud FoundryImesh Gunaratne
 
Bootiful GraphQL with Kotlin
Bootiful GraphQL with KotlinBootiful GraphQL with Kotlin
Bootiful GraphQL with KotlinVMware Tanzu
 
Application Deployment and Management at Scale at 1&1
Application Deployment and Management at Scale at 1&1Application Deployment and Management at Scale at 1&1
Application Deployment and Management at Scale at 1&1Matt Baldwin
 
WSO2 API Manager Reference Architecture for DC/OS
WSO2 API Manager Reference Architecture for DC/OSWSO2 API Manager Reference Architecture for DC/OS
WSO2 API Manager Reference Architecture for DC/OSImesh Gunaratne
 
Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020Michel Schildmeijer
 
Cloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesCloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesRobin Howlett
 
Warsaw MuleSoft Meetup #7 - custom policy
Warsaw MuleSoft Meetup #7 - custom policyWarsaw MuleSoft Meetup #7 - custom policy
Warsaw MuleSoft Meetup #7 - custom policyPatryk Bandurski
 

What's hot (20)

Open stack + Containers + Hyper-V
Open stack + Containers + Hyper-VOpen stack + Containers + Hyper-V
Open stack + Containers + Hyper-V
 
Creating a Kubernetes Operator in Java
Creating a Kubernetes Operator in JavaCreating a Kubernetes Operator in Java
Creating a Kubernetes Operator in Java
 
WSO2Con USA 2015: Carbon 5: A Preview
WSO2Con USA 2015: Carbon 5: A PreviewWSO2Con USA 2015: Carbon 5: A Preview
WSO2Con USA 2015: Carbon 5: A Preview
 
Ahmedabad MuleSoft Meetup #1
Ahmedabad MuleSoft Meetup #1Ahmedabad MuleSoft Meetup #1
Ahmedabad MuleSoft Meetup #1
 
5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline
 
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
 
WebLogic and GraalVM
WebLogic and GraalVMWebLogic and GraalVM
WebLogic and GraalVM
 
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
 
Container Conf 2017: Rancher Kubernetes
Container Conf 2017: Rancher KubernetesContainer Conf 2017: Rancher Kubernetes
Container Conf 2017: Rancher Kubernetes
 
Oracle SOA suite and Coherence dehydration
Oracle SOA suite and  Coherence dehydrationOracle SOA suite and  Coherence dehydration
Oracle SOA suite and Coherence dehydration
 
GWT Enterprise Edition
GWT Enterprise EditionGWT Enterprise Edition
GWT Enterprise Edition
 
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application StartupHow Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
 
Planning WSO2 Deployments on Pivotal Cloud Foundry
Planning WSO2 Deployments on Pivotal Cloud FoundryPlanning WSO2 Deployments on Pivotal Cloud Foundry
Planning WSO2 Deployments on Pivotal Cloud Foundry
 
Bootiful GraphQL with Kotlin
Bootiful GraphQL with KotlinBootiful GraphQL with Kotlin
Bootiful GraphQL with Kotlin
 
Application Deployment and Management at Scale at 1&1
Application Deployment and Management at Scale at 1&1Application Deployment and Management at Scale at 1&1
Application Deployment and Management at Scale at 1&1
 
WSO2 API Manager Reference Architecture for DC/OS
WSO2 API Manager Reference Architecture for DC/OSWSO2 API Manager Reference Architecture for DC/OS
WSO2 API Manager Reference Architecture for DC/OS
 
Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020
 
Cloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesCloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web Services
 
Warsaw MuleSoft Meetup #7 - custom policy
Warsaw MuleSoft Meetup #7 - custom policyWarsaw MuleSoft Meetup #7 - custom policy
Warsaw MuleSoft Meetup #7 - custom policy
 
Let's serve your data
Let's serve your dataLet's serve your data
Let's serve your data
 

Similar to Building a Modular Server Platform with OSGi

Building a server platform with os gi
Building a server platform with os giBuilding a server platform with os gi
Building a server platform with os giDileepa Jayakody
 
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
 
How to build a custom stack with wso2 carbon
How to build a custom stack with wso2 carbonHow to build a custom stack with wso2 carbon
How to build a custom stack with wso2 carbonShameera Rathnayaka
 
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost WSO2
 
The Art & Zen of Managing Nagios with Puppet
The Art & Zen of Managing Nagios with PuppetThe Art & Zen of Managing Nagios with Puppet
The Art & Zen of Managing Nagios with PuppetVictorOps
 
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...Nuxeo
 
The Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With PuppetThe Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With PuppetMike Merideth
 
Developing modular Java applications
Developing modular Java applicationsDeveloping modular Java applications
Developing modular Java applicationsJulien Dubois
 
Introduction to the wso2 carbon platform webinar
Introduction to the wso2 carbon platform   webinarIntroduction to the wso2 carbon platform   webinar
Introduction to the wso2 carbon platform webinarWSO2
 
Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform  Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform WSO2
 
Why Does Modular Middleware Matters
Why Does Modular Middleware MattersWhy Does Modular Middleware Matters
Why Does Modular Middleware MattersWSO2
 
Monoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is ModularityMonoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is ModularityGraham Charters
 
Introducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformIntroducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformNuxeo
 
Dependencies, dependencies, dependencies
Dependencies, dependencies, dependenciesDependencies, dependencies, dependencies
Dependencies, dependencies, dependenciesMarcel Offermans
 
SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...
SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...
SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...David vonThenen
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in developmentMartin Toshev
 
What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0David Bosschaert
 

Similar to Building a Modular Server Platform with OSGi (20)

Building a server platform with os gi
Building a server platform with os giBuilding a server platform with os gi
Building a server platform with os gi
 
Carbon 5 : A Preview
Carbon 5 : A PreviewCarbon 5 : A Preview
Carbon 5 : A Preview
 
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
 
How to build a custom stack with wso2 carbon
How to build a custom stack with wso2 carbonHow to build a custom stack with wso2 carbon
How to build a custom stack with wso2 carbon
 
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
 
The Art & Zen of Managing Nagios with Puppet
The Art & Zen of Managing Nagios with PuppetThe Art & Zen of Managing Nagios with Puppet
The Art & Zen of Managing Nagios with Puppet
 
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
 
The Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With PuppetThe Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With Puppet
 
Developing modular Java applications
Developing modular Java applicationsDeveloping modular Java applications
Developing modular Java applications
 
Introduction to the wso2 carbon platform webinar
Introduction to the wso2 carbon platform   webinarIntroduction to the wso2 carbon platform   webinar
Introduction to the wso2 carbon platform webinar
 
Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform  Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform
 
Why Does Modular Middleware Matters
Why Does Modular Middleware MattersWhy Does Modular Middleware Matters
Why Does Modular Middleware Matters
 
Monoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is ModularityMonoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is Modularity
 
Introducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformIntroducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management Platform
 
Dependencies, dependencies, dependencies
Dependencies, dependencies, dependenciesDependencies, dependencies, dependencies
Dependencies, dependencies, dependencies
 
Carbon and OSGi Deep Dive
Carbon and OSGi Deep DiveCarbon and OSGi Deep Dive
Carbon and OSGi Deep Dive
 
Microservices deck
Microservices deckMicroservices deck
Microservices deck
 
SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...
SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...
SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in development
 
What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0
 

Recently uploaded

办理学位证纽约大学毕业证(NYU毕业证书)原版一比一
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一办理学位证纽约大学毕业证(NYU毕业证书)原版一比一
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一fhwihughh
 
GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]📊 Markus Baersch
 
From idea to production in a day – Leveraging Azure ML and Streamlit to build...
From idea to production in a day – Leveraging Azure ML and Streamlit to build...From idea to production in a day – Leveraging Azure ML and Streamlit to build...
From idea to production in a day – Leveraging Azure ML and Streamlit to build...Florian Roscheck
 
ASML's Taxonomy Adventure by Daniel Canter
ASML's Taxonomy Adventure by Daniel CanterASML's Taxonomy Adventure by Daniel Canter
ASML's Taxonomy Adventure by Daniel Cantervoginip
 
Dubai Call Girls Wifey O52&786472 Call Girls Dubai
Dubai Call Girls Wifey O52&786472 Call Girls DubaiDubai Call Girls Wifey O52&786472 Call Girls Dubai
Dubai Call Girls Wifey O52&786472 Call Girls Dubaihf8803863
 
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degreeyuu sss
 
vip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Book
vip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Bookvip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Book
vip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Bookmanojkuma9823
 
9654467111 Call Girls In Munirka Hotel And Home Service
9654467111 Call Girls In Munirka Hotel And Home Service9654467111 Call Girls In Munirka Hotel And Home Service
9654467111 Call Girls In Munirka Hotel And Home ServiceSapana Sha
 
RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998YohFuh
 
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)jennyeacort
 
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理e4aez8ss
 
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
DBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdfDBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdfJohn Sterrett
 
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024thyngster
 
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样vhwb25kk
 
How we prevented account sharing with MFA
How we prevented account sharing with MFAHow we prevented account sharing with MFA
How we prevented account sharing with MFAAndrei Kaleshka
 
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一F sss
 
INTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTDINTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTDRafezzaman
 
Call Girls In Mahipalpur O9654467111 Escorts Service
Call Girls In Mahipalpur O9654467111  Escorts ServiceCall Girls In Mahipalpur O9654467111  Escorts Service
Call Girls In Mahipalpur O9654467111 Escorts ServiceSapana Sha
 
B2 Creative Industry Response Evaluation.docx
B2 Creative Industry Response Evaluation.docxB2 Creative Industry Response Evaluation.docx
B2 Creative Industry Response Evaluation.docxStephen266013
 

Recently uploaded (20)

办理学位证纽约大学毕业证(NYU毕业证书)原版一比一
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一办理学位证纽约大学毕业证(NYU毕业证书)原版一比一
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一
 
GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]
 
From idea to production in a day – Leveraging Azure ML and Streamlit to build...
From idea to production in a day – Leveraging Azure ML and Streamlit to build...From idea to production in a day – Leveraging Azure ML and Streamlit to build...
From idea to production in a day – Leveraging Azure ML and Streamlit to build...
 
ASML's Taxonomy Adventure by Daniel Canter
ASML's Taxonomy Adventure by Daniel CanterASML's Taxonomy Adventure by Daniel Canter
ASML's Taxonomy Adventure by Daniel Canter
 
Dubai Call Girls Wifey O52&786472 Call Girls Dubai
Dubai Call Girls Wifey O52&786472 Call Girls DubaiDubai Call Girls Wifey O52&786472 Call Girls Dubai
Dubai Call Girls Wifey O52&786472 Call Girls Dubai
 
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
 
vip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Book
vip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Bookvip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Book
vip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Book
 
9654467111 Call Girls In Munirka Hotel And Home Service
9654467111 Call Girls In Munirka Hotel And Home Service9654467111 Call Girls In Munirka Hotel And Home Service
9654467111 Call Girls In Munirka Hotel And Home Service
 
RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998
 
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
 
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
 
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
DBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdfDBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdf
 
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
 
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
 
How we prevented account sharing with MFA
How we prevented account sharing with MFAHow we prevented account sharing with MFA
How we prevented account sharing with MFA
 
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
 
INTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTDINTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTD
 
Call Girls In Mahipalpur O9654467111 Escorts Service
Call Girls In Mahipalpur O9654467111  Escorts ServiceCall Girls In Mahipalpur O9654467111  Escorts Service
Call Girls In Mahipalpur O9654467111 Escorts Service
 
B2 Creative Industry Response Evaluation.docx
B2 Creative Industry Response Evaluation.docxB2 Creative Industry Response Evaluation.docx
B2 Creative Industry Response Evaluation.docx
 

Building a Modular Server Platform with OSGi

  • 1. Building a Modular Server Platform with OSGi Dileepa Jayakody Software Engineer SSWSO2 Inc.
  • 2. Outline • Complex Systems • OSGi for Modular Systems • OSGi in SOA middleware • Carbon : A modular server platform for middleware • Carbon Architecture
  • 3. Complex Systems • A Complex Systems is a set of interconnected heterogeneous components • They are hard to maintain, extend or even to understand!
  • 4. Problems with Complex Systems • Hard to maintain • Code duplication • Inconsistency • Lack of interoperability • Tightly coupled components
  • 6. What is OSGi? • The dynamic modular system for Java • Defines a way to create true modules and a way for those modules to interact at runtime to create a modular system • A module: a bundle A jar + manifest (bundle metadata) • Can be installed, updated, and uninstalled without restarting the JVM
  • 7. How does OSGi help? OSGi helps to break down a complex systems into a collection of interacting modules • Modularity • A bundle can share/hide information at package level • Lifecycle Management • Separate class loader for each bundle • A bundle-lifecycle can be managed dynamically • Services • Each bundle provides it's functionality as OSGi services to other bundles • Services are simply Java objects that implement a given interface • Implementation is loosely coupled • Bundles reuse a single Java object registered • In VM collaborative SOA model
  • 8. SOA Middleware • Middleware : The software which glues/connect different enterprise applications • A Middleware platform provides; • Integration • Governance • Data Services • Business Processes • Connectivity Services • Identity and Security • Application Management • API Management
  • 9. OSGi in Middleware • Each SOA component can be represented by an OSGi bundle • Application Management • Mediation • Service Hosting etc. • Separation of concern • Each OSGi bundle to provide a set of well-defined services • Loosely coupled components • Dynamic loading of modules • Can extend the system dynamically by installing new bundles • Is supported by an underlying provisioning platform
  • 10. WSO2 Carbon • Carbon: An open-source fully componentized enterprise middleware platform based on OSGi • Complemented by Stratos : The cloud enabled middleware platform (PaaS) • Consists of a core set of components providing core services such as; • Security • Clustering • Logging • Transports • Registry • User management etc. • Other components use the carbon core services and extend system functionality
  • 11. Why did we build Carbon? • Fast growing complexity of the platform • Overlapping components • Duplicated functionality • Difficulty to integrate functionality between products
  • 12. Carbon Architecture • Carbon Components • Carbon Features • Orbits • Kernel Services • Feature Provisioning
  • 14. Carbon Components • A set of lean and self-consistent OSGi Bundles • Lives in the Carbon Framework. Hence should adhere to rules defined in the Carbon Framework • Fundamental Concept : FE-BE Separation • Every component has a core runtime, a well-defined front-end console and a clean SOA management interface • All completely pluggable and versioned • Connected via web-services • Use Core Carbon Services • Via OSGi service registry • e.g. Registry Service, UserManager Service, etc.
  • 15. Carbon Features • Similar to Eclipse Features • An aggregate of Carbon components • Carbon Products are composed using Carbon features (Eclipse for Servers) • A Carbon Feature • Is an installable unit which can be installed into any Carbon based product • Allows you to manage bundle and feature level dependencies • Can be installed using the Carbon Feature Manager • Can be published as a p2-repository • A Carbon Feature Category • A logical grouping of features • Represents a Carbon Product
  • 16. Carbon and Equinox P2 • The provisioning platform for Carbon features • Using Equinox p2 in Carbon you can; • Install • Uninstall • Revert • Update Carbon features. • Features can be installed from a P2 repository • P2 feature repository can be either • File-based • Web-based
  • 17. Orbits : External dependencies • Lots of open source projects smoothly integrated • Apache Axis2 • Apache tomcat • Apache ODE • Apache synapse • Bundled as Orbits (Similar to Eclipse Orbit Project) • Dependencies managed with versions • External non-OSGi jars are auto-bundled (components/lib) • Gives the user more flexibility in using external libraries (eg: jdbc libraries)
  • 18. Kernel Services • Kernel services through Carbon core • Execution (supporting services and workflows) • Data Storage • Security (user management, authentication, authorization) • User Interfaces • Other Services (monitoring, caching, clustering etc.) • They are used by most components and simplify development of new components • OSGi Maturity model : Level 4 (loosely coupled) • Separation of interface from implementation • Provides a services-based module collaboration • Dependencies semantically versioned
  • 21. OSGi best practises in Carbon • Controlled number of exports from a bundle • Semantic Versioning for Imports/Exports • Version ranges for imports to handle backward compatibilities • To manage dependencies between components • To host different versions of the same package and correctly handle dependencies • Avoided usage of Required-Bundle • To avoid tight-coupling • Declarative services as the dependency injection model • To manage dependencies between components dynamically • Use of OSGi HttpService • To consume http requests by bundles
  • 22. Carbon Component: Development Process • Develop the Carbon component • Back-end component (BE OSGi bundles) • Front-end component (FE OSGi bundles) • Common bundles, if any • Develop the corresponding feature • BE/Server Feature • FE/UI Feature • Composite Feature • Install into a Carbon based product • By integrating with the product build system or; • By developing a feature repository and installing using Feature Manager
  • 23. Tools for Carbon • Maven • To build Carbon source • Maven bundle plugin • To build bundles • Manage dependencies • Maven scr plugin (scr : service components runtime) • Service Components are defined through annotations • Plugin creates the necessary descriptors for the OSGi Declarative Services • Carbon P2 plugin (Developed at WSO2) • To build features & feature categories • To build feature repositories • To build product profiles
  • 24. Maven Bundle Plugin • Is the Maven version of BND tool by Peter Kriens • The primary goal of BND is to relieve the bundle developer from the pain of creating the bundle manifest • Wraps BND to make it work with Maven project structure • BND instructions; • Manifest headers : • These instructions are copied to the manifest file as manifest headers. Values of these instruction are either copied, or generated by the Plugin. • Variables : • These instructions act as variables and can be used for property substitution • Directives : • These perform some special processing
  • 25. Maven Bundle Plugin (Apache Felix Plugin)
  • 26. Carbon P2 Plugin • Maven tool for creating features, feature-repositories and carbon- products • Uses Eclipse FeaturesAndBundles Publisher tool under the hood • Instructions • bundleDef : includes a bundle • IncludedFeatureDef : includes a feature as a sub-feature • ImportFeatureDef : defines a dependency to an external feature • Type of the Carbon Feature can be defined as a p2-property • org.wso2.carbon.p2.category.type:server • org.wso2.carbon.p2.category.type:console
  • 28. Feature Categories • Uses P2 Category publisher under the hood • Generates the category.xml and provide it to the category publisher
  • 29. Feature Manager • UI based tool to perform provisioning actions on Carbon • Helps to compose carbon products with the required features
  • 31. OSGi Future in Carbon • Multi-tenant OSGi • Regions for each tenant • SOA artifacts can be partitioned per tenant in OSGi runtime
  • 32. Summary • Complex systems are hard to maintain and extend • The solution: modular systems • OSGi : a true dynamic modular system for Java • OSGi in SOA middleware • Carbon : a modular server platform for middleware