SlideShare une entreprise Scribd logo
1  sur  21
OSGi Patterns v. 1.0.11



           OSGi, Maven, Hudson
           Best practises




                     2012/1.0.11 C. St-Marcel - @VELOSSITY
Introduction

     Velossity proposes a family of well known OSGi
      patterns*
     Velossity is a small French company focusing on
      OSGi since many years
     It is specialized on industrial projects for embedded
      platforms (Home automation, energy gateways)
     This work is part of trainings called:

    “Embedding OSGi in your Devices, Continuous
      Integration with Maven”
2       * Naming and classification are our own view   2012/1.0.11 C. St-Marcel - @VELOSSITY
Continuous Integration

       OSGi pattern build chain reference is
        maintained at Sourceforge:
          svn co https://osgipatterns.svn.sourceforge.net/svnroot/osgipatterns/multi-
          modules/tags/patterns.aggregator-1.0.11 osgipatterns


       Continuous Integration is done with Jenkins:
          http://velossity.zapto.org:8080/



       OSGi bundles are deployed in the Maven
        central under the groupId “fr.velossity.osgi”

3                                                                                       2012/1.0.11 C. St-Marcel - @VELOSSITY
The basics of OSGi

      Motivation
    The strength of OSGi is to merge OO concepts generally used for reuse in a unique
       manner which is the service. Lot of solutions were emerging to deal with service
       communication and low coupling, trying to answer to the question: “How can I
       connect my services?”.

      Solution
    Provide & Request patterns exchange services, that is functions or some processing
       logic or business processing offered by a Service Provider and used by a Service
       Requester. Examples of services are monitoring, posting, logging, etc. In OSGi the
       service is represented by a POJI (a Plain Old Java Interface).
    Produce & Consume patterns exchange data, that is information created and
       published by a Data Producer and read by a Data Consumer. Examples of data
       are measures, letters, logs, etc. In OSGi a data is represented by a POJO (a Plain
       Old Java Object).
4                                                                  2012/1.0.11 C. St-Marcel - @VELOSSITY
Provide & Request family

                                     Provide & Request Pattern




                                                                                      Instantiation
          Instantiation                             Instantiation

                                                                       Inversion Of
                                                                          Control
      Extender Pattern                 Service Model Pattern                                  White Board Pattern

                                            Factory Pattern                                           Listener Pattern


               Refinement                                             Transformation
                                             Refinement



      Eclipse Extension     Dynamic Binding Framework
                                                                    Service Deployment Pattern
                                                                     (A. Bottaro / Fred Rivard)




5                                                                                 2012/1.0.11 C. St-Marcel - @VELOSSITY
Requester       “Which service(s) do I require?”




    Service Model                               Provider        “Which service(s) do I provide?”




       The service is defined by a contract
        (the Service API)
       The Provider publishes the Service                       Component                   Java Interface

        in the registry
       The service has its own lifecycle,
        e.g. it can come and go                                   Service registry
       The Requester is requesting the                             Service API
        registry for the existing service, it
        can also be notified when the              Publishes
                                                                                        Notifies
                                                                        Requests
        service is appearing                                           Binds
                                                     Service                          Service
       The requester binds to the provider,         Provider                        Requester
        it invokes the service at the end                              Invoke




6                                                                               2012/1.0.11 C. St-Marcel - @VELOSSITY
Requester       “Which service(s) do I handle?”




    White Board                               Provider        “Who is interested by my service(s)?”




       The White Board pattern is just an
        inversion of control
       The Requester is now publishing a                      Component                  Java Interface

        handler of service and the Provider
        is requesting it
       The Provider can bind to the                           Service registry
        Requester, it invokes the handle
                                                              ServiceHandler API
        method with the service as
        parameter                                 Requests                         Publishes
                                                                  Notifies
                                                                    Binds
                                                   Service                          Service
                                                   Provider                        Requester
                                                              Handle(ServiceAPI)




7                                                                            2012/1.0.11 C. St-Marcel - @VELOSSITY
Service Deployment
      The Service Deployment pattern strengthens the Service Model pattern as it defines
      constraints on the deployment itself. It guaranties a strict separation of service
      interfaces and service implementations using three isolate bundles, one for the API and
      two for the implementations of the Requester and the Provider




8
       From F. Rivard and A. Bottaro at OSGi Community Event - 2010

                                                                       2012/1.0.11 C. St-Marcel - @VELOSSITY
