Service-Oriented Component Model April 18,2007.

Slides:



Advertisements
Similar presentations
TSpaces Services Suite: Automating the Development and Management of Web Services Presenter: Kevin McCurley IBM Almaden Research Center Contact: Marcus.
Advertisements

Component-Based Software Engineering Main issues: assemble systems out of (reusable) components compatibility of components.
Web Service Ahmed Gamal Ahmed Nile University Bioinformatics Group
SelfCon Foil no 1 Dynamic component systems 1. SelfCon Foil no 2 Pre-structured systems vs. dynamic component systems Pre-structured – emphasis on content.
Introduce OSGi BlueDavy
CPSC 875 John D. McGregor Architecture evolution.
Component Models and Technologies Case Study: OSGI.
The road to reliable, autonomous distributed systems
Why OSGi matters for Enterprise Java Infrastructures
Eclipse Architecture Dwight Deugo Nesa Matic
OSGi: Open Services Gateway Initiative Richard Chapman 5 Sept
OOP in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Monitoring OSGi platforms with ProActive Virginie Legrand OASIS Team - INRIA Sophia Antipolis.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
Page 1 Building Reliable Component-based Systems Chapter 4 - Component Models and Technology Chapter 4 Component Models and Technology.
Spring Dynamic Modules. Startlocation: Documentation: /1.2.1/reference/html/
THE NEXT STEP IN WEB SERVICES By Francisco Curbera,… Memtimin MAHMUT 2012.
Demonstrating WSMX: Least Cost Supply Management.
OSGi.
1/151/15 ENT Metamodel Implementation & Applications ENT metamodel, prototype implementation Component substitutability checking, ENT based component comparison.
CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics NPRG044: OSGi framework Michal Malohlava & Pavel Parízek
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
Introducing Axis2 Eran Chinthaka. Agenda  Introduction and Motivation  The “big picture”  Key Features of Axis2 High Performance XML Processing Model.
Web Services Experience Language Web Services eXperience Language Technical Overview Ravi Konuru e-Business Tools and Frameworks,
112 & ANTS 聯合書報討論大會 101 年 5 月 4 日. Topics of the day Component based software design paradigms Service oriented computing (SOC) Service oriented component.
1 IMPLEMENTING AN ACTIVE FUNCTIONALITY SERVICE ON DIFFERENT PLATFORMS Candidate: Antollini, Juan José Advisor: Cilia, Mariano Cilia, Mariano Universidad.
© 2006 IBM Corporation IBM WebSphere Portlet Factory Architecture.
Review: OSGi – a component framework for Java Bundle OSGi Framework Bundle Java Runtime Environment (JRE) Operating System (OS) Hardware “Dynamic Modules.
Lecturer: Prof. Piero Fraternali, Teaching Assistant: Alessandro Bozzon, Advanced Web Technologies: Struts–
Comparing JavaBeans and OSGi Towards an Integration of Two Complementary Component Models HUMBERTO CERVANTES JEAN-MARIE FAVRE 09/02.
OSGi Enablement for Tuscany Raymond Feng. Overview.
Application code Registry 1 Alignment of R-GMA with developments in the Open Grid Services Architecture (OGSA) is advancing. The existing Servlets and.
OSGi in action BlueDavy
In Pieces Breaking down monolithic applications with Spring-DM and OSGi.
Migrating Desktop The graphical framework for running grid applications Bartek Palak Poznan Supercomputing and Networking Center The.
OSGi Service Platform Open Service Gateway initiative.
Open Service Gateway Initiative (OSGi) Reporter : 林學灝 侯承育 1.
Andrew S. Budarevsky Adaptive Application Data Management Overview.
Spring/2002 Distributed Software Engineering C:\unocourses\4350\slides\DefiningThreads 1 RMI.
Shannon Hastings Multiscale Computing Laboratory Department of Biomedical Informatics.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Sameera Jayasoma 18 th July, 2009 Senior Software Engineer Introduction to OSGi The Dynamic Module System for Java.
SCALABLE EVOLUTION OF HIGHLY AVAILABLE SYSTEMS BY ABHISHEK ASOKAN 8/6/2004.
Tuscany: a SOA framework Jeffrey Guo Accelrys, Inc.
An information and monitoring system for static and dynamic information about grid resources, applications, networks … RDBMS Servlet aware of API during.
Grid Services I - Concepts
Grid programming with components: an advanced COMPonent platform for an effective invisible grid © 2006 GridCOMP Grids Programming with components. An.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
CPSC 875 John D. McGregor Architecture evolution.
Introduction to Java Beans CIS 421 Web-based Java Programming.
Introducing Allors Applications, Tools & Platform.
A Component Platform for Experimenting with Autonomic Composition A component framework for supporting composition of autonomic services and bio-inspired.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Spring MVC Essentials Getting started.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Getting Started with the Open Services Gateway Initiative (OSGi) CNT 5517 Dr. Sumi Helal, Ph.D. Professor Computer & Information Science & Engineering.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Plug-in Architectures Presented by Truc Nguyen. What’s a plug-in? “a type of program that tightly integrates with a larger application to add a special.
Introduction to business component technologies. Component definitions Szyperski: A software component is a unit of composition with contractually specified.
The SEAL Component Model Radovan Chytracek CERN IT/DB, LCG AA On behalf of LCG/SEAL team This work received support from Particle Physics and Astronomy.
The Chain of Responsibility Pattern (Behavioral) ©SoftMoore ConsultingSlide 1.
Introduction to OSGi +ActorFrame Surya Bahadur Kathayat
Overall Architecture and Component Model
Java Beans Sagun Dhakhwa.
Distribution and components
Presented by Jinpeng Zhou
ESIS Consulting LLC (C) ESIS Consulting LLC. All rights reserved
Introduction to Web Services
The Grid Component Model and its Implementation in ProActive
Plug-In Architecture Pattern
Presentation transcript:

