SlideShare a Scribd company logo
1 of 28
Download to read offline
Why is OSGi dynamic ?
Christian Campo, compeople AG
EclipseCon Europe 2012,
Overview

               • OSGi is...
               • Lifecycle
               • Services / Extensions
               • Sample
               • Workaround
               • Others




compeople AG        | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   2
OSGi is ...

               ... a module system and service platform for
               the Java programming language that implements a
               complete and dynamic component model.

               Applications or components (coming in the form of
               bundles for deployment) can be installed, started,
               stopped, updated, and uninstalled without requiring a
               reboot.

               The service registry allows bundles to detect the
               addition of new services, or the removal of services,
               and adapt accordingly.




                                                                                         *Wikipedia 2012
compeople AG        | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012    |          3
OSGi is ...


                       Bundle                  Service                    Extension



                       started                 started                    installed
                       stopped                 stopped                    uninstalled
                       installed
                       uninstalled




compeople AG        | EclipseCon Europe 2012   | Why are OSGi dynamic ?      | 12.09.2012   |   4
OSGi Lifecycle ...


                       Bundle

                          Service

                          stopped
                          started


                          Extension

                          uninstalled
                          installed
                       uninstalled
                       stopped
                       started




compeople AG        | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   5
OSGi Service Usage ...

                                               Bundle
                                                IService

                                               started

               Bundle                                                          Bundle

                Service                                                        MyComponent



                                                   ?
                stopped
                started                                                        serviceRef



               stopped
               started                                                         started




compeople AG        | EclipseCon Europe 2012        | Why are OSGi dynamic ?        | 12.09.2012   |   6
Extensions




                                                                                                ExtPoint


                                                ?
               Bundle                                                      Bundle

                Extension                                                  MyComponent
                                                                           createExecRef
                uninstalled
                installed


               uninstalled
               stopped
               started                                                     started




compeople AG         | EclipseCon Europe 2012   | Why are OSGi dynamic ?         | 12.09.2012       |      7
Lazy activation

                                               Bundle
                                                IService

                                               started
                                               stopped

               Bundle                                                          Bundle

                Service                                                        MyComponent

                stopped                                                        serviceRef



               stopped                                                         started
                                                                               stopped


                                      Who starts this bundle so the Service can be
                                      accessed ?




compeople AG        | EclipseCon Europe 2012        | Why are OSGi dynamic ?        | 12.09.2012   |   8
Which means ...

               • A service references can become invalid anytime during
               runtime
               • Services are uncoupled from their consumer (no
               dependency)
               • Services need to be started before the lookup
               • Bundles are started lazy by default
                  ›  you cannot rely on a bundle being active




compeople AG        | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   9
Sample

                                               Bundle
                                                ISearchService

                                               started

               Bundle                                                          Bundle

                SearchService                                                  MySearch

                started                                                        search



               started                                                         started




compeople AG        | EclipseCon Europe 2012        | Why are OSGi dynamic ?   | 12.09.2012   |   10
Which means ...                                     (API approach)
      MySearch
     ref = context.getServiceReference(ISearchService.class.getName());
     if (ref!=null) {
        ISearchService search = (ISearchService)context.getService(ref);
        if (search!=null) {
           search.findByName("Bill");
           ...
           ...
               // is search still valid here ???
         }
         context.ungetService(ref);
     }




compeople AG         | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   11
Which means ....                              (ServiceTracker)
      MySearch
     ServiceTracker tracker =
                      new ServiceTracker(ctx, ISearchService.class.getName(), null);
      tracker.open();
      ISearchService search = ((ISearchService )tracker.getService());
       if (search!=null) {
           search.findByName("Bill");
           ...
           ...
               // is search still valid here ???
       }




compeople AG         | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   12
Which means ...                      (Declaritive approach)

         <component name= "MySearch">
                <implementation class="org.example.MySearch"/>
         <reference bind="setCustomerSearch"
                        cardinality="1..1"
                        interface="org.eclipse.search.ISearchService"
                        name="Search"
                        policy="dynamic"
                        unbind="unsetCustomerSearch"/>
         </component>



                  Note: The declarative approach requires that DS controls the lifecyle
                  of the target component. (MySearch).
                  If that lifecycle is out of your control, you need an API.
                  Both components should be DS to make sense.