“How may I be extended, what are my
                                             Requester
                                                             extensions points?”




    Extender                                 Provider        “What will I extend?”




       The Extender Pattern main idea is
        to extend the semantics of bundles
        by adding custom manifest headers
                                                            Component                    Java Interface
       Extended bundles can react if
        bundles with these headers come
        and go dynamically
                                                        Service registry
       In our case, the Requester is
        viewed as an extension for the                  BundleListener                   ServiceAPI
        Provider
                                                  Publishes                          Implements

                                                            Service         Load           Service
                                                            Provider                      Requester




9                                                                          2012/1.0.11 C. St-Marcel - @VELOSSITY
Extensions or services

        The Extender pattern is designed for extensions. The requester point of view is
         privileged, it is one-to-many relationship between a requester and many
         providers. In Eclipse this relation is private, i.e. you develop extensions for a
         unique extension point. This is a natural way of thinking for this platform which ,
         incidentally, provides an extensible container supporting new views, new
         projects, new languages, etc.
        The Service Model and White Board are designed for a truly service approach
         where the contract is public and is not privileging any point of view. It is
         potentially a many-to-many relationship between requesters and providers


             The Extender Pattern is very useful and natural
             for extension (quite natural for an extender)
             whereas two others are powerful for reuse of
             services. That is why they are complementary.
10                                                                      2012/1.0.11 C. St-Marcel - @VELOSSITY
Produce & Consume Patterns


                                            Produce & Consume Pattern



                            Instantiation
                                                                          Instantiation
                                                          Instantiation




      Event Admin Pattern                       White Board Pattern                       Wire Admin Pattern




11                                                                              2012/1.0.11 C. St-Marcel - @VELOSSITY
Consumer     “Which type of data(s) do I subscribe?”




     Event Admin
                                                Producer     “Which type of data(s) do I publish?”




        The Event Admin Service provides
         a standard way for working with
         events in the OSGi Environment                      Component                  Java Interface
         using the publish/subscribe model.
         It was introduced in the R4
         specifications
        the EventAdmin is like a mediator                                 Service registry
         between producers and consumers                      EventAdmin                      EventHandler
         of events. It is using itself the
         White-Board pattern to transfer
                                                  Requests
         events to components which have                          Publishes
                                                                                  Requests                   Publishes
         registered                                               Binds
                                                    Data                                                         Data
        The graph of dependencies                Producer
                                                                              EventAdminImpl
                                                                                                               Consumer
         between producers and consumers                     postEvent(Event)                    handleEvent(Event)
         is more difficult to maintain when
         using the Event Admin. You have to
         define and manage a strict policy of
         events


12                                                                               2012/1.0.11 C. St-Marcel - @VELOSSITY
Consumer    “Which type of data(s) do I handle?”




     White Board                                Producer    “Who is interested by my data(s)?”




        The whiteboard approach means
         that a consumer registers itself
         when it wants to consume. It will be                     Component                  Java Interface
         notified by the producers when new
         data are available. Producers know
         all their consumers, but consumers
         have no connection with producers.                        Service registry

        Do not use the Listener pattern                          DataHandler API
         anymore, apply the White Board
                                                       Requests                       Publishes
         pattern instead                                            Notifies
                                                                      Binds
                                                         Data                           Data
                                                       Producer                       Consumer
                                                                  NewData(Data)




13                                                                              2012/1.0.11 C. St-Marcel - @VELOSSITY
Consumer      “Which type of data(s) do I consume?”




     Wire Admin
                                                  Producer      “Which type of data(s) do I produce?”




        Release 3 of OSGi introduced a
         very flexible way to connect                          Component                Java Interface
         producers and consumers to
         each other.
        It can be viewed as “The                                           Service registry
         optimal low coupling scenario
         … when the consumer only                                Producer                      Consumer

         knows what type of data it
                                                   Publishes                       Requests               Publishes
         wants to consume, the producer                             Requests

         knows what type of data it                  Data                                                     Data
                                                                               WireAdminImpl
         produces, but neither of them             Producer                                                 Consumer

         know anything about the                    consumersConnected( Wire[] wires ) producersConnected( Wire[] wires )

         other”*.


           *in the paper proposed at OOPSLA 2003 by N. Nilson, a great source of inspiration
14         for our works on Produce & Consume
                                                                                  2012/1.0.11 C. St-Marcel - @VELOSSITY