Service-Oriented Component Model April 18,2007

Fly your dream with your hands Service-Oriented Component Model 1 1 Content A Glance at OSGi 2 iPOJO & Service Binder 3 DS & Spring OSGi 4 Comparison 5 Summary 6

Fly your dream with your hands Service-Oriented Model Publication Lookup Bind & Invoke Service Registry Service Consumer Service Provider Service Specification  Service: Contract of defined behavior

Fly your dream with your hands Service-Oriented Model  Good challenger to tackle dynamic environments  Loose-coupling –Design by Contract  Late-binding –At runtime, on demand  Hide heterogeneity  Issues  Dynamic in nature –Service arrive/disappear dynamically –Clients cope with it i.e. Notification  Service dependencies are unreliable and ambiguous –No service found or multiple found  Service requesters do not directly instantiate service instances –Common service or different instances

Fly your dream with your hands Service-Oriented Model  A service way to implement the functionality  Focus on service dynamics and substitutabilty  Jini, Web Service  Dynamics is very difficult to manage

Fly your dream with your hands Component-Oriented Model  Focus on application building block definition  Creating reusable software building blocks  Separation of concerns  Avoid the mix between business code and non functional concerns.  Avoid monolithic application  An assembler uses (existing) components and put them together

Fly your dream with your hands Component-Oriented Model  A component type  consistent piece of code  non-functional concerns configuration  defined interfaces (required and provided)  A component instance  Content: business code  Container: manage non functional concerns –Binding, Lifecycle, Persistence, Security, Transaction …  components interfaces service interfaces  Ideal candidate for implementing services

Fly your dream with your hands SOC Model  Focus on both  Component -implementation  Service  Objectives  Ease the development of application using services.  Separation of concerns separate business code and dynamism management code Business code Dynamic management code

Fly your dream with your hands SOC Model Resolved at runtime Syntax, Description, Behavior, Semantic Provides a functionalit y Applications are build by using available services OSGi framework manage the component lifecycle

