SlideShare a Scribd company logo
Rogue Bundles: Go to Jail

  Isolating bundles in OSGI 4.3 / eclipse
  equinox 3.7



                 Eclipseconeurope2011       1
Who we are
• Tobias Jenkner, edmPRO

• Matthias Pickel, Piterion GmbH

• Eclipse RCP Integration project at Daimler AG




                    Eclipseconeurope2011          2
Integrating existing osgi bundles

        …
     Plugin A1                 … Plugin B1                 …           …
       Plugin A2                   …Plugin B2
                           …
                                      Plugin B3
                                              …
       …
                      …
                         Integration
                           … …
                                   …         …
                                                           …       …
                                                                       …

 Plugin C Version 1.1.1 Sideeffects ?
                             …      …
                               …
                                                       …
                      …
  Plugin C Version 2.0.1                 …                             …

               …                             …
                                                               …
                           …
                               Eclipse Application



                                Eclipseconeurope2011                       3
Demo




       Eclipseconeurope2011   4
Integrating existing osgi bundles
    defaulthttpparams.a                             defaulthttpparams.b

    Provide:                                        Provide:
    DefaultHttpConn                                 DefaultHttpConn
    ectionFactory                                   ectionFactory
                                       ?
                             Conflicting
                            Requirements
        httpclient.a              &                     httpclient.b

    Require:                 capabilities           Require:
    http-connection-                                http-connection-
    timeout = 100                                   timeout = 5000

                     Integrated Eclipse Application A & B Application B
    Eclipse Application A                            Eclipse

                             Eclipseconeurope2011                         5
Conflicting capabilities             Conflicting requirements
 • Multiple instances of OSGI         • Different implementations
   services                             of an OSGI service
 • Multiple instances of              • Multiple instances of static
   Singleton-Bundles                    variables (e.g. for
 • Multiple exports of a                containing different
   package                              configuration data)

                                      • Incomplete versioning
                                        metadata


→ Write once ….         break in integration scenario ?
                          Eclipseconeurope2011                         6
Solutions ?
• Change the existing osgi bundles
  – Not always possible (source code not available)
  – Cost, time, ….


• Rogue bundles: Go to Jail!
  – Create isolated regions (jailcells) in our OSGI 4.3
    runtime



                        Eclipseconeurope2011              7
OSGI Runtime isolation
   defaulthttpparams.a                                 defaulthttpparams.b
   Provide:                                            Provide:
   DefaultHttpConn                                     DefaultHttpConn
   ectionFactory                                       ectionFactory

       httpclient.a                                        httpclient.b
   Require:                                            Require:
   http-connection-                                    http-connection-
   timeout = 100                                       timeout = 5000



                              Eclipse Framework
                               core components
                      Integrated Eclipse Application A & B

                                Eclipseconeurope2011                         8
Demo




       Eclipseconeurope2011   9
OSGI 4.3 Framework Hooks




            Eclipseconeurope2011   10
ResolverHook


        Create a new
        ResolverHook instance for
        every resolve process



          Decide if more than one
          instance of a singleton
          bundle may be installed




           Decide how bundles may
           be wired.



                     Eclipseconeurope2011   11
ResolverHook
    org.osgi.framework.hooks.resolver.ResolverHook


•     void filterSingletonCollisions(
         BundleCapability singleton, Collection<BundleCapability>
         collisionCandidates):
      Allow one instance of singleton-bundles to be installed in every Bundle-Jail-
      Cell.

•     void filterMatches(
         BundleRequirement requirement, Collection<BundleCapability>
         candidates):
      Do not allow to wire bundles between different Bundle-Jail-Cells.

•     void filterResolvable(Collection<BundleRevision> candidates);:
      not important for bundle jails

•     void end():
      lifecycle method not important for bundle jails



                                                  Eclipseconeurope2011                12
Find & Event Hooks
• BundleContext.getService… -> Service FindHook

• BundleContext.getBundles(…)-> Bundle FindHook

