1 / 35

Introduce OSGi

Introduce OSGi. BlueDavy http://www.osgi.org.cn http://blog.bluedavy.cn. 1.0 2007-10-28. Agenda. Play OSGi Who use OSGi What is OSGi OSGi R4 Implemention How to develop OSGi app OSGi Resources. Play OSGi. Let’s see a short demo

sivan
Télécharger la présentation

Introduce OSGi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduce OSGi BlueDavy http://www.osgi.org.cn http://blog.bluedavy.cn 1.0 2007-10-28

  2. Agenda • Play OSGi • Who use OSGi • What is OSGi • OSGi R4 Implemention • How to develop OSGi app • OSGi Resources 2

  3. Play OSGi • Let’s see a short demo • First we see an bulletin application,but only have bulletin list function; • We want to add new bulletin,so we find newbulletin module from module respository,then install & start it,now we can add new bulletin; • We see the feature of OSGi application • modularity • dynamic,”Plug and Play” • extensionable • these features are supported by OSGi,the meaning is that you don’t need realize those features yourself,what you need do is just use it 3

  4. Agenda • Play OSGi • Who use OSGi • What is OSGi • OSGi R4 Implemention • How to develop OSGi app • OSGi Resources 4

  5. Who use OSGi • IBM • Websphere • RSA • BEA • microServices,All BEA product will be based on microServices • Eclipse • Apache • Struts 2 • Spring • Spring-OSGi • Simens,Nokia,BMW,Cisco etc. • SAP,Oracle,IONA etc. are interested in OSGi,and be OSGi EEG member 5

  6. Agenda • Play OSGi • Who use OSGi • What is OSGi • OSGi R4 Implemention • How to develop OSGi app • OSGi Resources 6

  7. What is OSGi • Dynamic Module System For Java • JSR232 JSR291 • Universal Middleware • Best practice guide and support for building modularity/dynamic/extensionable system • Modularity with rule; • Dynamic support for module,OSGi service,configuration; • Extension support with OSGi service. 7

  8. Modularity Define module in OSGi; Publish functions for other modules; Use functions provided by other modules. Service registry packages packages OSGi Basic Concepts OSGi Framework Bundle Bundle JAVA Operating System Hardware 8

  9. Define module in OSGi • In OSGi module compose of one or more bundles; • Bundle is a normal jar file,the difference is its Manifest.mf file,OSGi add some specical header info property to declarative bundle,such as: • bundle-version,export-package,import-package 9

  10. Publish functions for other bundles • add export-package header info to provide package for other bundles to use,such as cn.org.osgi.ppt.service; • add Fragment-Host header info to provide all resources for host bundle to use; • publish OSGi service for other bundles; • Use BundleContext.registerService to register normal java interface as OSGi service; • Write xml with rule to declarative normal java class as OSGi component,and provide service interface for other bundles,such as: 10

  11. Use functions provided by other modules • add import-package header info to import packages provided by other bundles,then you can use the java class in those packages; • add require-bundle header info to use all export packages and resources provider by bundle; • use OSGi service provided by other bundles; • Use BundleContext.getService to get OSGi service provided by other bundles; • Write xml with rule to declarative normal java class as OSGi component,and inject OSGi service provided by other bundles,such as: 11

  12. OSGi Basic Concepts • Dynamic • Bundle lifecycle • OSGi component lifecycle • Handle the dynamic • when bundle lifecycle changed; • when OSGi component lifecycle changed; • when configuration changed; • when framework changed; • when custom event published; 12

  13. Bundle lifecycle • OSGi provide an API for manageing bundles lifecycle (Install/Resolve/Start/Stop/Refresh/Update/Uninstall),so OSGi framework RI will control bundle lifecycle self; INSTALLED STARTING start RESOLVED ACTIVE stop UNINSTALLED STOPPING 13

  14. OSGi component lifecycle • Component that provide no service; • when all need OSGi services(exclued optional service) are usable,the component will be actived; • Component that provide services; • when all need OSGi services(exclued optional service) are usable; • other component call this OSGi service implemention. 14

  15. Handle the dynamic • when bundle lifecycle changed; • OSGi component lifecycle will change automatically; • OSGi will handle bundle lifecycle dynamic self; • when OSGi component lifecycle changed; • OSGi service tracker can be used to monitor OSGi service; • Declarative Services use bind-method,unbind-method to notify the dynamic of OSGi service. • when configuration changed; • Configuration Admin Service automatically notify the configuration change. • when framework changed; • FrameworkEventListener can be implemented to monitor framework. • when custom event published; • EventAdmin Service can to used to publish & handle custom event. 15

  16. OSGi Basic Concepts • Extensionable • Service filter supported by OSGi can be used to extension function; • Multi service reference supported by OSGi can be used to extension function; • Extension point provided by Equinox can be used to extension function. 16

  17. Agenda • Play OSGi • Who use OSGi • What is OSGi • OSGi R4 Implemention • How to develop OSGi app • OSGi Resources 17

  18. OSGi R4 Implemention • Equinox • Realized by Eclipse team; • As the OSGi R4 RI; • http://www.eclipse.org/equinox. • Used by Eclipse RCP & Eclipse other products. • Felix • Realized by Apache Team; • http://felix.apache.org. 18

  19. Agenda • Play OSGi • Who use OSGi • What is OSGi • OSGi R4 Implemention • How to develop OSGi app • OSGi Resources 19

  20. How to develop OSGi app • Get started • Write your first bundle • Deploy & Manage first bundle • Publish and use OSGi Service • FAQ 20

  21. Get started • Download Eclipse from www.eclipse.org • Download Equinox bundles from www.eclipse.org/equinox • most bundles exist in eclipse 21

  22. Write your first bundle • New plugin-project,select this plug-in is targeted to run with an OSGi framework in project wizard page; 22

  23. Write your first bundle • Then enter the plug-in content page • Write associate info,then click finish to create the project. 23

  24. Write your first bundle • Write activator class • Say ‘hello’ when bundle started; • Say ‘byebye’ when bundle stopped; 24

  25. Deploy & Manage first bundle • Deploy in eclipse • Deploy outside alone • Manage bundle in console 25

  26. Deploy in eclipse • Open run dialog,new in Equinox OSGi Framework, select Workspace Plug-ins and org.eclipse.osgi in Target platform; 26

  27. Deploy in eclipse • Click Run button,then you can see this in console; 27

  28. Deploy outside alone • Create equinox framework app outside alone first; • create Equinox directory,then create configuration,plugins directory in Equinox directory; • put org.eclipse.osgi.jar & org.eclipse.osgi.services.jar to plugins directory; • create config.ini in configuration directory,content in config.ini like this: osgi.noShutdown=true osgi.bundles=org.eclipse.osgi.services_3.1.100.v20060601.jar@start osgi.bundles.defaultStartLevel=4 osgi.configuration.cascaded=false eclipse.ignoreApp=true • create run.bat in Equinox directory,content in run.bat(windows) like this: @echo off java -jar plugins/org.eclipse.osgi_3.2.1.R32x_v20060919.jar - configuration configuration -console 28

  29. Deploy outside alone • Start equinox framework and install first bundle in OSGi console; • install first bundle use directory mode; • Input command like this in OSGi console: install file:/D:\work\workspace\OSGi-Bulletin\FirstBundle • install first bundle use jar file; • package first bundle into jar file; • Export the project as deployable plug-ins and fragments • Input command like this in OSGi conosle: install file:/D:\Opendoc\Equinox\plugins\FirstBundle_1.0.0.jar 29

  30. Manage bundle in console • use ss to find bundle id • use start,stop,update,uninstall to manage bundle with bundle id • start 2 (start bundle) • stop 2 (stop bundle) • update 2 (update bundle on the fly) • uninstall 2 (uninstall bundle) 30

  31. Publish OSGi Service • Use OSGi declarative services to publish and use OSGi Service,then when you run OSGi application,you need install Equinox DS plugin; • Create ServiceBundle to publish OSGi service; • Create cn.org.osgi.ppt.service.HelloService Interface; • Create cn.org.osgi.ppt.component.HelloComponent to implemention HelloService; • Publish HelloService as OSGi service using DS component xml; <component name="HelloComponent"> <implementation class="cn.org.osgi.ppt.component.HelloComponent"/> <service> <provide interface="cn.org.osgi.ppt.service.HelloService"/> </service> </component> • Add component.xml to MANIFEST.MF Service-Component property • Export package cn.org.osgi.ppt.service 31

  32. Use OSGi Service • Add cn.org.osgi.ppt.service to import-package; • Use HelloService in firstbundle with two kind methods; • context.getService method • In Activator class: ServiceReference serviceRef=context.getServiceReference(HelloService.class.getName()); if(serviceRef!=null){ HelloService service=(HelloService) context.getService(serviceRef); service.say("Activator"); } • Declarative Services method • create cn.org.osgi.ppt.firstbundle.FirstComponent class with inject service method: publicvoid setService(HelloService service){ this.service=service; } publicvoid unsetService(HelloService service){ if(this.service!=service) return; this.service=null; System.out.println("HelloService不可用"); } • write ds component xml to inject OSGi service; • Add component.xml to MANIFEST.MF Service-Component property 32

  33. Agenda • Play OSGi • Who use OSGi • What is OSGi • OSGi R4 Implemention • How to develop OSGi app • OSGi Resources 33

  34. OSGi Resources • OSGi R4 Specifications • 《OSGi实战》Opendoc • 《OSGi进阶》Opendoc • http://www.osgi.org • http://www.osgi.org.cn • http://www.aqute.biz • http://blog.bluedavy.cn 34

  35. OSGi China User Group Thank You ! Click to edit company slogan .

More Related