Top Banner
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
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

Oct 18, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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