compeople AG        | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   13
Which means ...                     (Declaritive approach)

         public class MySearch {
                  public void setCustomerSearch(ISearchService search) {
                     this.search = search;
                 }

                   public Customer[] listCustomer(String name) {
                          return search.findByName(name);
                   }

                   public Customer findCustomer(String number) {
                          return search.findByNumber(number);
                   }

                   public void unsetCustomerSearch(ISearchService search) {
                          this.search = null;
                   }
         }

compeople AG       | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   14
Which means ...                                     (e4 approach)

         public class MySearch {

                   @Inject
                   private ISearchService search;

                   public Customer[] listCustomer(String name) {
                          return search.findByName(name);
                   }

                   public Customer findCustomer(String number) {
                          return search.findByNumber(number);
                   }

         }




compeople AG       | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   15
That things can break ...

               • NPE when accessing service that are injected
                  ›  Service was not started
                  ›  Service was stopped
                  ›  No bundle in the setup implements the Service
               • Service instance exists, but Service-Bundle is stopped
               • Lazy activation does not work once a bundle is stopped
               • At startup no way to check that all dependencies are there.




compeople AG        | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   16
Are you ready ... ?

               • Is our code always ready that a reference to a service
               instance is no longer valid ?
               • In your RCP application, do you often stop and start
               bundles ?
               • Do you swap-in a new Service implementation at runtime ?


                               OR do you need that dynamic ?




compeople AG        | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   17
Eclipse IDE...

               • A typical usecase for dynamic OSGi is installation of
               bundles in the Eclipse IDE
               • Did you notice that the "Apply changes" option from
               Eclipse 3.7 is gone in 3.8 and 4.2 ?
               • Did it ever work for you ?
               • Test with Eclipse IDE
                  ›  install bundle in 3.7 and in 4.2 (no apply in 4.2)
                  ›  stop a bundle in the console and see how the Eclipse
                     IDE reacts




compeople AG        | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   18
stopped egit.ui




compeople AG       | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   19
Not everyone wants/needs dynamic ...

               • Often there is nothing reasonable to do when an injected
               service is not there.
                  ›  SearchDialog without SearchService
                  ›  SearchService without DatabaseConnectorService
                  ›  Car without BrakeService




compeople AG        | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   20
Work-arounds

               • Frameworks on top of OSGi implement their own way of
               starting bundles EAGER
               • OSGi based servers want to start everything immediately
               • Applications manually start all necessary bundles and
               service at startup and never stop them




compeople AG        | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   21
The advantage ...

               • A missing service is not "normal", don't try to handle it.
               • Detect missing components at startup and fail instantly
               • Services don't appear at some time. They are either there
               or not.
               • A Service cannot disappear while you are using it.




compeople AG        | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   22
There are exceptions...

               • Some Services need the dynamic (=flexibility)
                  ›  i.e. change ServiceImplementation if you switch from
                     online to offline
               • So document that decision and add the additional checks




compeople AG        | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   23
Which means ...                                     (API approach)


     ref = context.getServiceReference(ICustomerSearch.class.getName());
     if (ref!=null) {
        ICustomerSearch search = (ICustomerSearch)context.getService(ref);
        // if (search!=null) {
          search.findByName("Bill");
          ...
          ...
               // is search is valid here !!!
         // }
         context.ungetService(ref); // ???
     }




compeople AG         | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   24
Which means ...                                   (e4 approach)

         public class MySearch {

                   @Inject
                   private ISearchService search;

                   public Customer[] listCustomer(String name) {
                          return search.findByName(name);
                   }

                   public Customer findCustomer(String number) {
                          return search.findByNumber(number);
                   }

         }




compeople AG       | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   25
Others ...




               OSGi !=                                            !=

                                         no dynamic lifecycle per component




compeople AG        | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   26
OSGi

               •  Modules as Bundles                                                     cool

               •  Bundles /w public API & private Impl                                   cool

                                                                                         cool
               •  OSGi Service
               •  Extensions                                                             cool

               •  Lazy Activation                                                        be careful

               •  Start / Stop Services on condition                                     use with care

               •  Ability to stop Bundles at Runtime                                     avoid

               •  Ability to replace Bundles at Runtime                                  avoid




compeople AG        | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012    |           27
Q&A