• ServiceEvents -> Service EventListenerHook

• BundleEvents -> Bundle EventHook




                     Eclipseconeurope2011         13
BundleJail implementation
Implementation of the Hook-Interfaces

                                                       Plugin A1                                          Plugin B1

How do the Hook                                        Provide X                                          Provide X



interfaces know which                                  Plugin A2
                                                       Require X
                                                                                                          Plugin B2
                                                                                                          Require X

bundle-jail-cell a bundle
belongs to?                                                                Eclipse Framework
                                                                            core components

                                                                   Integrated Eclipse Application A & B




→ Use the query part of the bundle install URL
→ Allows a bundle to be installed multiple times from the same location into
  different jail-cells
→ The install URL is available in the hooks

                                Eclipseconeurope2011                                                                  14
Open questions
P2 integration: Install bundles into jails

• Specify query part of the URL in Config.ini /
  bundles.info

• P2 installation: Specify BundleJailCell / region
  in P2-Metadata ?




                         Eclipseconeurope2011        15
Open questions
• Eclipse extension registry: mulitple singletons
  -> multiple instances of the same extensions?
  – Could be implemented with equinox transforms
    xslt
• Install location is shared between regions
• No PDE tooling support for custom URLs
• …


                    Eclipseconeurope2011            16
Look around: Equinox Regions
• Isolation Hooks implementations from the
  equinox team.
• Originally developed for eclipse virgo
• Directed Graph of bundle regions




                   Eclipseconeurope2011      17
Look around
• Google chrome: Separate process for every
  tab

-> Isolation through separate JVM instances ?
-> JSR 121: JVM Isolation API
  -> Not yet implemented in Oracle JVM



                   Eclipseconeurope2011         18
Thank you !
• Questions ?



• Democode: https://github.com/tobias-
  jenkner/org.eclipse.ece2011.roguebundles




                  Eclipseconeurope2011       19

More Related Content

What's hot

Jax london 2011
Jax london 2011Jax london 2011
Jax london 2011
njbartlett
 
Apache Aries: A blueprint for developing with OSGi and JEE
Apache Aries: A blueprint for developing with OSGi and JEEApache Aries: A blueprint for developing with OSGi and JEE
Apache Aries: A blueprint for developing with OSGi and JEE
mahrwald
 
Hs P005 Reflective Dll Injection
Hs P005 Reflective Dll InjectionHs P005 Reflective Dll Injection
Hs P005 Reflective Dll Injection
KarlFrank99
 
Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpike
os890
 
Eclipse Code Recommenders @ MAJUG 2011
Eclipse Code Recommenders @ MAJUG 2011Eclipse Code Recommenders @ MAJUG 2011
Eclipse Code Recommenders @ MAJUG 2011
Marcel Bruch
 
Zero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with NettyZero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with Netty
Daniel Bimschas
 

What's hot (20)

OSGi in 5 minutes
OSGi in 5 minutesOSGi in 5 minutes
OSGi in 5 minutes
 
Jax london 2011
Jax london 2011Jax london 2011
Jax london 2011
 
Ekon 25 Python4Delphi_MX475
Ekon 25 Python4Delphi_MX475Ekon 25 Python4Delphi_MX475
Ekon 25 Python4Delphi_MX475
 
EKON 25 Python4Delphi_mX4
EKON 25 Python4Delphi_mX4EKON 25 Python4Delphi_mX4
EKON 25 Python4Delphi_mX4
 
Java 9 Modules: The Duke Yet Lives That OSGi Shall Depose
Java 9 Modules: The Duke Yet Lives That OSGi Shall DeposeJava 9 Modules: The Duke Yet Lives That OSGi Shall Depose
Java 9 Modules: The Duke Yet Lives That OSGi Shall Depose
 
Intro To OSGi
Intro To OSGiIntro To OSGi
Intro To OSGi
 