A story of control

        Use the White Board wherever you usually used a Listener.
        Use the Event Admin when you want to
         distribute your producers and consumers on several platforms.
        Reserve the Wire Admin usage to a single layer. Originally, the Wire Admin was
         designed for sensors layer, it could be a good solution to manage them on your
         platforms in a coherent and flexible way.


             Let producers choose their consumers: the
             White board pattern
             Let consumers choose their producers: the
             Event Admin pattern
             Let a third party choose for you: the Wire
15           Admin pattern
                                                                    2012/1.0.11 C. St-Marcel - @VELOSSITY
Produce & Consume Anti-Patterns


                               Produce & Consume Anti-Pattern




             Instantiation                                      Instantiation




             Polling Pattern                               Event Listener Pattern




16                                                                              2012/1.0.11 C. St-Marcel - @VELOSSITY
Event Listener

        The Event Listener is the original
         java way to handle producer data
         (pattern introduced by the gang of
         4)                                                           Service registry

        As demonstrated*, this pattern “is                              Observable                     Observer
         considered harmful” in OSGi
                                                                  Publishes              Tracks              Implements

                                                                           Data           AddListener     Data
                                                                         Producer                       Consumer
                                                                                      NewData(Data)




         *Listeners Considered Harmful: The “Whiteboard” Pattern, Peter Kriens BJ Hargrave

17                                                                                         2012/1.0.11 C. St-Marcel - @VELOSSITY
Adapter [GOF]
          The adapter pattern originally proposed by the gang of four can be easily
           realized using the OSGi principles
          The main motivation is to wrap a low OSGi service to a high level one.
          This pattern is very useful when working with drivers and devices: a new low-
           end device is adapted to an abstract device hiding field bus dependencies.

                                                                    Component                    Java Interface




         Two implementations proposed, one with iPOJO
         and the other with the native OSGi API.                          Service registry
         The native solution is an adapter of the one           Adapted                      Adaptee
         originally proposed in:
         http://njbartlett.name/2010/08/05/when-
         servicetrackers-trump-ds.html                  Publishes         Tracks                  Publishes


                                                               Adapter                   Adaptee provider



18                                                                                 2012/1.0.11 C. St-Marcel - @VELOSSITY
Maven multi-modules organization
     | aggregator                     -- Run multi-modules build
     | parent                         -- Parent of all modules
     | distribution                   -- Generation of a zip containing all patterns
     | tests
     | -- integration                 -- Integration tests with Pax-Exam
     | step-3-notifications
     | -- ServiceModelPattern        -- Service Model
     | -- WhiteBoardPattern          -- White Board
     | step-1-provide-request
     | -- ExtenderPattern            -- Extender
     | step-4-produce-consume
     | -- WhiteBoardPattern          -- White Board
     | -- EventAdminPattern          -- Event Admin
     | -- WireAdminPattern           -- Wire Admin
     | adapter
     | -- native        -- Adapter implementation using native OSGi
     | -- iPOJO         -- Adapter implementation with iPOJO



                       svn co https://osgipatterns.svn.sourceforge.net/svnroot/osgipatterns/multi-
                       modules/tags/patterns.aggregator-1.0.11 osgipatterns

19                                                                                                   2012/1.0.11 C. St-Marcel - @VELOSSITY
Architectural Patterns


                    Loose Coupling Pattern




                               Instantiation




                       Layers Pattern




20                                             2012/1.0.11 C. St-Marcel - @VELOSSITY
Functional component


                                                                                      Bundle                  Service API


     Layers Pattern                                                                   Dependency




                                  Layer 1                                             Layer 2
                                                             Layer 2
                                                             compendium




                                       Service 1 API Service 2 API Service m API       Layer n
                                                  Layer n compendium

                                    Service 1          Service 2          Service m




      EventAdmin    LogService     ConfigAdmin                     OSGi Services Layer
     OSGi services compendium

                   Knopflerfish                    Felix                  Felix
                   LogService                   EventAdmin             ConfigAdmin


21                                                                                    2012/1.0.11 C. St-Marcel - @VELOSSITY

Contenu connexe

Tendances

CamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF SecurityCamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF SecurityKenneth Peeples
 
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...J V
 
OSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian SchneiderOSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian Schneidermfrancis
 
Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013Charles Moulliard
 
RESTful Web services using JAX-RS
RESTful Web services using JAX-RSRESTful Web services using JAX-RS
RESTful Web services using JAX-RSArun Gupta
 
