enterprise applications with osgi and springsource dm server€¦ · osgi-enabled web deployment...

46
Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. Enterprise Applications with OSGi and SpringSource dm Server Eberhard Wolff – SpringSource Sam Brannen – OpenCredo Jazoon – 24 June 2009 – Zürich, Switzerland

Upload: others

Post on 02-Jun-2020

44 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited.

Enterprise Applications with OSGi and SpringSource dm Server

Eberhard Wolff – SpringSource Sam Brannen – OpenCredo

Jazoon – 24 June 2009 – Zürich, Switzerland

Page 2: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 2

Eberhard.Wolff (@) SpringSource.com

•  Regional Director of German speaking countries and Principal Consultant

•  Author of several articles and books •  First German book on Spring •  Speaker at national and international

conferences •  Blog: http://jandiandme.blogspot.com/

Page 3: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 3

SpringSource

•  Employs most committers for Spring •  Committers for Tomcat, ActiveMQ, Apache

HTTP •  New: tc Server / dm Server •  Groovy / Grails •  Hyperic

•  Training •  Consulting •  Subscription / Support

Page 4: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 4

Sam.Brannen (@) OpenCredo.com

•  Software Consultant •  Spring Framework Core Developer •  Previous SpringSource dm Server developer:

OSGi-enabled Web deployment models, Tomcat integration, Test Framework

•  Java developer with 10+ years' experience •  Regular speaker at conferences on Spring, dm

Server, Java, and testing •  Co-author of Spring in a Nutshell; chief

technical reviewer for Spring Recipes

Page 5: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 5

Open Credo

•  Experts in Open Source application development

•  Consulting •  Coaching •  Management Training •  Committers for numerous Spring projects

– Spring Framework – Spring Integration – Spring .NET

Page 6: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited.

Why another Application Server?

Page 7: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 7

OSGi’s Promise of Modularity

•  Modularization is key to maintainable software

•  Application Server itself is modularized – No more "one size fits all" –  Java EE 6 introduces profiles

•  On the client and in the embedded world OSGi has succeeded as a standard for modularization

•  OSGi enters the enterprise server market…

Page 8: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 8

Building on OSGi

•  Almost all app server vendors base their systems on OSGi (JBoss, Sun, Oracle, IBM)

•  But none offers OSGi as a programming model for the customer

•  Why shouldn't the customer be as empowered as the app server vendor?

•  Enter SpringSource dm Server…

Page 9: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited.

OSGi

Page 10: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 10

It's a module system

•  Partition a system into a number of modules – "bundles"

•  Dynamic: bundles can be installed, started, stopped, uninstalled and updated –  ...at runtime

•  better operations

•  Strict visibility rules •  Resolution process satisfies dependencies of a

module •  Understands versioning

Page 11: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 11

It's even service-oriented

•  Bundles can publish services… dynamically!

•  Service Registry allows other bundles to consume services

•  Services come and go at runtime – … transparently when using Spring-DM

Page 12: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 12

OSGi Bundle

•  The fundamental unit of deployment and modularity in OSGi

•  Just a JAR file –  with additional entries in META-INF/MANIFEST.MF

•  Common manifest headers: –  Bundle-SymbolicName –  Bundle-Version –  Bundle-Name –  Bundle-ManifestVersion –  Bundle-Vendor

Page 13: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 13

Export & Import Packages

Declare package-level visibility and dependencies of your bundle.

Export-Package: com.xyz.bar Export-Package: com.xyz.bar;version="1.0.5"

Import-Package: com.xyz.foo Import-Package: com.xyz.foo;version="1.0.3" Import-Package: com.xyz.foo;version="[1.0.3,1.0.3]" Import-Package: com.xyz.foo;version="[1.0.3,1.1.0)", com.xyz.bar;version="[1.0.3,2.0.0)"

>= 1.0.3; e.g., 1.0.3, 1.0.3.GA, 1.0.4, 2.0, etc.

Page 14: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 14

Publish a Service

ServiceRegistration reg = bundleContext.registerService( Bar.class.getName(), myBarService);

... reg.unregister();