Apache Aries: A blueprint for developing with OSGi and JEE
Apache Aries: A blueprint for developing with OSGi and JEEApache Aries: A blueprint for developing with OSGi and JEE
Apache Aries: A blueprint for developing with OSGi and JEE
 
What's Expected in Java 7
What's Expected in Java 7What's Expected in Java 7
What's Expected in Java 7
 
Hs P005 Reflective Dll Injection
Hs P005 Reflective Dll InjectionHs P005 Reflective Dll Injection
Hs P005 Reflective Dll Injection
 
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
 
Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpike
 
OpenWebBeans and DeltaSpike at ApacheCon
OpenWebBeans and DeltaSpike at ApacheConOpenWebBeans and DeltaSpike at ApacheCon
OpenWebBeans and DeltaSpike at ApacheCon
 
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
 
OSGi overview
OSGi overviewOSGi overview
OSGi overview
 
Apache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolboxApache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolbox
 
Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)
 
DWX 2013 Nuremberg
DWX 2013 NurembergDWX 2013 Nuremberg
DWX 2013 Nuremberg
 
Eclipse Code Recommenders @ MAJUG 2011
Eclipse Code Recommenders @ MAJUG 2011Eclipse Code Recommenders @ MAJUG 2011
Eclipse Code Recommenders @ MAJUG 2011
 
Zero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with NettyZero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with Netty
 
C# tutorial
C# tutorialC# tutorial
C# tutorial
 

Viewers also liked (7)

Alameda County 2011-12 Proposed Budget Overview
Alameda County 2011-12 Proposed Budget OverviewAlameda County 2011-12 Proposed Budget Overview
Alameda County 2011-12 Proposed Budget Overview
 
Alameda County Budget Workgroup Forum (February 2011)
Alameda County Budget Workgroup Forum (February 2011)Alameda County Budget Workgroup Forum (February 2011)
Alameda County Budget Workgroup Forum (February 2011)
 
F inc 34_bugaboo
F inc 34_bugabooF inc 34_bugaboo
F inc 34_bugaboo
 
Alameda County Budget Workgroup May 16, 2011
Alameda County Budget Workgroup May 16, 2011Alameda County Budget Workgroup May 16, 2011
Alameda County Budget Workgroup May 16, 2011
 
Ingles Cei Campana 2011
Ingles Cei Campana 2011Ingles Cei Campana 2011
Ingles Cei Campana 2011
 
Runtime surgery
Runtime surgeryRuntime surgery
Runtime surgery
 
Everything you need to know about pay per click advertising but were afraid t...
Everything you need to know about pay per click advertising but were afraid t...Everything you need to know about pay per click advertising but were afraid t...
Everything you need to know about pay per click advertising but were afraid t...
 

Similar to Rogue bundles

Enterprise OSGi at eBay
Enterprise OSGi at eBayEnterprise OSGi at eBay
Enterprise OSGi at eBay
Tony Ng
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware
 
Experiences from porting a commercial RCP application to Eclipse 4.x
Experiences from porting a commercial RCP application to Eclipse 4.xExperiences from porting a commercial RCP application to Eclipse 4.x
Experiences from porting a commercial RCP application to Eclipse 4.x
Fredrik Attebrant
 

Similar to Rogue bundles (20)

Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!
 
Enterprise OSGi at eBay
Enterprise OSGi at eBayEnterprise OSGi at eBay
Enterprise OSGi at eBay
 
Comparing Popular Eclipse Development Projects
Comparing Popular Eclipse Development ProjectsComparing Popular Eclipse Development Projects
Comparing Popular Eclipse Development Projects
 
Eclipse IDE, 2019.09, Java Development
Eclipse IDE, 2019.09, Java Development Eclipse IDE, 2019.09, Java Development
Eclipse IDE, 2019.09, Java Development
 
Dockerize it: stop living in the past and embrace the future by Alex Nadalin
 Dockerize it: stop living in the past and embrace the future by Alex Nadalin Dockerize it: stop living in the past and embrace the future by Alex Nadalin