Modular Architectures using Micro Services
Modular Architectures using Micro ServicesModular Architectures using Micro Services
Modular Architectures using Micro ServicesMarcel Offermans
 
WebLogic Event Server - Alexandre Alves, BEA
WebLogic Event Server - Alexandre Alves, BEAWebLogic Event Server - Alexandre Alves, BEA
WebLogic Event Server - Alexandre Alves, BEAmfrancis
 
Spring Dynamic Modules for OSGi by Example - Martin Lippert, Consultant
Spring Dynamic Modules for OSGi by Example - Martin Lippert, ConsultantSpring Dynamic Modules for OSGi by Example - Martin Lippert, Consultant
Spring Dynamic Modules for OSGi by Example - Martin Lippert, Consultantmfrancis
 
Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7Azilen Technologies Pvt. Ltd.
 
Apache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source IntegrationApache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source Integrationprajods
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache CamelChristian Posta
 
Batch Applications for Java Platform 1.0: Java EE 7 and GlassFish
Batch Applications for Java Platform 1.0: Java EE 7 and GlassFishBatch Applications for Java Platform 1.0: Java EE 7 and GlassFish
Batch Applications for Java Platform 1.0: Java EE 7 and GlassFishArun Gupta
 
RESTful web service with JBoss Fuse
RESTful web service with JBoss FuseRESTful web service with JBoss Fuse
RESTful web service with JBoss Fuseejlp12
 
ApacheCon EU 2014: Enterprise Development with Apache Karaf
ApacheCon EU 2014: Enterprise Development with Apache KarafApacheCon EU 2014: Enterprise Development with Apache Karaf
ApacheCon EU 2014: Enterprise Development with Apache KarafAchim Nierbeck
 
Cloud standards interoperability: status update on OCCI and CDMI implementations
Cloud standards interoperability: status update on OCCI and CDMI implementationsCloud standards interoperability: status update on OCCI and CDMI implementations
Cloud standards interoperability: status update on OCCI and CDMI implementationsFlorian Feldhaus
 
Is OSGi modularity always worth it?
Is OSGi modularity always worth it?Is OSGi modularity always worth it?
Is OSGi modularity always worth it?glynnormington
 
The Web on OSGi: Here's How
The Web on OSGi: Here's HowThe Web on OSGi: Here's How
The Web on OSGi: Here's Howmrdon
 
JBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP containerJBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP containerChristina Lin
 
FOSDEM19 MySQL Component Infrastructure
FOSDEM19 MySQL Component InfrastructureFOSDEM19 MySQL Component Infrastructure
FOSDEM19 MySQL Component InfrastructureGeorgi Kodinov
 

Tendances (20)

CamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF SecurityCamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF Security
 
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
 
OSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian SchneiderOSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian Schneider
 
Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013
 
RESTful Web services using JAX-RS
RESTful Web services using JAX-RSRESTful Web services using JAX-RS
RESTful Web services using JAX-RS
 
Modular Architectures using Micro Services
Modular Architectures using Micro ServicesModular Architectures using Micro Services
Modular Architectures using Micro Services
 
RESTing with JAX-RS
RESTing with JAX-RSRESTing with JAX-RS
RESTing with JAX-RS
 
WebLogic Event Server - Alexandre Alves, BEA
WebLogic Event Server - Alexandre Alves, BEAWebLogic Event Server - Alexandre Alves, BEA
WebLogic Event Server - Alexandre Alves, BEA
 
Spring Dynamic Modules for OSGi by Example - Martin Lippert, Consultant
Spring Dynamic Modules for OSGi by Example - Martin Lippert, ConsultantSpring Dynamic Modules for OSGi by Example - Martin Lippert, Consultant
Spring Dynamic Modules for OSGi by Example - Martin Lippert, Consultant
 
Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7
 
Apache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source IntegrationApache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source Integration
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
 
Batch Applications for Java Platform 1.0: Java EE 7 and GlassFish
Batch Applications for Java Platform 1.0: Java EE 7 and GlassFishBatch Applications for Java Platform 1.0: Java EE 7 and GlassFish
Batch Applications for Java Platform 1.0: Java EE 7 and GlassFish
 
RESTful web service with JBoss Fuse
RESTful web service with JBoss FuseRESTful web service with JBoss Fuse
RESTful web service with JBoss Fuse
 
ApacheCon EU 2014: Enterprise Development with Apache Karaf
ApacheCon EU 2014: Enterprise Development with Apache KarafApacheCon EU 2014: Enterprise Development with Apache Karaf
ApacheCon EU 2014: Enterprise Development with Apache Karaf
 