compeople AG   | EclipseCon Europe 2012   | Why are OSGi dynamic ?   | 12.09.2012   |   28

More Related Content

Viewers also liked

GI2013 ppt andreopoulos+kazakis_v2 the+sustainable+future+eco+landmarks
GI2013 ppt andreopoulos+kazakis_v2 the+sustainable+future+eco+landmarksGI2013 ppt andreopoulos+kazakis_v2 the+sustainable+future+eco+landmarks
GI2013 ppt andreopoulos+kazakis_v2 the+sustainable+future+eco+landmarksIGN Vorstand
 
All your appliances are belong to us
All your appliances are belong to usAll your appliances are belong to us
All your appliances are belong to usz0mbiehunt3r
 
Chap 1 pfin
Chap 1 pfinChap 1 pfin
Chap 1 pfingeojan88
 
Gj11e ch02
Gj11e ch02Gj11e ch02
Gj11e ch02geojan88
 
Indagine sui visitatori del carnevale di putignano 2005
Indagine sui visitatori del carnevale di putignano 2005Indagine sui visitatori del carnevale di putignano 2005
Indagine sui visitatori del carnevale di putignano 2005Gianclaudio Pinto
 
Kliment oggioni ppt_gi2011_env_europe_remote_final
Kliment oggioni ppt_gi2011_env_europe_remote_finalKliment oggioni ppt_gi2011_env_europe_remote_final
Kliment oggioni ppt_gi2011_env_europe_remote_finalIGN Vorstand
 
Mini lesson plan 1
Mini lesson plan 1Mini lesson plan 1
Mini lesson plan 1dykemaem
 
Patricia talem
Patricia talemPatricia talem
Patricia talemptalem
 
GI2013 ppt decewicz_dresden2013.pdf
GI2013 ppt decewicz_dresden2013.pdfGI2013 ppt decewicz_dresden2013.pdf
GI2013 ppt decewicz_dresden2013.pdfIGN Vorstand
 
GI2012 hoffmann-oddp
GI2012 hoffmann-oddpGI2012 hoffmann-oddp
GI2012 hoffmann-oddpIGN Vorstand
 
презентация1лб
презентация1лбпрезентация1лб
презентация1лбNatalieVolodina
 
Jacob feldman’s chanukah list 2010 final
Jacob feldman’s chanukah list 2010 finalJacob feldman’s chanukah list 2010 final
Jacob feldman’s chanukah list 2010 finalJacob Feldman
 
Open Resources for Research Students and Digital Scholars
Open Resources for Research Students and Digital ScholarsOpen Resources for Research Students and Digital Scholars
Open Resources for Research Students and Digital ScholarsB de los Arcos
 
GI2013 ppt vohnout&team-enviro_grids
GI2013 ppt vohnout&team-enviro_gridsGI2013 ppt vohnout&team-enviro_grids
GI2013 ppt vohnout&team-enviro_gridsIGN Vorstand
 
GI2012 trakas standards ogc
GI2012 trakas standards ogcGI2012 trakas standards ogc
GI2012 trakas standards ogcIGN Vorstand
 
Animation rig set up
Animation rig set upAnimation rig set up
Animation rig set upharrietmedia
 
GI2011 Lach cost+benefit factors of regio_sdi
GI2011 Lach cost+benefit factors of regio_sdiGI2011 Lach cost+benefit factors of regio_sdi
GI2011 Lach cost+benefit factors of regio_sdiIGN Vorstand
 
GI2013 ppt hoffmann_review_x-gdi_sustainability
GI2013 ppt hoffmann_review_x-gdi_sustainabilityGI2013 ppt hoffmann_review_x-gdi_sustainability
GI2013 ppt hoffmann_review_x-gdi_sustainabilityIGN Vorstand
 

Viewers also liked (20)

Moda verano
Moda veranoModa verano
Moda verano
 
GI2013 ppt andreopoulos+kazakis_v2 the+sustainable+future+eco+landmarks
GI2013 ppt andreopoulos+kazakis_v2 the+sustainable+future+eco+landmarksGI2013 ppt andreopoulos+kazakis_v2 the+sustainable+future+eco+landmarks
GI2013 ppt andreopoulos+kazakis_v2 the+sustainable+future+eco+landmarks
 
