osgi - jsug.atjsug.at/w/images/3/3e/jsug-slides-osgi-michael_greifeneder.pdf · osgi the next...

36
OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder von Peter Kriens “W-JAX Keynote 2007” und Neil Bartletts “Getting Started with OSGi” Michael Greifeneder

Upload: others

Post on 18-Oct-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

OSGi

The Next Generation Java Service Platform

SOA - The Java Way or

My classpath is killing me

Bilder von Peter Kriens “W-JAX Keynote 2007” und Neil Bartletts “Getting Started with OSGi”

Michael Greifeneder

Page 2: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Inhalt

● Problem● OSGi● SOA● Tools

Page 3: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Warum OSGi?

Page 4: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder
Page 5: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder
Page 6: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder
Page 7: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder
Page 8: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder
Page 9: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder
Page 10: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Im besten Fall:

Aber auch dieses Verhalten möglich:

Page 11: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder
Page 12: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Was fehlt?

● Sinnvoller Name für Jar● Version● Abhängigkeiten● Verstecken von internen Klassen● Late Binding, Dynamics

Application

Lib A Lib B

Lib C v1 Lib C v2

Page 13: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

OSGi

● Ursprünglich “Open Service Gateway Initiative” für Embedded Systems

● Heute: Dynamic Module System For Java● Eclipse basiert seit Version 3.0 auf OSGi. ● OSGi Alliance definiert Spezifikation seit

'99– Mitglieder: Nokia, IBM,...

– Aktuelles Release 4.1

http://www.osgi.org

Page 14: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Implementierungen● Equinox

– Unterbau für Eclipse, Common Public License http://www.eclipse.org/equinox/

● Apache Felix– Apache License, http://felix.apache.org

● Makewave Knopflerfish– BSD style license, http://www.knopflerfish.org/

– GUI und Web-Console

Page 15: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Framework

● L0: Execution Environment – Profile definieren Minimum: Mobile, J2SE, EE

● L1: Modules ● L2: Life Cycle

Management ● L3: Service Registry

OS + Hardware

Java Execution Env

Module

Life Cycle

Services

SECURITY

Applications(bundles)

Page 16: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Modules

● ModularisierungdurchBundles

● EigeneClassloader

● Schutz vonPackages

● Versionierung

Page 17: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Lifecycle

INSTALLED

RESOLVED

UNINSTALLED

ACTIVE

STOPPING

STARTING

start

stop

● Jedes Bundlehat Lifecycle

● Bundle Managerist Teil derSpezifikation

Page 18: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Metadaten

● META-INF/MANIFEST.MF– Bundle-Name: test.movieservice

Bundle-SymbolicName: test.movieservice

– Bundle-Version: 1.0.0.SNAPSHOT

– Export-Package: test.movieservice

– Import-Package: test.dto

– BundleActivator: test.movieservice.BundleActivator

Page 19: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder
Page 20: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Probleme

● Jars müssen angepasst werden– Metadaten

● Libraries, die eigene Classloader verwenden– z.B.: Hibernate

● Dynamik der Bundles und Services schwerer zu handhaben

Page 21: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Services - SOA?

● “SOA ist doch was mit Webservices, oder?”

Page 22: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

SOA mit Webservices und XML

http://www.flickr.com/photos/psd/114552560/in/set-72057594085366895/

Page 23: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Services - SOA?

● Webservices bieten Dienste im Netz an und greifen über das Netz auf andere Services zurück. XML dient als Lingua Franka zwischen verschiedenen Plattformen

● Die OSGi Service Platform stellt Services innerhalb einer Java VM zur Verfügung

Page 24: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder
Page 25: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Services

● System Services– Log Service, Preferences Service,

Configuration Admin Service, User Admin Service, ...

● Protocol Services– HTTP Service , UPnP Service, ...

● Other– XML Parser Service, ...

Page 26: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Services

● Manuelle Registrierungclass X implements BundleActivator {public void start(BundleContext context) {

DbService s = new MyDbService();context.registerService(

DbService.class.getName(), s);}

}

Page 27: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Services

● Manuelle VerwendungServiceReference ref =

context.getServiceReference(DbService.class.getName());

if (ref != null) {DbService s = context.lookup(ref);if (s != null) {

s.callDbService();}

}

● Flexibel, aber mühsam

Page 28: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Equinox-Extensions

http://www.eclipsezone.com/articles/extensions-vs-services/images/extensions.png

●Extensions sind Deklarationen ●Lazy Loading●z.B. Menüpunkte

Declarative Services●Deklaration in XML●Kein Lazy Loading

Page 29: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Spring Dynamic Modules for OSGi(tm) Service Platforms

● Wie Spring Framework unter Apache Lizenz

● Spring konfiguriert Anwendungen und kümmert sich um – Injektion und Deklaration von Services

– Transaktionen

– Logging

– Datenbankabstraktion

http://www.springframework.org/osgi

Page 30: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Spring DM● META-INF/spring/*-context.xml

● <osgi:reference id="db4oOsgiService" interface="com.db4o.osgi.Db4oService"/>

● <bean name="MovieServiceDb4o" class="test.movieservice.db4o.MovieServiceImpl" init-method="start" destroy-method="stop"> <property name="db4oService" ref="db4oOsgiService"></property></bean>

● <osgi:service id="db4oMovieService" ref="MovieServiceDb4o" interface="test.movieservice.MovieService"></osgi:service>

Page 31: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

PAX

● Projekte von OPS4J ● Pax-Construct:

– Maven Plugins zum Erstellen, Builden, Verwalten und Deployen von OSGI Komponenten. Eclipse-Konfiguration

– Verwendet Bnd - Bundle Tool

● Pax-runner– Erleichtert das Testen mit mehrere

Implementierungen: Equinox, Felix,...

● Pax-Logging,...

Open Participation Software for Java

Page 32: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

again...

http://i9.photobucket.com/albums/a59/Heynowrcp/spring.jpg

Page 33: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

SpringSource Application Server● Basiert auf OSGI. Verwendet Equinox als

Unterbau. ● Alle Komponenten des Spring-Frameworks

sind bereits OSGI-ready● Basiert auf Spring Dynamic Modules● Erweiterungen für Webentwicklung

– Bietet spezielles Bundle-Repository

– Deploymenthilfen (zB War File oder PAR)

● Lizensiert unter GPL

Page 34: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Summary

● Modularität● Versionierung● Dynamik● Services

– Spring DM

– Equinox Extensions

● Achtung bei noch nicht OSGi-ready Bibliotheken

Page 35: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

ENDE

Danke für die Aufmerksamkeit!

??? Fragen ???

Diskussion

Page 36: OSGi - jsug.atjsug.at/w/images/3/3e/JSUG-Slides-OSGi-Michael_Greifeneder.pdf · OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder

Links● http://www.osgi.org/Specifications/HomePage

● http://www.aqute.biz/OSGi/Presentations

● http://www.eclipse.org/equinox-portal/getstarted.php

● http://www.eclipsecon.org/

● http://developers.sun.com/learning/javaoneonline

● http://neilbartlett.name/blog/osgibook/

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

● http://www.infoq.com/presentations/colyer-server-side-osgi