Cloud standards interoperability: status update on OCCI and CDMI implementations
Cloud standards interoperability: status update on OCCI and CDMI implementationsCloud standards interoperability: status update on OCCI and CDMI implementations
Cloud standards interoperability: status update on OCCI and CDMI implementations
 
Is OSGi modularity always worth it?
Is OSGi modularity always worth it?Is OSGi modularity always worth it?
Is OSGi modularity always worth it?
 
The Web on OSGi: Here's How
The Web on OSGi: Here's HowThe Web on OSGi: Here's How
The Web on OSGi: Here's How
 
JBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP containerJBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP container
 
FOSDEM19 MySQL Component Infrastructure
FOSDEM19 MySQL Component InfrastructureFOSDEM19 MySQL Component Infrastructure
FOSDEM19 MySQL Component Infrastructure
 

Similaire à OSGi patterns v1.0.11

Integration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an EsbIntegration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an EsbWen Zhu
 
Web Business Platforms on the Cloud
Web Business Platforms on the CloudWeb Business Platforms on the Cloud
Web Business Platforms on the CloudACMBangalore
 
Enterprise Integration with WSO2 ESB
Enterprise Integration with WSO2 ESBEnterprise Integration with WSO2 ESB
Enterprise Integration with WSO2 ESBWSO2
 
Integrating WebSphere Service Registry and Repository V8 with Process Server
Integrating WebSphere Service Registry and Repository V8 with Process ServerIntegrating WebSphere Service Registry and Repository V8 with Process Server
Integrating WebSphere Service Registry and Repository V8 with Process ServerGaneshNagalingam1
 
Library Web Services for Discovery and Delivery of Scientific Information
Library Web Services for Discovery and Delivery of Scientific InformationLibrary Web Services for Discovery and Delivery of Scientific Information
Library Web Services for Discovery and Delivery of Scientific InformationRichard Akerman
 
Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...
Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...
Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...Wen Zhu
 
Icws10 lecue-gorronogoitia-gonzalez-radzimski-villa-presentation
Icws10 lecue-gorronogoitia-gonzalez-radzimski-villa-presentationIcws10 lecue-gorronogoitia-gonzalez-radzimski-villa-presentation
Icws10 lecue-gorronogoitia-gonzalez-radzimski-villa-presentationFreddy Lecue
 
Keynote-Service Orientation – Why is it good for your business
Keynote-Service Orientation – Why is it good for your businessKeynote-Service Orientation – Why is it good for your business
Keynote-Service Orientation – Why is it good for your businessWSO2
 
Use of SOA and Web Services Technologies for EA Migration - Lessons Learned o...
Use of SOA and Web Services Technologies for EA Migration - Lessons Learned o...Use of SOA and Web Services Technologies for EA Migration - Lessons Learned o...
Use of SOA and Web Services Technologies for EA Migration - Lessons Learned o...Nathaniel Palmer
 
Validation of Service Oriented Computing DEVS Simulation Models
Validation of Service Oriented Computing DEVS Simulation ModelsValidation of Service Oriented Computing DEVS Simulation Models
Validation of Service Oriented Computing DEVS Simulation ModelsDaniele Gianni
 

Similaire à OSGi patterns v1.0.11 (20)

Integration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an EsbIntegration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an Esb
 
Web Business Platforms on the Cloud
Web Business Platforms on the CloudWeb Business Platforms on the Cloud
Web Business Platforms on the Cloud
 
Enterprise Integration with WSO2 ESB
Enterprise Integration with WSO2 ESBEnterprise Integration with WSO2 ESB
Enterprise Integration with WSO2 ESB
 
Soa implementation styles
Soa implementation stylesSoa implementation styles
Soa implementation styles
 
Integrating WebSphere Service Registry and Repository V8 with Process Server
Integrating WebSphere Service Registry and Repository V8 with Process ServerIntegrating WebSphere Service Registry and Repository V8 with Process Server
Integrating WebSphere Service Registry and Repository V8 with Process Server
 
Library Web Services for Discovery and Delivery of Scientific Information
Library Web Services for Discovery and Delivery of Scientific InformationLibrary Web Services for Discovery and Delivery of Scientific Information
Library Web Services for Discovery and Delivery of Scientific Information
 
Chap 1
Chap 1Chap 1
Chap 1
 
Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...
Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...
Enhancing The Role Of A Large Us Federal Agency As An Intermediary In The Fed...
 