Dockerize it: stop living in the past and embrace the future by Alex Nadalin
 
Dockerize it! @ Codemotion 2016 in Rome
Dockerize it! @ Codemotion 2016 in RomeDockerize it! @ Codemotion 2016 in Rome
Dockerize it! @ Codemotion 2016 in Rome
 
Dockerize it: stop living in the past and embrace the future
Dockerize it: stop living in the past and embrace the futureDockerize it: stop living in the past and embrace the future
Dockerize it: stop living in the past and embrace the future
 
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allEclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
 
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plansOpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
 
Mcollective introduction
Mcollective introductionMcollective introduction
Mcollective introduction
 
Kubernetes 101 - A Cluster Operating System
Kubernetes 101 - A Cluster Operating SystemKubernetes 101 - A Cluster Operating System
Kubernetes 101 - A Cluster Operating System
 
Experiences from porting a commercial RCP application to Eclipse 4.x
Experiences from porting a commercial RCP application to Eclipse 4.xExperiences from porting a commercial RCP application to Eclipse 4.x
Experiences from porting a commercial RCP application to Eclipse 4.x
 
Nice performance using Sf2 cache wrapping Sf1 application
Nice performance using Sf2 cache wrapping Sf1 applicationNice performance using Sf2 cache wrapping Sf1 application
Nice performance using Sf2 cache wrapping Sf1 application
 
Acceleo Code Generation
Acceleo Code GenerationAcceleo Code Generation
Acceleo Code Generation
 
zenject extenject-intro
zenject extenject-introzenject extenject-intro
zenject extenject-intro
 
Import golang; struct microservice
Import golang; struct microserviceImport golang; struct microservice
Import golang; struct microservice
 
Eclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsEclipse 2011 Hot Topics
Eclipse 2011 Hot Topics
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
 
OSGi & Java EE in GlassFish - Best of both worlds
OSGi & Java EE in GlassFish - Best of both worldsOSGi & Java EE in GlassFish - Best of both worlds
OSGi & Java EE in GlassFish - Best of both worlds
 

Recently uploaded

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 

Recently uploaded (20)

AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
The architecture of Generative AI for enterprises.pdf
The architecture of Generative AI for enterprises.pdfThe architecture of Generative AI for enterprises.pdf
The architecture of Generative AI for enterprises.pdf
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
Enterprise Security Monitoring, And Log Management.
Enterprise Security Monitoring, And Log Management.Enterprise Security Monitoring, And Log Management.
Enterprise Security Monitoring, And Log Management.
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Transforming The New York Times: Empowering Evolution through UX
Transforming The New York Times: Empowering Evolution through UXTransforming The New York Times: Empowering Evolution through UX
Transforming The New York Times: Empowering Evolution through UX
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
Server-Driven User Interface (SDUI) at Priceline
Server-Driven User Interface (SDUI) at PricelineServer-Driven User Interface (SDUI) at Priceline
Server-Driven User Interface (SDUI) at Priceline
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 

