Download - Introduce OSGi
Introduce OSGiBlueDavyhttp://www.osgi.org.cnhttp://blog.bluedavy.cn
1.02007-10-28
23/4/2223/4/22 22 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Agenda Play OSGi Who use OSGi What is OSGi OSGi R4 Implemention How to develop OSGi app OSGi Resources
23/4/2223/4/22 33 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
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 d
on’t need realize those features yourself,what you need do is just use it
23/4/2223/4/22 44 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Agenda Play OSGi Who use OSGi What is OSGi OSGi R4 Implemention How to develop OSGi app OSGi Resources
23/4/2223/4/22 55 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
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 OS
Gi EEG member
23/4/2223/4/22 66 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Agenda Play OSGi Who use OSGi What is OSGi OSGi R4 Implemention How to develop OSGi app OSGi Resources
23/4/2223/4/22 77 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
What is OSGiDynamic Module System For JavaJSR232 JSR291Universal MiddlewareBest practice guide and support for building mod
ularity/dynamic/extensionable system Modularity with rule; Dynamic support for module,OSGi service,configurati
on; Extension support with OSGi service.
23/4/2223/4/22 88 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
OSGi Basic Concepts Modularity
Define module in OSGi; Publish functions for other
modules; Use functions provided by other modules.
BundleBundle
JAVA
Operating System
Hardware
OSGi Framework
Serviceregistry
packagespackages
23/4/2223/4/22 99 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Define module in OSGiIn OSGi module compose of one or more bundle
s;Bundle is a normal jar file,the difference is its Ma
nifest.mf file,OSGi add some specical header info property to declarative bundle,such as: bundle-version,export-package,import-package
23/4/2223/4/22 1010 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Publish functions for other bundlesadd export-package header info to provide pack
age 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:
23/4/2223/4/22 1111 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Use functions provided by other modulesadd import-package header info to import packa
ges 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 pr
ovided 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:
23/4/2223/4/22 1212 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
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;
23/4/2223/4/22 1313 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Bundle lifecycleOSGi provide an API for manageing bundles life
cycle (Install/Resolve/Start/Stop/Refresh/Update/Uninstall),so OSGi framework RI will control bundle lifecycle self;
INSTALLED
RESOLVED
UNINSTALLED
ACTIVE
STOPPING
STARTING
start
stop
23/4/2223/4/22 1414 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
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.
23/4/2223/4/22 1515 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
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 dyna
mic 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.
23/4/2223/4/22 1616 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
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.
23/4/2223/4/22 1717 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Agenda Play OSGi Who use OSGi What is OSGi OSGi R4 Implemention How to develop OSGi app OSGi Resources
23/4/2223/4/22 1818 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
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.
23/4/2223/4/22 1919 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Agenda Play OSGi Who use OSGi What is OSGi OSGi R4 Implemention How to develop OSGi app OSGi Resources
23/4/2223/4/22 2020 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
How to develop OSGi app Get started Write your first bundle Deploy & Manage first bundle Publish and use OSGi Service FAQ
23/4/2223/4/22 2121 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Get started Download Eclipse from www.eclipse.org Download Equinox bundles from
www.eclipse.org/equinox most bundles exist in eclipse
23/4/2223/4/22 2222 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Write your first bundle New plugin-project,select this plug-in is targeted
to run with an OSGi framework in project wizard page;
23/4/2223/4/22 2323 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Write your first bundle Then enter the plug-in content page Write associate info,then click finish to create th
e project.
23/4/2223/4/22 2424 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Write your first bundle Write activator class
Say ‘hello’ when bundle started; Say ‘byebye’ when bundle stopped;
23/4/2223/4/22 2525 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Deploy & Manage first bundle Deploy in eclipse Deploy outside alone Manage bundle in console
23/4/2223/4/22 2626 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Deploy in eclipseOpen run dialog,new in Equinox OSGi Framewo
rk, select Workspace Plug-ins and org.eclipse.osgi in Target platform;
23/4/2223/4/22 2727 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Deploy in eclipseClick Run button,then you can see this in consol
e;
23/4/2223/4/22 2828 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
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=trueosgi.bundles=org.eclipse.osgi.services_3.1.100.v20060601.jar@startosgi.bundles.defaultStartLevel=4osgi.configuration.cascaded=falseeclipse.ignoreApp=true
create run.bat in Equinox directory,content in run.bat(windows) like this:@echo offjava -jar plugins/org.eclipse.osgi_3.2.1.R32x_v20060919.jar - configuration configuration -console
23/4/2223/4/22 2929 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Deploy outside aloneStart equinox framework and install first bundle i
n 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
23/4/2223/4/22 3030 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Manage bundle in consoleuse 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)
23/4/2223/4/22 3131 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Publish OSGi Service Use OSGi declarative services to publish and use OSGi Service,the
n 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 Hel
loService; 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
23/4/2223/4/22 3232 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
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:
public void setService(HelloService service){this.service=service;}
public void 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
23/4/2223/4/22 3333 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
Agenda Play OSGi Who use OSGi What is OSGi OSGi R4 Implemention How to develop OSGi app OSGi Resources
23/4/2223/4/22 3434 OSGi China User Group: http://www.osgi.org.cn 致力于致力于 OSGiOSGi 的推广和发的推广和发展展
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
Click to edit company slogan .
OSGi China User Group