Fly your dream with your hands OSGi Platform  OSGi framework: excution environment  Service platform –Service-oriented interaction  Deployment infrastructure –Continuous deployment  A set of standard service definitions  Bundle –Physical unit –Logical concept for the service implements  Installation, activation, deactivation…

Fly your dream with your hands OSGi Platform  Activator  Component  Register and use service  Managed by framework  Implement activation and deactivation methods  Receive a context object  BundleContext  Interact with the OSGi framework –Service publication –Service discovery and invocation –Classes and resources loading

Fly your dream with your hands OSGi Platform  Dynamic feature  Departure & arrival of services  Monitoring –Dependency management –Only notifications  Reconfiguration  Example  Service publication  Service discovery  Service invocation  Service dynamics

Fly your dream with your hands import tutorial.example2.service.DictionaryService; public class Activator implements BundleActivator, ServiceListener { private BundleContext m_context = null; private ServiceReference m_ref = null; private DictionaryService m_dictionary = null; public void start(BundleContext context) throws Exception { m_context = context; m_context.addServiceListener(this, "(&(objectClass=" + DictionaryService.class.getName() + ")" + "(Language=*))"); ServiceReference[] refs = m_context.getServiceReferences( DictionaryService.class.getName(), "(Language=*)");..... } public void stop(BundleContext context) { } public void serviceChanged(ServiceEvent event) { String[] objectClass = (String[]) event.getServiceReference().getProperty("objectClass"); } Example import tutorial.example2.service.DictionaryService; public class Activator implements BundleActivator { public void start(BundleContext context) { Properties props = new Properties(); props.put("Language", "English"); context.registerService( DictionaryService.class.getName(), new DictionaryImpl(), props); } public void stop(BundleContext context) { } private static class DictionaryImpl implements DictionaryService { String[] m_dictionary = { "welcome", "to", "the", "osgi", "tutorial" }; public boolean checkWord(String word) {.... } package tutorial.example2. service; public interface DictionaryService { public boolean checkWord(String word); } import org.osgi.framework.BundleActivator;import org.osgi.framework.BundleContext;import org.osgi.framework.ServiceReference; import org.osgi.framework.ServiceListener;import org.osgi.framework.ServiceEvent;

Fly your dream with your hands Motivation  OSGi does not provide a very simple development model.  But it provides all the basics to manage dynamic  Events management, service registry, dynamic rebinding …  Listener pattern  Originally design to enable asynchronous communication in object oriented language  Dependencies management  Complex and error-prone  Concurrency and synchronization Automate service registration & service dependency management

Fly your dream with your hands Existing Models  iPOJO 0.7(Clement Escoffier)  Service Binder 1.1 et 1.2 (Cervantes)  Declarative Service (OSGi R4)  Spring – OSGi (Adrian Colyer and all)  Dependency Manager (Offermans)  Service Component Architecture (IBM)

Fly your dream with your hands History Service Binder (Humberto Cervantes) GenSD Monolithic Approach close to ServiceBinder iPOJO 0.6 : Extensible component model, Hosted on APACHE iPOJO 0.7 : Refactoring, Composite … Declarative Service (OSGi™ R4) Dependency Manager (Marcel Offermans) Spring-OSGi™ (Interfaces 21) october june november february june september

Fly your dream with your hands a service component framework

Fly your dream with your hands iPOJO Overview  injected POJO  Base on byte code manipulate  iPOJO is a service component model  Based on POJO  For dynamic environment  Extensible and Flexible  Aims to ease the application development on the OSGi™ framework  Hide non functional concerns inside the implementation  Hide service interactions  Manage dynamics  Component Factory management  iPOJO 0.7 is hosted as a subproject of the APACHE Felix project

Fly your dream with your hands iPOJO Overview  POJO  Plain Old Java Object  Simple Java class containing the business logic  No dependencies on its execution environment  Container around component instance  Non-func requirement be injected OSGi™ iPOJO

Fly your dream with your hands Concepts: Component  Component Type (Component)  Description of a component type –Name, Factory –Define the container configuration  Component Instance (Instance)  Component Factories create instances  Instance characterization –Name, Component Type, Configuration 20

Fly your dream with your hands Concepts: Lifecycle  A component instance is either VALID or INVALID  A component instance is VALID  All handlers are valid 21 Configured Created INVALID Stopped VALID Destroyed

Fly your dream with your hands Concepts: Container  Plugins  The container is composed by a IM and Handlers  An handler manage one non functional concern  Possibility to implement others handlers without modifying iPOJO core (External Handlers)  The runtime plugs the needed handlers 22 Provided Service Lifecycle Configuration Architecture Dependency

Fly your dream with your hands Concepts: Handlers  Manage non-func requirement  Plugged on the instance manager  Each instance has its own handler set (defined in its type)  Extends the component model  Two kinds of handlers  Core handlers –Contained inside iPOJO Runtime –Lifecycle, Dependency, Provided Service, Configuration, Architecture  External handlers –Developed and Deployed singly from iPOJO Core –Developed by using the OSGi™ programming model –Deployed inside bundle exporting the package of the handler

Fly your dream with your hands Concepts: Handlers  Handlers, plugged on an instance manager  Participate to instance lifecycle vote –Ask for a vote, Invalid the instance  Interact with POJO fields –Inject values, be notified when the value change  Invoke methods on the POJO  Create POJO objects  Get the instance Bundle Context  …  Manage the relations between “external world” and the POJO

Fly your dream with your hands Dependency Handler  Manage dependency elements  Service lookup and the service invocation  Affects directly the component state  Manage correctly the dynamics of OSGi  Dependency Manager  Manager all the dependency  Register an OSGi service event listener –When service arrive, store the reference –When used, obtain the service object and return component –When goes away, remove the reference and call unset –Simple vs Multiple  Callback

Fly your dream with your hands Dependency Handler

Fly your dream with your hands Architecture Handler  An architectural / component view of your systems  Reflection on the iPOJO containers Component : fr.imag.adele.escoffier.hello.impl.HelloServiceImpl - VALID Dependency : org.osgi.service.log.LogService - RESOLVED - Optional : true - Multiple : false Provides : fr.imag.adele.escoffier.hello.HelloService - REGISTERED Service Property : floor_ = 2 Service Property : coucou = coucou Service Property : empty = true Service Property : language = fr Component : fr.imag.adele.escoffier.hello.impl.HelloServiceImpl2 - VALID Dependency : org.osgi.service.log.LogService - RESOLVED - Optional : true - Multiple : false Provides : fr.imag.adele.escoffier.hello.HelloService - REGISTERED

Fly your dream with your hands iPOJO Core Model

Fly your dream with your hands As Service Component  Using special (service-aware) handlers  Provided service handler –Publish and manage an OSGi™ service  Dependency Handler –Discover and Track an OSGi™ service  These handlers manage OSGi™ service dynamics  These handlers allow dynamic service composition  Composition described in term of service specifications not in term of component type

Fly your dream with your hands Example  A component requiring a service  The needed service is mandatory  The component require only one service provider  A component providing a service

Fly your dream with your hands Step 1 : the POJO classes  POJO are Java classes  Each provided service interfaces need to be implemented by the POJO  To be sure that all method are implemented  A POJO needs to declare a field for each required service  Dependencies injection

Fly your dream with your hands Step 1 : the POJO classes public class MyFirstPOJO { FooService myService; public void doSomething() { //Do something.... myService.foo(); //Do another thing… } } public class MySecondPOJO implements FooService { public void foo() { …} }

Fly your dream with your hands Step 2 : the Component Types  A component type is describe by a name, an implementation class and the handlers configuration.  iPOJO manages component factories to create component instance.  One by component type  Can be public (service) or private.

Fly your dream with your hands Step 2 : the Component Types <component classname=“…MyFirstPOJO” factory = “myFirstType” > <component classname=“…MySecondPOJO” factory = “mySecondType” >

Fly your dream with your hands Step 3 : Component Instances  An instance has a name and can receive a configuration.  We can declare instances in the descriptor. These instances will be created when the bundle will be started.  Can create instances from an external factory.  Inside another metadata file.  By using Factory and ManagedServiceFactory services.

Fly your dream with your hands Step 3 : Component Instances <instance component=“myFirstType” name = “myFirstInstance” /> <instance component=“mySecondType” name = “mySecondInstance” />

Fly your dream with your hands Step 4 : Packaging and Deployment  iPOJO Bundles are not simple bundles  Bytecode Manipulation  Metadata exports  How-to create an iPOJO Bundle  With Maven  With the Eclipse plugin (experimental) POJO {meta + manipulation} {meta + manipulation} POJO iPOJO

Fly your dream with your hands Step 5 : Runtime myFirst Type mySecond Type 2.1 instance 2.1 instance 1.1 instance 1.1 instance FooService Factory

Fly your dream with your hands iPOJO Composition Level  Component Composition  Horizontal Composition : Instances can be bound by linking consistent provided interfaces and required interfaces  Vertical Composition : Instances can contain other instances  Service Flexibility  Runtime / Late Binding  Service dynamics  Implementation evolution  As Composition are mapped on iPOJO instance, the composition is extensible  Possibility to implement “Composite Handlers” extending the composition model  Follow the same rules than “normal” handlers –Sub-set of Handler methods

Fly your dream with your hands Structural Service Composition  A Composition can import and export services  A Composition can contain internal services (sub- services) are instantiated for the composition –Published only inside the composition –Hierarchical Composition  Sub-services dependencies are resolved in the composition scope  Service Application are compositions

Fly your dream with your hands Conclusion of iPOJO  Simple development model  Service management  Component lifecycle management  Component factory  Component type / Instance  Composition, ADL, Hierarchic Model  Extensibility of container  Architecture service  Performance   Distribution 

Fly your dream with your hands Service Binder Simplifying application development on the OSGi services platform

Fly your dream with your hands Service Binder  Automate the management of components and their service dependency  Extract service dependency management logic  Configured by information contained in an XML component descriptor file  Inserted seamlessly into a bundle by creating an empty subclass from a generic activator class  Applications are assembled dynamically and are capable of adapting themselves autonomously  Say goodbye to OSGi API and isolate from OSGi  A standard OSGi bundle

Fly your dream with your hands Execution Environment  Compatibility with standard' OSGi  Generic activator  Parse component descriptor  creates the instance managers  Architectural service

Fly your dream with your hands Concepts an external view for the component and are part of the application logic IOC pattern and execution environment can manage instance's lifecycle deployment dependencie s or resources

Fly your dream with your hands Instance Manager  Every component instance is managed independently by an instance manager  Bind/unbind required services to/from the component instance when it is created/destroyed  Register/unregister any services provided by the component instance after its required services are bound/unbound  Dynamically monitor the component instance's service dependencies,  Create/destroy the component instance when its service dependencies are satisfied/unsatisfied,  Manages the instance's life-cycle  Control methods and interfaces  Inversion of Control  Constantly maintain the validity of the instance it manages

Fly your dream with your hands Instance Manager

Fly your dream with your hands Instance Property  Cardinality  0-1,0-n,1-1,1-n  Policy  How runtime service changes are handled  How component instance lifecycle is managed –Static –Dynamic  Filter  Bind/unbind  Factory  Register a special FactoryService to create instance

Fly your dream with your hands Instance Property =>Instance Manager  1..1, static  Configuration: The required service interface corresponds to a single binding that must be created for the instance to be validated.  Execution: The destruction of the binding invalidates the instance  0..n, dynamic  Configuration: The required service interface corresponds to a set of bindings that do not need to be created for the instance to be validated. The instance manager creates bindings with all the available service providers at the moment of configuration.  Execution: New bindings can be created and bindings can be destroyed. Instance invalidation only occurs when the instance is destroyed.

Fly your dream with your hands Example: Step1 1.- Component descriptor (metadata.xml) <requires service="org.simpleservice.interfaces.SimpleService" filter="(version=*)" cardinality="1..n" policy="dynamic" bind-method="setSimpleServiceReference" unbind-method="unsetSimpleServiceReference" /> `

Fly your dream with your hands Step2~4 2.- Manifest Bundle-Activator: org.simpleclient.impl.Activator Import-Package: org.ungoverned.gravity.servicebinder; specification-version="1.1.0", org.simpleservice.interfaces; specification-version="1.0.0" Bundle-Name: simpleclient.jar Bundle-Description: A simple client. Bundle-Vendor: Humberto Cervantes Bundle-Version: Metadata-Location: org/simpleclient/res/metadata.xml 3.- Activator package org.beanome.simpleclient.impl; import org.ungoverned.gravity.servicebinder.Gene ricActivator; public class Activator extends GenericActivator { } 4.- Service interfaces package org.simpleclient.interfaces; public interface SimpleClientService {... }

Fly your dream with your hands Step5: Implement Class package org.simpleclient.impl; import org.simpleclient.interfaces.SimpleClientService; import org.simpleservice.interfaces.SimpleService; import java.util.ArrayList; public class ClientImpl implements SimpleClientService{ ArrayList m_simpleServiceRefs = new ArrayList(); public ServiceImpl() { } public void setSimpleServiceReference(SimpleService ref) { System.out.println("-> SimpleClient: Hello SimpleService !"); m_simpleServiceRefs.add(ref); ref.Test(); } public void unsetSimpleServiceReference(SimpleService ref) { System.out.println("-> SimpleClient: Goodbye SimpleService..."); m_simpleServiceRefs.remove(ref); }

Fly your dream with your hands Further Concepts  ServiceBinderContext  Lifecycle  Interceptors  GenericActivator  protected Object proxyProvidedServiceObject(Object obj, InstanceMetadata metadata)  protected Object proxyRequiredServiceObject(Object obj, DependencyMetadata metadata)

Fly your dream with your hands Conclusion of Service Binder  Simple development model  Binding methods  Service management  Component lifecycle management  Component factory  Component type / Instance  Composition  Extensibility of container   Architecture service  Performance  Distribution 

Fly your dream with your hands Declarative Service

Fly your dream with your hands Declarative Service Overview  Service Compedium(RC4)  Chapter 112  Version 1.0  Declarative Service is a Service Component Model.It uses a declarative model for publishing, finding and binding to OSGi services.  Goals  Simplicity  High-Performance

Fly your dream with your hands Declarative Service Overview

Fly your dream with your hands Declarative Service Overview  Immediate Component  An immediate component is activated as soon as its dependencies are satisfied.  Delayed Component  A delayed component specifies a service, the activation of the component configuration is delayed until the registered service is requested.  Factory Component  A Factory Component supports multiple instances.

Fly your dream with your hands Declarative Service Overview  LifeCycle  Enabled Immediate Component Delayed Component Factory Component

Fly your dream with your hands Declarative Service Overview  Service Binding and Unbinding  2 strategy:Event & Lookup  Action in Component LifeCycle –Binding: –while activating –the references are processed in the order in which they are specified in the component description. –Unbinding: –while deactivating –the references are processed in the reverse order in which they are specified in the component description.  Reference policy –Static & Dynamic

Fly your dream with your hands Declarative Service Examples  Manifest.mf  No Activator Header.  Using Service-Component Header to indicate where the Componont Description are. Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: ConfigFileValidatorBundle Bundle-SymbolicName: ConfigFileValidatorBundle Bundle-Version: Bundle-ClassPath: bin/,lib/junit.jar Service-Component: OSGI-INF/component.xml Import-Package: org.osgi.framework;version="1.3.0 ……

Fly your dream with your hands Declarative Service Examples package com.acme; public class USBConnectionImpl implements USBConnection { protected void activate(ComponentContext ctxt) {...}... } /* Factory Component */ factory=“usbfactory” /* Delay Component */ immediate=“false”

Fly your dream with your hands Declarative Service Examples <reference name="HTTP" interface="org.osgi.service.http.HttpService" cardinality="0..n" bind="setPage" unbind="unsetPage"/> package com.acme; public class HttpResourceImpl { protected void setPage(HttpService http) { http.registerResources("/src", "src", null ); } protected void unsetPage(HttpService http) { http.unregister("/src"); } /* reference policy */ policy=“dynamic” /* filter */ taget=“(version=1.0)”

Fly your dream with your hands Spring-OSGi

Fly your dream with your hands Spring-OSGi Overview  SourceForge  SubProject of Spring  Licence:APL  Current-Version:1.0 M1  2006,September  Goals  Make it as easy as possible to write Spring applications that can be deployed in an OSGi execution environment.  Also make development of OSGi applications simpler and more productive by building on the ease-of-use and power of the Spring framework.

Fly your dream with your hands Spring-OSGi Overview  Manifest.mf  No Activator Header.  Using Spring-Context Header to indicate where the Componont Description are. Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: ConfigFileValidatorBundle Bundle-SymbolicName: ConfigFileValidatorBundle Bundle-Version: Bundle-ClassPath: bin/,lib/junit.jar Spring-Context: *;wait-for-dependencies=false Import-Package: org.osgi.framework;version="1.3.0 …… META-INF/spring

Fly your dream with your hands Spring-OSGi Overview  Export Services  ApplicationContext----Contains some number of beans(Components/Services) lazy-init=“true”

Fly your dream with your hands Spring-OSGi Overview  Using Services  Using BundleContextAware interface  Inject Services <property name=“messageService” ref=“MessageService”/> public class SomeClass { public void setMessageService(MessageS ervice s) { … } cardinality="0..n“ filter=“(version=1.0)”

Fly your dream with your hands Spring-OSGi Overview  Using Services  Binding and Unbinding Services <osgi:listener ref=“listenerBean” bind-method=“bind” unbind-method=“bind”/> public class SomeClass { public void bind(MessageService s) { … } public void unbind(MessageService s){ … }

Fly your dream with your hands Spring-OSGi Overview  Context ClassLoader Management  OSGi doesn’t define what the context ClassLoader will be at any point in time.This means some useful 3rd-party libraries may not be able to find the types and resources they need. <osgi:reference id=“MessageService“ interface=“com.xyz.MessageService” context-classloader=“client”> <osgi:listener ref=“listenerBean” bind-method=“bind” unbind-method=“bind”/> Service-provider Unmanaged(default)

Fly your dream with your hands Spring-OSGi Overview  Web application Support  Set the contextClass parameter of the listener declaration in web.xml file to “org.springframework.osgi.context.support. WebApplicationContext”  JMX Manament of OSGi applications  Spring provide an OSGi bundle that enables JMX- based management of OSGi.

Fly your dream with your hands Comparison  A development model simple and non intrusive  Dynamics management and component lifecycle management  Differentiation between component type / Instance  Composition, ADL, Hierarchic Model  Other non functional concerns management, extensibility, flexibility  Runtime representation  Performance  Distribution

Fly your dream with your hands Comparison ContextClass Loader Service Mngt Life Cycle Component Factory CompositeExt. & Open Container Arch. Service Binder 1.2 NYYYYNY Declarative Service NYYYNNN Spring-OSGiYYyNNNN iPOJO 0.7N

Fly your dream with your hands References  H. Cervantes and R.S. Hall. "Automating Service Dependency Management in a Service-Oriented Component Model," Proceedings of the Sixth Component-Based Software Engineering Workshop, May 2003, pp  Clement Escoffier.“iPOJO Yet Another Service-Oriented Component Model”.ppt  Clement escoffier.  Humberto Cervantes, Richard S. Hall.  Martin Fowler.Inversion of Control Containers and the Dependency Injection pattern  Neil.A Comparison of Eclipse Extensions and OSGi Services  BlueDavy.Service-Oriented Component Model(SOCM)  

Click to edit company slogan. We can always do better than good.