Osgi in action
Download
1 / 32

OSGi in action - PowerPoint PPT Presentation


  • 116 Views
  • Uploaded on

OSGi in action. BlueDavy http://www.osgi.org.cn http://blog.bluedavy.cn. 1.1 2007-10-20. Agenda. Use OSGi with popular framework Deploy exist system to OSGi The feature of OSGi application OSGi application design best practices OSGi application develop best practices Resources.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'OSGi in action' - pete


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Osgi in action

OSGi in action

BlueDavy

http://www.osgi.org.cn

http://blog.bluedavy.cn

1.1

2007-10-20


Agenda
Agenda

  • Use OSGi with popular framework

  • Deploy exist system to OSGi

  • The feature of OSGi application

  • OSGi application design best practices

  • OSGi application develop best practices

  • Resources

2


Use osgi with popular framework
Use OSGi with popular framework

  • Use with Hibernate

  • Use with Spring

  • Use with Webwork

  • Intergration key factors

3


Use with hibernate
Use with Hibernate

  • Download Hibernate-OSGi

    • http://www.osgi.org.cn/Hibernate-OSGi;

    • install cn.org.osgi.hibernate bundle or import Hibernate-OSGi source project to eclipse.

  • Write demo bundle with Hibernate-OSGi to use Hibernate

4


Use with hibernate1
Use with Hibernate

  • Change the connection info in hibernate.cfg.xml of cn.org.osgi.hibernate bundle;

  • New Plug-in project,and write persistent class as you always do,then generate persistent class hbm file;

  • Implemention DAO class with cn.org.osgi.hibernate.service.CommonDaoService or other common Hibernate DAO API;

5


Use with hibernate2
Use with Hibernate

  • Register Persistent class as extension point;

    • create plugin.xml,then input following content into the file,just like this:

      • <extension point=“cn.org.osgi.hibernate.PoExtension">

      • <po class="cn.org.osgi.bulletin.po.Bulletin"/>

      • </extension>

  • Start the application,then finish the demo that use OSGi with Hibernate

6


Use with hibernate3
Use with Hibernate

  • Summary

    • the difference between use with hibernate and use with OSGi & hibernate only two sides:

      • don’t add resource mapping element to hibernate.cfg.xml any more;

      • Use extension point to register po.

7


Use with hibernate4
Use with Hibernate

  • The implemention method of Hibernate-OSGi

    • Refactor AbstractClassGenerator.getClassLoader() method to sure use the AbstractClassGenerator class’s classloader to load the associate class

      • Why do this?

        • Just because AbstractClassGenerator use po class’s classloader to load cglib associate class,but now the bundle including po class don’t need import cglib jar.

    • Based on extension point to register/unregister po

      • Why do this?

        • Just because module seperation rule.

        • Use extension point so we can register po outside of HibernateModule.

      • The session service use Configuration.addClass to register po from other bundle.

8


Use with hibernate5
Use with Hibernate

  • The weakpoint of Hibernate-OSGi

    • Not support many hibernate po advanced configuration just like po class cache etc. currently;

    • Not support multi sessionfactory currently;

    • Need support register connection info from other bundles;

    • When new pos added or exist pos removed,SessionFactory need be restarted;

  • Let’s improve Hibernate-OSGi together

    • If u want to join this group,pls visit this webpage:

      • http://www.osgi.org.cn/Hibernate-OSGi/join.html

9


Use with spring
Use with Spring

  • Download Spring-OSGi;

    • http://www.springframework.org/osgi

  • Create the build and run environment

  • Publish Spring bean as OSGi service

  • Inject OSGi service to Spring bean

  • Best practices

  • The weakpoint of Spring-OSGi

10


Use with spring1
Use with Spring

  • Create the build and run environment

    • install these bundles to eclipse or equinox

      • aopalliance

      • aspectjrt

      • backport-util-concurrent

      • spring-aop

      • spring-aspects

      • spring-beans

      • spring-context

      • spring-core

      • spring-dao

      • spring-osgi-core

      • spring-osgi-extender

      • spring-osgi-io

11


Publish spring bean as osgi service
Publish Spring bean as OSGi service

  • It’s very simple to do this

    • just write this element

      • <osgi:service id=“serviceID” ref=“spring bean name” interface=“OSGi service interface”/>

      • You can add osgi:service-properties to realize the properties configuration in OSGi component’s xml

12


Inject osgi service to spring bean
Inject OSGi service to Spring bean

  • It’s also very simple to do this, just write this element

    • <osgi:reference id=“Just like Spring bean name” interface=“OSGi service ” cardinality=“[0..n]|[0..1]|[1..n]” filter=“” timeout=“” depends-on=“” context-classloader=“”/>

    • We can use two method to inject this OSGi service to spring bean

      • <bean name=“bean name” class=“bean class”>

        <property name=“OSGi service” ref=“OSGi reference id”/>

        </bean>

      • add osgi:listener to osgi:reference

        • <osgi:listener ref=“the spring bean name need inject this OSGi service” bind-method=“inject OSGi service’s method name” unbind-method=“when OSGi service unavaible,then call this method”/>

        • The bind-method need change to this kind signature

          public void some-method-name(service interface,Dictionary)

    • The difference between these two methods

      • The first method cann’t get the OSGi service’s dynamic changination,but the second method can do this.

13