All your appliances are belong to us
All your appliances are belong to usAll your appliances are belong to us
All your appliances are belong to us
 
Chap 1 pfin
Chap 1 pfinChap 1 pfin
Chap 1 pfin
 
Gj11e ch02
Gj11e ch02Gj11e ch02
Gj11e ch02
 
Indagine sui visitatori del carnevale di putignano 2005
Indagine sui visitatori del carnevale di putignano 2005Indagine sui visitatori del carnevale di putignano 2005
Indagine sui visitatori del carnevale di putignano 2005
 
Kliment oggioni ppt_gi2011_env_europe_remote_final
Kliment oggioni ppt_gi2011_env_europe_remote_finalKliment oggioni ppt_gi2011_env_europe_remote_final
Kliment oggioni ppt_gi2011_env_europe_remote_final
 
Mini lesson plan 1
Mini lesson plan 1Mini lesson plan 1
Mini lesson plan 1
 
Patricia talem
Patricia talemPatricia talem
Patricia talem
 
GI2013 ppt decewicz_dresden2013.pdf
GI2013 ppt decewicz_dresden2013.pdfGI2013 ppt decewicz_dresden2013.pdf
GI2013 ppt decewicz_dresden2013.pdf
 
GI2012 hoffmann-oddp
GI2012 hoffmann-oddpGI2012 hoffmann-oddp
GI2012 hoffmann-oddp
 
Presentation - Recreating Treasures
Presentation - Recreating TreasuresPresentation - Recreating Treasures
Presentation - Recreating Treasures
 
презентация1лб
презентация1лбпрезентация1лб
презентация1лб
 
Jacob feldman’s chanukah list 2010 final
Jacob feldman’s chanukah list 2010 finalJacob feldman’s chanukah list 2010 final
Jacob feldman’s chanukah list 2010 final
 
Open Resources for Research Students and Digital Scholars
Open Resources for Research Students and Digital ScholarsOpen Resources for Research Students and Digital Scholars
Open Resources for Research Students and Digital Scholars
 
GI2013 ppt vohnout&team-enviro_grids
GI2013 ppt vohnout&team-enviro_gridsGI2013 ppt vohnout&team-enviro_grids
GI2013 ppt vohnout&team-enviro_grids
 
GI2012 trakas standards ogc
GI2012 trakas standards ogcGI2012 trakas standards ogc
GI2012 trakas standards ogc
 
Animation rig set up
Animation rig set upAnimation rig set up
Animation rig set up
 
GI2011 Lach cost+benefit factors of regio_sdi
GI2011 Lach cost+benefit factors of regio_sdiGI2011 Lach cost+benefit factors of regio_sdi
GI2011 Lach cost+benefit factors of regio_sdi
 
GI2013 ppt hoffmann_review_x-gdi_sustainability
GI2013 ppt hoffmann_review_x-gdi_sustainabilityGI2013 ppt hoffmann_review_x-gdi_sustainability
GI2013 ppt hoffmann_review_x-gdi_sustainability
 

Similar to Why is os gi dynamic.pptx

Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012
Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012
Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012mfrancis
 
The OSGi Framework Multiplication
The OSGi Framework MultiplicationThe OSGi Framework Multiplication
The OSGi Framework MultiplicationClément Escoffier
 
Eclipse Con2009 Practical Process Orchestration
Eclipse Con2009 Practical Process OrchestrationEclipse Con2009 Practical Process Orchestration
Eclipse Con2009 Practical Process OrchestrationDietmar Schmidt
 
Osgi Devconeu 2009 Welcome Christer Larsson
Osgi Devconeu 2009 Welcome Christer LarssonOsgi Devconeu 2009 Welcome Christer Larsson
Osgi Devconeu 2009 Welcome Christer LarssonChrister Larsson
 
Nuxeo World Session: Nuxeo & OSGi
Nuxeo World Session: Nuxeo & OSGiNuxeo World Session: Nuxeo & OSGi
Nuxeo World Session: Nuxeo & OSGiNuxeo
 
What is os gi and what does osgi
What is os gi and what does osgiWhat is os gi and what does osgi
What is os gi and what does osgiYunChang Lee
 