Page 15: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 15

Consume a Service

ServiceReference ref =

bundleContext.getServiceReference( Bar.class.getName()); Bar bar = (Bar) bundleContext.getService(ref);

...

bundleContext.ungetService(ref); // bar should no longer be used here

Complex… Potential resource leaks!

Page 16: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited.

OSGi in the Enterprise

Page 17: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 17

OSGi as a Server Platform

OSGi Service Platform

Enterprise Server Bundles

Transaction Management

OSGi Application

Web Container

...

Web Application

Features might be added on demand

Page 18: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 18

OSGi for Enterprise Applications

•  Dynamic services are hard to develop (boiler plate code)

•  Basic infrastructure for OSGi + Web has to be done by yourself

•  What do we do about WARs? •  How do you keep a service or type from

leaking out of an application? – The notion of an application does not exist in

OSGi…

•  Many enterprise libraries are not suited for OSGi

Page 19: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 19

Enterprise Libraries under OSGi

•  Class and resource loading problems –  class visibility –  context class loader is undefined in OSGi –  resources in META-INF – …

•  Not directly supported: libraries with multiple bundles

Page 20: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 20

Example: Class Visibility

Data Layer Bundle

Domain Model Bundle

<Export-Pkg>

Hibernate Bundle

<Export-Pkg>

Import-Package Import-Package

Domain types & mapping files

SessionFactory

Page 21: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 21

Good News for OSGi in the Enterprise

•  Spring 2.5 and many other Spring projects are OSGi-ready – modules shipped as bundles – all class loading behaves correctly under OSGi

•  Hundreds of other enterprise libraries are now also packaged for use under OSGi in the SpringSource Enterprise Bundle Repository

Page 22: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited.

Spring Dynamic Modules & SpringSource dm Server

Page 23: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 23

Spring-DM: ApplicationContext

•  Configuration files in /META-INF/spring •  Automatically merged •  ..and an ApplicationContext is created

– one per Bundle

•  Spring-DM manages the ApplicationContext lifecycle

•  OSGi manages the Bundle lifecycle

Page 24: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 24

Spring-DM: Service Registry (1/2)

<beans ...> <osgi:service ref="customerDAO" interface="dao.ICustomerDAO" /> <osgi:reference id="dataSource" interface="javax.sql.DataSource" /> </beans>

Also supports filters, listeners, collections (lists and sets), etc.

Contrast with programmatic API

Page 25: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 25

Spring-DM: Service Registry (2/2)

•  Dynamic services handled automatically –  Instances and collections are proxied – Method calls are buffered – Configurable timeouts

•  Purely declarative

Page 26: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 26

Out-of-scope for Spring-DM

•  Easy import of bundles and libraries •  Using JPA or Hibernate in OSGi •  Seamless Web support •  Notion of an application

•  Enter SpringSource dm Server…

Page 27: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 27

dm Server Platform • Built on Equinox • Modular architecture

– Subsystems – Bundles

• Small footprint • Modular profiles • Bundle repository • Library provisioning • Serviceability

– FFDC – Logging – Tracing

Page 28: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 28

Importing & Exporting Types

•  Plain OSGi + … •  Import-Library and Import-Bundle

– Library imports bundle imports – Bundle imports package imports – OSGi runtime semantics remain the same

Import-Library: org.springframework.spring; version="[2.5.6,3.0)"

Import-Bundle: com.springsource.org.hibernate; version="[3.2.6.ga,3.2.6.ga]"

Page 29: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 29

Example Application Bundles

•  Web •  Service •  API

– Only interfaces and domain classes

–  Implementation can be exchanged

•  Could add infrastructure: data source, transaction manager, etc.

API

Service

Web Export

Import

Page 30: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 30

Bundles & Types

•  Only dependencies on the API –  Implementation can be exchanged, …

even at runtime

•  No direct dependencies on any implementation

•  Not shown: dependencies on external bundles

•  … can be installed in dm Server •  … modular middleware!

Page 31: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 31

Bundles & Services

API

Service

Web

Services: Publish / Consume

Service Registry Type:

Import

publish

consume

