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

Recently uploaded (20)

UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Buy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptxBuy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptx
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
 
Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
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
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 

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