Equinox -The adoption of the OSGi standard in enterprise solutions
Equinox -The adoption of the OSGi standard in enterprise solutions Equinox -The adoption of the OSGi standard in enterprise solutions
Equinox -The adoption of the OSGi standard in enterprise solutions SpagoWorld
 
OSGi DevCon 2009 Review
OSGi DevCon 2009 ReviewOSGi DevCon 2009 Review
OSGi DevCon 2009 Reviewnjbartlett
 
Best Practices for (Enterprise) OSGi applications - Tim Ward
Best Practices for (Enterprise) OSGi applications - Tim WardBest Practices for (Enterprise) OSGi applications - Tim Ward
Best Practices for (Enterprise) OSGi applications - Tim Wardmfrancis
 
Bpel And OSGi
Bpel And OSGi Bpel And OSGi
Bpel And OSGi zoppello
 
Bpel And Osgi
Bpel And OsgiBpel And Osgi
Bpel And Osgizoppello
 
Bpel And OSGi
Bpel And OSGi Bpel And OSGi
Bpel And OSGi zoppello
 
Modular Java EE in the Cloud
Modular Java EE in the CloudModular Java EE in the Cloud
Modular Java EE in the CloudBert Ertman
 
BPEL & OSGi at EclipseCon 2010
BPEL & OSGi at EclipseCon 2010BPEL & OSGi at EclipseCon 2010
BPEL & OSGi at EclipseCon 2010SpagoWorld
 
Liferay Module Framework
Liferay Module FrameworkLiferay Module Framework
Liferay Module FrameworkMiguel Pastor
 
Smila ESE 2008
Smila ESE 2008Smila ESE 2008
Smila ESE 2008novakovic
 
SMILA - The Integration Framework
SMILA - The Integration FrameworkSMILA - The Integration Framework
SMILA - The Integration Frameworknovakovic
 

Similar to Why is os gi dynamic.pptx (20)

Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012
Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012
Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012
 
The OSGi Framework Multiplication
The OSGi Framework MultiplicationThe OSGi Framework Multiplication
The OSGi Framework Multiplication
 
Eclipse Con2009 Practical Process Orchestration
Eclipse Con2009 Practical Process OrchestrationEclipse Con2009 Practical Process Orchestration
Eclipse Con2009 Practical Process Orchestration
 
Osgi Devconeu 2009 Welcome Christer Larsson
Osgi Devconeu 2009 Welcome Christer LarssonOsgi Devconeu 2009 Welcome Christer Larsson
Osgi Devconeu 2009 Welcome Christer Larsson
 
OSGi Mars World in Action
OSGi Mars World in ActionOSGi Mars World in Action
OSGi Mars World in Action
 
Nuxeo World Session: Nuxeo & OSGi
Nuxeo World Session: Nuxeo & OSGiNuxeo World Session: Nuxeo & OSGi
Nuxeo World Session: Nuxeo & OSGi
 
What is os gi and what does osgi
What is os gi and what does osgiWhat is os gi and what does osgi
What is os gi and what does osgi
 
Equinox -The adoption of the OSGi standard in enterprise solutions
Equinox -The adoption of the OSGi standard in enterprise solutions Equinox -The adoption of the OSGi standard in enterprise solutions
Equinox -The adoption of the OSGi standard in enterprise solutions
 
OSGi tech session
OSGi tech sessionOSGi tech session
OSGi tech session
 
OSGi DevCon 2009 Review
OSGi DevCon 2009 ReviewOSGi DevCon 2009 Review
OSGi DevCon 2009 Review
 
Best Practices for (Enterprise) OSGi applications - Tim Ward
Best Practices for (Enterprise) OSGi applications - Tim WardBest Practices for (Enterprise) OSGi applications - Tim Ward
Best Practices for (Enterprise) OSGi applications - Tim Ward
 
Bpel And OSGi
Bpel And OSGi Bpel And OSGi
Bpel And OSGi
 
Bpel And Osgi
Bpel And OsgiBpel And Osgi
Bpel And Osgi
 
Bpel And OSGi
Bpel And OSGi Bpel And OSGi
Bpel And OSGi
 
Modular Java EE in the Cloud
Modular Java EE in the CloudModular Java EE in the Cloud
Modular Java EE in the Cloud
 
BPEL & OSGi at EclipseCon 2010
BPEL & OSGi at EclipseCon 2010BPEL & OSGi at EclipseCon 2010
BPEL & OSGi at EclipseCon 2010
 