Rogue bundles

  • 1. Rogue Bundles: Go to Jail Isolating bundles in OSGI 4.3 / eclipse equinox 3.7 Eclipseconeurope2011 1
  • 2. Who we are • Tobias Jenkner, edmPRO • Matthias Pickel, Piterion GmbH • Eclipse RCP Integration project at Daimler AG Eclipseconeurope2011 2
  • 3. Integrating existing osgi bundles … Plugin A1 … Plugin B1 … … Plugin A2 …Plugin B2 … Plugin B3 … … … Integration … … … … … … … Plugin C Version 1.1.1 Sideeffects ? … … … … … Plugin C Version 2.0.1 … … … … … … Eclipse Application Eclipseconeurope2011 3
  • 4. Demo Eclipseconeurope2011 4
  • 5. Integrating existing osgi bundles defaulthttpparams.a defaulthttpparams.b Provide: Provide: DefaultHttpConn DefaultHttpConn ectionFactory ectionFactory ? Conflicting Requirements httpclient.a & httpclient.b Require: capabilities Require: http-connection- http-connection- timeout = 100 timeout = 5000 Integrated Eclipse Application A & B Application B Eclipse Application A Eclipse Eclipseconeurope2011 5
  • 6. Conflicting capabilities Conflicting requirements • Multiple instances of OSGI • Different implementations services of an OSGI service • Multiple instances of • Multiple instances of static Singleton-Bundles variables (e.g. for • Multiple exports of a containing different package configuration data) • Incomplete versioning metadata → Write once …. break in integration scenario ? Eclipseconeurope2011 6
  • 7. Solutions ? • Change the existing osgi bundles – Not always possible (source code not available) – Cost, time, …. • Rogue bundles: Go to Jail! – Create isolated regions (jailcells) in our OSGI 4.3 runtime Eclipseconeurope2011 7
  • 8. OSGI Runtime isolation defaulthttpparams.a defaulthttpparams.b Provide: Provide: DefaultHttpConn DefaultHttpConn ectionFactory ectionFactory httpclient.a httpclient.b Require: Require: http-connection- http-connection- timeout = 100 timeout = 5000 Eclipse Framework core components Integrated Eclipse Application A & B Eclipseconeurope2011 8
  • 9. Demo Eclipseconeurope2011 9
  • 10. OSGI 4.3 Framework Hooks Eclipseconeurope2011 10
  • 11. ResolverHook Create a new ResolverHook instance for every resolve process Decide if more than one instance of a singleton bundle may be installed Decide how bundles may be wired. Eclipseconeurope2011 11
  • 12. ResolverHook org.osgi.framework.hooks.resolver.ResolverHook • void filterSingletonCollisions( BundleCapability singleton, Collection<BundleCapability> collisionCandidates): Allow one instance of singleton-bundles to be installed in every Bundle-Jail- Cell. • void filterMatches( BundleRequirement requirement, Collection<BundleCapability> candidates): Do not allow to wire bundles between different Bundle-Jail-Cells. • void filterResolvable(Collection<BundleRevision> candidates);: not important for bundle jails • void end(): lifecycle method not important for bundle jails Eclipseconeurope2011 12
  • 13. Find & Event Hooks • BundleContext.getService… -> Service FindHook • BundleContext.getBundles(…)-> Bundle FindHook • ServiceEvents -> Service EventListenerHook • BundleEvents -> Bundle EventHook Eclipseconeurope2011 13
  • 14. BundleJail implementation Implementation of the Hook-Interfaces Plugin A1 Plugin B1 How do the Hook Provide X Provide X interfaces know which Plugin A2 Require X Plugin B2 Require X bundle-jail-cell a bundle belongs to? Eclipse Framework core components Integrated Eclipse Application A & B → Use the query part of the bundle install URL → Allows a bundle to be installed multiple times from the same location into different jail-cells → The install URL is available in the hooks Eclipseconeurope2011 14
  • 15. Open questions P2 integration: Install bundles into jails • Specify query part of the URL in Config.ini / bundles.info • P2 installation: Specify BundleJailCell / region in P2-Metadata ? Eclipseconeurope2011 15
  • 16. Open questions • Eclipse extension registry: mulitple singletons -> multiple instances of the same extensions? – Could be implemented with equinox transforms xslt • Install location is shared between regions • No PDE tooling support for custom URLs • … Eclipseconeurope2011 16
  • 17. Look around: Equinox Regions • Isolation Hooks implementations from the equinox team. • Originally developed for eclipse virgo • Directed Graph of bundle regions Eclipseconeurope2011 17
  • 18. Look around • Google chrome: Separate process for every tab -> Isolation through separate JVM instances ? -> JSR 121: JVM Isolation API -> Not yet implemented in Oracle JVM Eclipseconeurope2011 18
  • 19. Thank you ! • Questions ? • Democode: https://github.com/tobias- jenkner/org.eclipse.ece2011.roguebundles Eclipseconeurope2011 19