Osbsoa1
Osbsoa1Osbsoa1
Osbsoa1
 
Icws10 lecue-gorronogoitia-gonzalez-radzimski-villa-presentation
Icws10 lecue-gorronogoitia-gonzalez-radzimski-villa-presentationIcws10 lecue-gorronogoitia-gonzalez-radzimski-villa-presentation
Icws10 lecue-gorronogoitia-gonzalez-radzimski-villa-presentation
 
Enterprise Service Bus and JBI
Enterprise Service Bus and JBIEnterprise Service Bus and JBI
Enterprise Service Bus and JBI
 
oracle-osb
oracle-osboracle-osb
oracle-osb
 
Keynote-Service Orientation – Why is it good for your business
Keynote-Service Orientation – Why is it good for your businessKeynote-Service Orientation – Why is it good for your business
Keynote-Service Orientation – Why is it good for your business
 
Use of SOA and Web Services Technologies for EA Migration - Lessons Learned o...
Use of SOA and Web Services Technologies for EA Migration - Lessons Learned o...Use of SOA and Web Services Technologies for EA Migration - Lessons Learned o...
Use of SOA and Web Services Technologies for EA Migration - Lessons Learned o...
 
Validation of Service Oriented Computing DEVS Simulation Models
Validation of Service Oriented Computing DEVS Simulation ModelsValidation of Service Oriented Computing DEVS Simulation Models
Validation of Service Oriented Computing DEVS Simulation Models
 
Soa
SoaSoa
Soa
 
Soa
SoaSoa
Soa
 
Soa
SoaSoa
Soa
 
Soa & Bpel With Web Sphere
Soa & Bpel With Web SphereSoa & Bpel With Web Sphere
Soa & Bpel With Web Sphere
 
Soa & Bpel With Web Sphere
Soa & Bpel With Web SphereSoa & Bpel With Web Sphere
Soa & Bpel With Web Sphere
 

Plus de Velossity

M2 Plateformes énergétiques
M2 Plateformes énergétiquesM2 Plateformes énergétiques
M2 Plateformes énergétiquesVelossity
 
Monde de l'énergie & informatique, la mutation industrielle
Monde de l'énergie & informatique, la mutation industrielleMonde de l'énergie & informatique, la mutation industrielle
Monde de l'énergie & informatique, la mutation industrielleVelossity
 
M2 Solutions dynamiques
M2 Solutions dynamiquesM2 Solutions dynamiques
M2 Solutions dynamiquesVelossity
 
M1 presentation OSGi
M1 presentation OSGiM1 presentation OSGi
M1 presentation OSGiVelossity
 
M2 Le monde de l'énergie, un monde dynamique
M2 Le monde de l'énergie, un monde dynamiqueM2 Le monde de l'énergie, un monde dynamique
M2 Le monde de l'énergie, un monde dynamiqueVelossity
 
Service Logging
Service LoggingService Logging
Service LoggingVelossity
 

Plus de Velossity (6)

M2 Plateformes énergétiques
M2 Plateformes énergétiquesM2 Plateformes énergétiques
M2 Plateformes énergétiques
 
Monde de l'énergie & informatique, la mutation industrielle
Monde de l'énergie & informatique, la mutation industrielleMonde de l'énergie & informatique, la mutation industrielle
Monde de l'énergie & informatique, la mutation industrielle
 
M2 Solutions dynamiques
M2 Solutions dynamiquesM2 Solutions dynamiques
M2 Solutions dynamiques
 
M1 presentation OSGi
M1 presentation OSGiM1 presentation OSGi
M1 presentation OSGi
 
M2 Le monde de l'énergie, un monde dynamique
M2 Le monde de l'énergie, un monde dynamiqueM2 Le monde de l'énergie, un monde dynamique
M2 Le monde de l'énergie, un monde dynamique
 
Service Logging
Service LoggingService Logging
Service Logging
 

Dernier

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Dernier (20)

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