Liferay Module Framework
Liferay Module FrameworkLiferay Module Framework
Liferay Module Framework
 
Smila ESE 2008
Smila ESE 2008Smila ESE 2008
Smila ESE 2008
 
SMILA - The Integration Framework
SMILA - The Integration FrameworkSMILA - The Integration Framework
SMILA - The Integration Framework
 
FraSCAti with OSGi
FraSCAti with OSGiFraSCAti with OSGi
FraSCAti with OSGi
 

More from christiancampo

What makes an application a good Application (Eclipse Finance Day 2012 Zürich)
What makes an application a good Application (Eclipse Finance Day 2012 Zürich)What makes an application a good Application (Eclipse Finance Day 2012 Zürich)
What makes an application a good Application (Eclipse Finance Day 2012 Zürich)christiancampo
 

More from christiancampo (7)

What makes an application a good Application (Eclipse Finance Day 2012 Zürich)
What makes an application a good Application (Eclipse Finance Day 2012 Zürich)What makes an application a good Application (Eclipse Finance Day 2012 Zürich)
What makes an application a good Application (Eclipse Finance Day 2012 Zürich)
 
Riena onrap econ-2011
Riena onrap econ-2011Riena onrap econ-2011
Riena onrap econ-2011
 
Swt qt econ-2010
Swt qt econ-2010Swt qt econ-2010
Swt qt econ-2010
 
Swt qt ese-2009
Swt qt ese-2009Swt qt ese-2009
Swt qt ese-2009
 
Riena on-e4-ese2010
Riena on-e4-ese2010Riena on-e4-ese2010
Riena on-e4-ese2010
 
Riena on-rap-ese2010
Riena on-rap-ese2010Riena on-rap-ese2010
Riena on-rap-ese2010
 
Swt qt ese2010
Swt qt ese2010Swt qt ese2010
Swt qt ese2010
 

Recently uploaded

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
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
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
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
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
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
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
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 

Recently uploaded (20)

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
 
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?
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
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...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
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
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 