Best practices
Best practices

  • Only publish those pojo needed export as OSGi service;

  • Use osgi:listener method to inject OSGi service to spring bean;

  • Handle the OSGi service dynamic change;

  • If can publish the pojo in DS style,then use DS style;

14


The weakpoint of spring osgi
The weakpoint of Spring-OSGi

  • Cann’t dynamic load spring bean bundle;

  • Spring-OSGi bundle must start before other bundles;

  • Spring-OSGi depends excessive bundles.

15


Use with webwork
Use with Webwork

  • Download Webwork-OSGi

    • http://www.osgi.org.cn/Webwork-OSGi

    • Install cn.org.osgi.webwork bundle or Import Webwork-OSGi project to eclipse

    • The bundle did realize webwork intergration with Spring-OSGi

  • Write demo bundle with Webwork-OSGi to use webwork with OSGi

16


Use with webwork1
Use with Webwork

  • New Plug-in project,write action class and action xml as always you do;

    • <action name="list" class="LIST">

    • Class property upside map to its OSGi service’s property

      • <property name="command" value="ADMINLOGIN"/>

  • Publish action class as OSGi service in ds style or spring-OSGi style;

  • Export the package where your action classes and action resource files in;

  • Register action xml file to extension point;

    • <extension

      point=“cn.org.osgi.webwork.actionextension">

      <action configFile="cn/org/osgi/bulletin/list/action/xwork.xml"/>

      </extension>

  • Start the application,then u can visit the action

17


Use with webwork2
Use with Webwork

  • Summary

    • the difference between use with webwork and use with webwork-OSGi

      • the action class property is not the action class true name,but is the osgi service command property the action class published;

      • the action xml file is not write to a singlepoint xwork.xml,but register to webwork-OSGi based on extension point;

18


Use with webwork3
Use with Webwork

  • The implemention of Webwork-OSGi

    • Write own action xml file configuration provider class

      • so webwork-OSGi can dynamic load and unload action xml file outside webwork-OSGi bundle;

    • Write own ObjectFactory to load action and other class

      • so webwork-OSGi can load action class instance from OSGi service registration and then realize intergration with spring-OSGi;

      • Other class loading as webwork always do

    • Change webwork action xml file configuration provider and ObjectFactory

19


Use with webwork4
Use with Webwork

  • The weakpoint of Webwork-OSGi

    • Maybe we need write a webwork-OSGi bundle so when webwork update,we can update quickly;

    • Not support servlet filter configuration,but this is httpservice problem

20


Intergration key factors
Intergration key factors

  • Classloader factor

    • Can use OSGi Dynamic-ImportPackage and Export-Package to solve this factor.

  • Resource loader factor

    • Can use extension point to realize load resource dynamically and so resource can be placed in module style.

  • The most important factor:”modularity” & “Plug and Play”

21


Agenda1
Agenda

  • Use OSGi with popular framework

  • Deploy exist system to OSGi

  • The feature of OSGi application

  • OSGi application design best practices

  • OSGi application develop best practices

  • Resources

22


Deploy exist system to osgi
Deploy exist system to OSGi

  • Use bnd tool to do this

    • http://www.aqute.biz/Code/Bnd

    • http://www.aqute.biz/Code/BndCn

  • Step

    • Separate project packages in module style logically;

    • Define module need import package and export package;

    • Write bnd file for per module;

    • Run bnd tool then get the module jar file;

    • Deploy the module jar file to OSGi framework

23


Agenda2
Agenda

  • Use OSGi with popular framework

  • Deploy exist system to OSGi

  • The feature of OSGi application

  • OSGi application design best practices

  • OSGi application develop best practices

  • Resources

24


The feature of osgi application
The feature of OSGi application

  • Strict and clear modularity

    • Quickly know the module dependency;

    • Quickly know the module exported function;

    • Quickly know how the module can be extensioned;

  • Reusable

    • Build company bundle respository

  • Dynamic

    • “Plug and Play”

  • Extensionable

25


Agenda3
Agenda

  • Use OSGi with popular framework

  • Deploy exist system to OSGi

  • The feature of OSGi application

  • OSGi application design best practices

  • OSGi application develop best practices

  • Resources

26


Osgi app design best practices
OSGi app design best practices

  • Clear and strict define module;

    • Module’s Export Function;

    • Module’s Dependency;

    • Module’s Extension Point;

  • Interface-oriented and SOCM;

    • Bundles compose of components,components communicate each other with OSGi service;

    • All service publish in interface type;

  • Split Interface & Implemention into separate bundles;

27


Agenda4
Agenda

  • Use OSGi with popular framework

  • Deploy exist system to OSGi

  • The feature of OSGi application

  • OSGi application design best practices

  • OSGi application develop best practices

  • Resources

28


Osgi app develop best practices
OSGi app develop best practices

  • Keep the dynamic feature

    • Don’t suppose the dependence service usable;

    • Handle the dynamic change such as extension added/event published/service unavaible;

  • If the service is used only inside bundle,then don’t publish it as OSGi service;

  • Don’t make static dependency to other bundles;

29


Agenda5
Agenda

  • Use OSGi with popular framework

  • Deploy exist system to OSGi

  • The feature of OSGi application

  • OSGi application design best practices

  • OSGi application develop best practices

  • Resources

30


Resources
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

31


Click to edit company slogan

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

Thank You !

Click to edit company slogan .


ad