OSGi patterns v1.0.11

  • 1. OSGi Patterns v. 1.0.11 OSGi, Maven, Hudson Best practises 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 2. Introduction  Velossity proposes a family of well known OSGi patterns*  Velossity is a small French company focusing on OSGi since many years  It is specialized on industrial projects for embedded platforms (Home automation, energy gateways)  This work is part of trainings called: “Embedding OSGi in your Devices, Continuous Integration with Maven” 2 * Naming and classification are our own view 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 3. Continuous Integration  OSGi pattern build chain reference is maintained at Sourceforge: svn co https://osgipatterns.svn.sourceforge.net/svnroot/osgipatterns/multi- modules/tags/patterns.aggregator-1.0.11 osgipatterns  Continuous Integration is done with Jenkins: http://velossity.zapto.org:8080/  OSGi bundles are deployed in the Maven central under the groupId “fr.velossity.osgi” 3 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 4. The basics of OSGi  Motivation The strength of OSGi is to merge OO concepts generally used for reuse in a unique manner which is the service. Lot of solutions were emerging to deal with service communication and low coupling, trying to answer to the question: “How can I connect my services?”.  Solution Provide & Request patterns exchange services, that is functions or some processing logic or business processing offered by a Service Provider and used by a Service Requester. Examples of services are monitoring, posting, logging, etc. In OSGi the service is represented by a POJI (a Plain Old Java Interface). Produce & Consume patterns exchange data, that is information created and published by a Data Producer and read by a Data Consumer. Examples of data are measures, letters, logs, etc. In OSGi a data is represented by a POJO (a Plain Old Java Object). 4 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 5. Provide & Request family Provide & Request Pattern Instantiation Instantiation Instantiation Inversion Of Control Extender Pattern Service Model Pattern White Board Pattern Factory Pattern Listener Pattern Refinement Transformation Refinement Eclipse Extension Dynamic Binding Framework Service Deployment Pattern (A. Bottaro / Fred Rivard) 5 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 6. Requester “Which service(s) do I require?” Service Model Provider “Which service(s) do I provide?”  The service is defined by a contract (the Service API)  The Provider publishes the Service Component Java Interface in the registry  The service has its own lifecycle, e.g. it can come and go Service registry  The Requester is requesting the Service API registry for the existing service, it can also be notified when the Publishes Notifies Requests service is appearing Binds Service Service  The requester binds to the provider, Provider Requester it invokes the service at the end Invoke 6 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 7. Requester “Which service(s) do I handle?” White Board Provider “Who is interested by my service(s)?”  The White Board pattern is just an inversion of control  The Requester is now publishing a Component Java Interface handler of service and the Provider is requesting it  The Provider can bind to the Service registry Requester, it invokes the handle ServiceHandler API method with the service as parameter Requests Publishes Notifies Binds Service Service Provider Requester Handle(ServiceAPI) 7 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 8. Service Deployment The Service Deployment pattern strengthens the Service Model pattern as it defines constraints on the deployment itself. It guaranties a strict separation of service interfaces and service implementations using three isolate bundles, one for the API and two for the implementations of the Requester and the Provider 8 From F. Rivard and A. Bottaro at OSGi Community Event - 2010 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 9. “How may I be extended, what are my Requester extensions points?” Extender Provider “What will I extend?”  The Extender Pattern main idea is to extend the semantics of bundles by adding custom manifest headers Component Java Interface  Extended bundles can react if bundles with these headers come and go dynamically Service registry  In our case, the Requester is viewed as an extension for the BundleListener ServiceAPI Provider Publishes Implements Service Load Service Provider Requester 9 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 10. Extensions or services  The Extender pattern is designed for extensions. The requester point of view is privileged, it is one-to-many relationship between a requester and many providers. In Eclipse this relation is private, i.e. you develop extensions for a unique extension point. This is a natural way of thinking for this platform which , incidentally, provides an extensible container supporting new views, new projects, new languages, etc.  The Service Model and White Board are designed for a truly service approach where the contract is public and is not privileging any point of view. It is potentially a many-to-many relationship between requesters and providers The Extender Pattern is very useful and natural for extension (quite natural for an extender) whereas two others are powerful for reuse of services. That is why they are complementary. 10 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 11. Produce & Consume Patterns Produce & Consume Pattern Instantiation Instantiation Instantiation Event Admin Pattern White Board Pattern Wire Admin Pattern 11 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 12. Consumer “Which type of data(s) do I subscribe?” Event Admin Producer “Which type of data(s) do I publish?”  The Event Admin Service provides a standard way for working with events in the OSGi Environment Component Java Interface using the publish/subscribe model. It was introduced in the R4 specifications  the EventAdmin is like a mediator Service registry between producers and consumers EventAdmin EventHandler of events. It is using itself the White-Board pattern to transfer Requests events to components which have Publishes Requests Publishes registered Binds Data Data  The graph of dependencies Producer EventAdminImpl Consumer between producers and consumers postEvent(Event) handleEvent(Event) is more difficult to maintain when using the Event Admin. You have to define and manage a strict policy of events 12 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 13. Consumer “Which type of data(s) do I handle?” White Board Producer “Who is interested by my data(s)?”  The whiteboard approach means that a consumer registers itself when it wants to consume. It will be Component Java Interface notified by the producers when new data are available. Producers know all their consumers, but consumers have no connection with producers. Service registry  Do not use the Listener pattern DataHandler API anymore, apply the White Board Requests Publishes pattern instead Notifies Binds Data Data Producer Consumer NewData(Data) 13 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 14. Consumer “Which type of data(s) do I consume?” Wire Admin Producer “Which type of data(s) do I produce?”  Release 3 of OSGi introduced a very flexible way to connect Component Java Interface producers and consumers to each other.  It can be viewed as “The Service registry optimal low coupling scenario … when the consumer only Producer Consumer knows what type of data it Publishes Requests Publishes wants to consume, the producer Requests knows what type of data it Data Data WireAdminImpl produces, but neither of them Producer Consumer know anything about the consumersConnected( Wire[] wires ) producersConnected( Wire[] wires ) other”*. *in the paper proposed at OOPSLA 2003 by N. Nilson, a great source of inspiration 14 for our works on Produce & Consume 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 15. A story of control  Use the White Board wherever you usually used a Listener.  Use the Event Admin when you want to distribute your producers and consumers on several platforms.  Reserve the Wire Admin usage to a single layer. Originally, the Wire Admin was designed for sensors layer, it could be a good solution to manage them on your platforms in a coherent and flexible way. Let producers choose their consumers: the White board pattern Let consumers choose their producers: the Event Admin pattern Let a third party choose for you: the Wire 15 Admin pattern 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 16. Produce & Consume Anti-Patterns Produce & Consume Anti-Pattern Instantiation Instantiation Polling Pattern Event Listener Pattern 16 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 17. Event Listener  The Event Listener is the original java way to handle producer data (pattern introduced by the gang of 4) Service registry  As demonstrated*, this pattern “is Observable Observer considered harmful” in OSGi Publishes Tracks Implements Data AddListener Data Producer Consumer NewData(Data) *Listeners Considered Harmful: The “Whiteboard” Pattern, Peter Kriens BJ Hargrave 17 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 18. Adapter [GOF]  The adapter pattern originally proposed by the gang of four can be easily realized using the OSGi principles  The main motivation is to wrap a low OSGi service to a high level one.  This pattern is very useful when working with drivers and devices: a new low- end device is adapted to an abstract device hiding field bus dependencies. Component Java Interface Two implementations proposed, one with iPOJO and the other with the native OSGi API. Service registry The native solution is an adapter of the one Adapted Adaptee originally proposed in: http://njbartlett.name/2010/08/05/when- servicetrackers-trump-ds.html Publishes Tracks Publishes Adapter Adaptee provider 18 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 19. Maven multi-modules organization | aggregator -- Run multi-modules build | parent -- Parent of all modules | distribution -- Generation of a zip containing all patterns | tests | -- integration -- Integration tests with Pax-Exam | step-3-notifications | -- ServiceModelPattern -- Service Model | -- WhiteBoardPattern -- White Board | step-1-provide-request | -- ExtenderPattern -- Extender | step-4-produce-consume | -- WhiteBoardPattern -- White Board | -- EventAdminPattern -- Event Admin | -- WireAdminPattern -- Wire Admin | adapter | -- native -- Adapter implementation using native OSGi | -- iPOJO -- Adapter implementation with iPOJO svn co https://osgipatterns.svn.sourceforge.net/svnroot/osgipatterns/multi- modules/tags/patterns.aggregator-1.0.11 osgipatterns 19 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 20. Architectural Patterns Loose Coupling Pattern Instantiation Layers Pattern 20 2012/1.0.11 C. St-Marcel - @VELOSSITY
  • 21. Functional component Bundle Service API Layers Pattern Dependency Layer 1 Layer 2 Layer 2 compendium Service 1 API Service 2 API Service m API Layer n Layer n compendium Service 1 Service 2 Service m EventAdmin LogService ConfigAdmin OSGi Services Layer OSGi services compendium Knopflerfish Felix Felix LogService EventAdmin ConfigAdmin 21 2012/1.0.11 C. St-Marcel - @VELOSSITY