Why is os gi dynamic.pptx

  • 1. Why is OSGi dynamic ? Christian Campo, compeople AG EclipseCon Europe 2012,
  • 2. Overview • OSGi is... • Lifecycle • Services / Extensions • Sample • Workaround • Others compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 2
  • 3. OSGi is ... ... a module system and service platform for the Java programming language that implements a complete and dynamic component model. Applications or components (coming in the form of bundles for deployment) can be installed, started, stopped, updated, and uninstalled without requiring a reboot. The service registry allows bundles to detect the addition of new services, or the removal of services, and adapt accordingly. *Wikipedia 2012 compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 3
  • 4. OSGi is ... Bundle Service Extension started started installed stopped stopped uninstalled installed uninstalled compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 4
  • 5. OSGi Lifecycle ... Bundle Service stopped started Extension uninstalled installed uninstalled stopped started compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 5
  • 6. OSGi Service Usage ... Bundle IService started Bundle Bundle Service MyComponent ? stopped started serviceRef stopped started started compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 6
  • 7. Extensions ExtPoint ? Bundle Bundle Extension MyComponent createExecRef uninstalled installed uninstalled stopped started started compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 7
  • 8. Lazy activation Bundle IService started stopped Bundle Bundle Service MyComponent stopped serviceRef stopped started stopped Who starts this bundle so the Service can be accessed ? compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 8
  • 9. Which means ... • A service references can become invalid anytime during runtime • Services are uncoupled from their consumer (no dependency) • Services need to be started before the lookup • Bundles are started lazy by default ›  you cannot rely on a bundle being active compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 9
  • 10. Sample Bundle ISearchService started Bundle Bundle SearchService MySearch started search started started compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 10
  • 11. Which means ... (API approach) MySearch ref = context.getServiceReference(ISearchService.class.getName()); if (ref!=null) { ISearchService search = (ISearchService)context.getService(ref); if (search!=null) { search.findByName("Bill"); ... ... // is search still valid here ??? } context.ungetService(ref); } compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 11
  • 12. Which means .... (ServiceTracker) MySearch ServiceTracker tracker = new ServiceTracker(ctx, ISearchService.class.getName(), null); tracker.open(); ISearchService search = ((ISearchService )tracker.getService()); if (search!=null) { search.findByName("Bill"); ... ... // is search still valid here ??? } compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 12
  • 13. Which means ... (Declaritive approach) <component name= "MySearch"> <implementation class="org.example.MySearch"/> <reference bind="setCustomerSearch" cardinality="1..1" interface="org.eclipse.search.ISearchService" name="Search" policy="dynamic" unbind="unsetCustomerSearch"/> </component> Note: The declarative approach requires that DS controls the lifecyle of the target component. (MySearch). If that lifecycle is out of your control, you need an API. Both components should be DS to make sense. compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 13
  • 14. Which means ... (Declaritive approach) public class MySearch { public void setCustomerSearch(ISearchService search) { this.search = search; } public Customer[] listCustomer(String name) { return search.findByName(name); } public Customer findCustomer(String number) { return search.findByNumber(number); } public void unsetCustomerSearch(ISearchService search) { this.search = null; } } compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 14
  • 15. Which means ... (e4 approach) public class MySearch { @Inject private ISearchService search; public Customer[] listCustomer(String name) { return search.findByName(name); } public Customer findCustomer(String number) { return search.findByNumber(number); } } compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 15
  • 16. That things can break ... • NPE when accessing service that are injected ›  Service was not started ›  Service was stopped ›  No bundle in the setup implements the Service • Service instance exists, but Service-Bundle is stopped • Lazy activation does not work once a bundle is stopped • At startup no way to check that all dependencies are there. compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 16
  • 17. Are you ready ... ? • Is our code always ready that a reference to a service instance is no longer valid ? • In your RCP application, do you often stop and start bundles ? • Do you swap-in a new Service implementation at runtime ? OR do you need that dynamic ? compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 17
  • 18. Eclipse IDE... • A typical usecase for dynamic OSGi is installation of bundles in the Eclipse IDE • Did you notice that the "Apply changes" option from Eclipse 3.7 is gone in 3.8 and 4.2 ? • Did it ever work for you ? • Test with Eclipse IDE ›  install bundle in 3.7 and in 4.2 (no apply in 4.2) ›  stop a bundle in the console and see how the Eclipse IDE reacts compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 18
  • 19. stopped egit.ui compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 19
  • 20. Not everyone wants/needs dynamic ... • Often there is nothing reasonable to do when an injected service is not there. ›  SearchDialog without SearchService ›  SearchService without DatabaseConnectorService ›  Car without BrakeService compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 20
  • 21. Work-arounds • Frameworks on top of OSGi implement their own way of starting bundles EAGER • OSGi based servers want to start everything immediately • Applications manually start all necessary bundles and service at startup and never stop them compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 21
  • 22. The advantage ... • A missing service is not "normal", don't try to handle it. • Detect missing components at startup and fail instantly • Services don't appear at some time. They are either there or not. • A Service cannot disappear while you are using it. compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 22
  • 23. There are exceptions... • Some Services need the dynamic (=flexibility) ›  i.e. change ServiceImplementation if you switch from online to offline • So document that decision and add the additional checks compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 23
  • 24. Which means ... (API approach) ref = context.getServiceReference(ICustomerSearch.class.getName()); if (ref!=null) { ICustomerSearch search = (ICustomerSearch)context.getService(ref); // if (search!=null) { search.findByName("Bill"); ... ... // is search is valid here !!! // } context.ungetService(ref); // ??? } compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 24
  • 25. Which means ... (e4 approach) public class MySearch { @Inject private ISearchService search; public Customer[] listCustomer(String name) { return search.findByName(name); } public Customer findCustomer(String number) { return search.findByNumber(number); } } compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 25
  • 26. Others ... OSGi != != no dynamic lifecycle per component compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 26
  • 27. OSGi •  Modules as Bundles cool •  Bundles /w public API & private Impl cool cool •  OSGi Service •  Extensions cool •  Lazy Activation be careful •  Start / Stop Services on condition use with care •  Ability to stop Bundles at Runtime avoid •  Ability to replace Bundles at Runtime avoid compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 27
  • 28. Q&A compeople AG | EclipseCon Europe 2012 | Why are OSGi dynamic ? | 12.09.2012 | 28