Introduce OSGi

emptyslowInternet και Εφαρμογές Web

12 Νοε 2013 (πριν από 3 χρόνια και 9 μήνες)

168 εμφανίσεις

Introduce OSGi

BlueDavy

http://www.osgi.org.cn

http://blog.bluedavy.cn

1.0

2007
-
10
-
28


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

2

Agenda



Play OSGi



Who use OSGi



What is OSGi



OSGi R4 Implemention



How to develop OSGi app



OSGi Resources


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

4

Agenda



Play OSGi



Who use OSGi



What is OSGi



OSGi R4 Implemention



How to develop OSGi app



OSGi Resources


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

6

Agenda



Play OSGi



Who use OSGi



What is OSGi



OSGi R4 Implemention



How to develop OSGi app



OSGi Resources


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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.


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

8

OSGi Basic Concepts



Modularity


Define module in OSGi;


Publish functions for other
modules;


Use functions provided


by other modules.

Bundle

Bundle

JAVA

Operating System

Hardware

OSGi Framework

Service

registry

packages

packages


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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:




OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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:




OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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;


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

13

Bundle lifecycle


OSGi provide an API for manageing bundles
lifecycle
(Install/Resolve/Start/Stop/Refresh/Update/Unin
stall),so OSGi framework RI will control bundle
lifecycle self;

INSTALLED

RESOLVED

UNINSTALLED

ACTIVE

STOPPING

STARTING

start

stop


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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.


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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.



OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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.


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

17

Agenda



Play OSGi



Who use OSGi



What is OSGi



OSGi R4 Implemention



How to develop OSGi app



OSGi Resources


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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.


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

19

Agenda



Play OSGi



Who use OSGi



What is OSGi



OSGi R4 Implemention



How to develop OSGi app



OSGi Resources


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

20

How to develop OSGi app



Get started



Write your first bundle



Deploy & Manage first bundle



Publish and use OSGi Service



FAQ


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

21

Get started



Download Eclipse from www.eclipse.org



Download Equinox bundles from
www.eclipse.org/equinox



most bundles exist in eclipse


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

22

Write your first bundle



New plugin
-
project,select this plug
-
in is targeted
to run with an OSGi framework in project wizard
page;



OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

23

Write your first bundle



Then enter the plug
-
in content page



Write associate info,then click finish to create
the project.


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

24

Write your first bundle



Write activator class



Say ‘hello’ when bundle started;




Say ‘byebye’ when bundle stopped;


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

25

Deploy & Manage first bundle



Deploy in eclipse



Deploy outside alone



Manage bundle in console


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

26

Deploy in eclipse


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


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

27

Deploy in eclipse


Click Run button,then you can see this in
console;


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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)


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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



OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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:

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




OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

33

Agenda



Play OSGi



Who use OSGi



What is OSGi



OSGi R4 Implemention



How to develop OSGi app



OSGi Resources


OSGi China User Group:
http://www.osgi.org.cn

致力于
OSGi
的推广和发展

2013/11/12

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

C l i c k

t o

e d i t

c o m p a n y

s l o g a n

.

OSGi China User Group