Page 32: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 32

Bundles & Services

•  Infrastructure can use the same principle as application services –  DataSource and PlatformTransactionManager

are just services

Can I still run on plain Java EE? •  Yes: instead of OSGi Service directly inject

Spring Beans •  No more dynamic services / modularization •  No code change needed •  Application can run on Java EE or OSGi

Page 33: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 33

PAR •  Packaging format for all

modules in an app.

•  JAR with Application-* manifest headers

•  Single unit: deploy, refresh, undeploy

•  Application boundaries –  Scoping of types / services –  DataSource does not leak

out of the application –  Hibernate can change

domain objects

Page 34: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited.

Web Migration: From WAR to PAR

Page 35: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 35

Web Application Deployment Options •  Standard Java EE WAR

–  supported as is –  converted into an OSGi

bundle •  Shared Libraries WAR

–  WAR + OSGi package imports

–  Eradicate library bloat of monolithic Java EE WARs

•  Shared Services WAR –  Uses OSGi services with

Spring's <osgi:reference> •  Web Module

Page 36: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 36

Web Module

•  Deployment & packaging option for OSGi-compliant web applications: stand-alone or within a PAR

•  OSGi bundle: structure similar to Shared Services WAR + MODULE-INF for resources

•  Reduced configuration for Spring MVC applications via Web manifest headers –  Auto-configuration of Spring MVC's DispatcherServlet

–  Single WebApplicationContext and no Root WAC

•  Additional configuration via web.xml fragments

Page 37: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 37

Web Manifest Headers

Manifest-Version: 1.0 Bundle-ManifestVersion: 2 ... Module-Type: Web Web-ContextPath: /my-web-app Web-DispatcherServletUrlPatterns: *.do

Page 38: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 38

DEMO

Web Module

Page 39: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited.

Roadmap

Page 40: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 40

dm Server 2.0 Roadmap •  SpringSource dm Server 2.0: 3rd quarter 2009 •  Cloning bundles

–  Solves problems around static variables and more

•  Shared Repository –  Share a single repository among several servers

•  Plan Files –  Define an application as a collection of bundles –  Does not contain the bundles, more flexible

•  Distributed and improved management –  Operation on a group of servers –  Like tc Server for Tomcat

•  Modular Web Applications

Page 41: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 41

Support for Enterprise OSGi Standards

•  RFC 66: Web Container for OSGi (RI based on dm Server)

•  RFC 119: Distributed OSGi •  RFC 124: Blueprint Service (RI based on

Spring-DM) •  RFC 139: JMX interface for OSGi •  RFC 142: JNDI and OSGi integration

Page 42: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited.

Summary

Page 43: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 43

Summary: SpringSource dm Server

•  Based on proven, established modularization technology (OSGi)

•  Based on proven, established Web technology (Tomcat)

•  Spring and Spring-DM programming models: easy to use

•  Solves OSGi problems (e.g., context class loading)

•  Dynamic updates of running modules •  Lightweight

Page 44: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 44

Summary: Deployment Options

•  OSGi bundles •  PAR = logical & physical application

boundary •  dm Server supports multiple Web

deployment formats and therefore migration –  Java EE WAR → Shared Libraries WAR →

Shared Services WAR → Web Module

Page 45: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited. 45

•  OSGi: http://osgi.org

•  Spring Framework: http://springframework.org

•  Spring-DM: http://springframework.org/osgi

•  SpringSource dm Server: http://springframework.org/dmserver

•  SpringSource Team Blog: http://blog.springsource.com

•  German Getting Started: http://www.dpunkt.de/buecher/3231.html

•  OpenCredo: http://opencredo.com

Resources

Page 46: Enterprise Applications with OSGi and SpringSource dm Server€¦ · OSGi-enabled Web deployment models, Tomcat integration, Test Framework • Java developer with 10+ years' experience

Copyright 2008-2009 SpringSource and Open Credo. Copying, publishing or distributing without express written permission is prohibited.

Questions?

Sam Brannen [email protected]

http://OpenCredo.com

Eberhard Wolff [email protected]

http://SpringSource.com