glassfish v3, osgi equinox felix

18
1 Jerome Dochez and Ludovic Champenois GlassFish team Sun Microsystems, Inc. GlassFish V3 & OSGi 1

Upload: ludovic-champenois

Post on 24-May-2015

5.198 views

Category:

Technology


1 download

DESCRIPTION

GlassFish v3: Java EE 6 OSGi and Eclipse Tooling

TRANSCRIPT

Page 1: GlassFish v3, OSGi Equinox Felix

1

●Jerome Dochez and Ludovic ChampenoisGlassFish team

●Sun Microsystems, Inc.

GlassFish V3 & OSGi

1

Page 2: GlassFish v3, OSGi Equinox Felix

2

Introduction

• GlassFish, an Open Source application server built on and with Open Source components :> Maven 2

– build system– module description

> Felix– OSGi module management

> Eclipse Link– Java Persistence Architecture implementation

• V3 is the third open source release of GlassFish

Page 3: GlassFish v3, OSGi Equinox Felix

3

What's new in V3

• Modularity> platform growth> choice of technologies rapidly evolving> based on industry standard OSGi runtime

• Extensible and Embeddable> not limited to traditional Java EE containers> can run in any java or native host process

• Service based architecture> services are defined by contracts and can be easily

substituted> lazy loading based on usage patterns

Page 4: GlassFish v3, OSGi Equinox Felix

4

Modularity in V3

• Modules are great but let's face it, they do nothing just being modules !> A good service based architecture is what you need.

• V3 innovation : > One of the few OSGi enabled application that is completely portable to

any OSGi R4 compliant runtime> allow any type of container to be plugged in.> start all containers and services on demand yielding an unmatched

startup time for a Java EE server.> focus on developer (keeping the already numerous deployer's

features).

Page 5: GlassFish v3, OSGi Equinox Felix

5

Modularity

• Kernel > startup/shutdown sequences> basic services (deployment)> configuration reading

• Services> Cross containers functionalities

– Security, Naming Manager...– Admin Console

• Containers> handle user's applications> independent of each others

Page 6: GlassFish v3, OSGi Equinox Felix

6

OSGi R4 Runtime

OS + Hardware

JDK

Module

Life Cycle

Security

Services

Applications(Bundles)

Page 7: GlassFish v3, OSGi Equinox Felix

7

HK2 Module Management Runtime

OS + Hardware

JDK

Module

Life Cycle

Services

Applications(Bundles)

Bundles Repository

Page 8: GlassFish v3, OSGi Equinox Felix

8

HK2 and OSGi

• Use OSGi as the underlying module management> capable of consuming any OSGi modules> all GlassFish V3 modules are OSGi modules

• HK2 Provides runtime services on top of OSGi :> Repository management> Isolation from OSGi APIs or implementation> Services definition and lookup> MBeans support> Configuration facilities

• HK2 is a separate Open Source project

Page 9: GlassFish v3, OSGi Equinox Felix

9

Module Management

RepositoryRepository

Repository

HK2 Services

OSGi Runtime

1. loadModule

2.Get 3.Install

4. return class loader

Page 10: GlassFish v3, OSGi Equinox Felix

10

Services

• GlassFish V3 use extensively Services to identify extension points like :

> Application Containers (like Web-App, Jruby, Spring)> Administrative Commands

• Services are :

> implementing an interface – Java SE style with a META-INF/services file– OSGi style– HK2

• Can be stateless or statefull

Page 11: GlassFish v3, OSGi Equinox Felix

11

GlassFish V3 Runtime with OSGi

GlassFish V3 modules(OSGi + extra metadata)

HK2 Service layer OSGiService Layer

OSGi Bundle management

Random OSGi Bundle

ServiceMapper

Page 12: GlassFish v3, OSGi Equinox Felix

12

HK2 Service

• Interfaces are declared with @Contract

• Implementations are declared with @Service

• Build system will generate Metadata automatically

@Contract

public interface Startup {...}

@Service

public class ConfigService implements Startup

{

... }

Page 13: GlassFish v3, OSGi Equinox Felix

13

Runtime

• Kernel > startup/shutdown sequences> basic services (deployment)> configuration reading

• Services> Cross containers functionalities

– Security, Naming Manager...– Admin Console

• Containers> handle user's applications> independent of each others

Page 14: GlassFish v3, OSGi Equinox Felix

14

requests

Runtime

Grizzly

OSGi Runtime

HK2 Services

GlassFish Kernel

Bundles repositories

JRuby/Rails

Web

Security

Naming

Config

Injection

browser

dispatch

services

Page 15: GlassFish v3, OSGi Equinox Felix

15

OnDemand and Extensible

• Pay As you Go> containers are started when applications are deployed to

them> startup time is under 2 seconds

• Extensible> Containers (scripting containers)> Administration

– Admin Commands– Configuration– Admin GUI through plugin

Page 16: GlassFish v3, OSGi Equinox Felix

16

GlassFish containers

• Basic Functionalities> handles certain application types> started and stopped on demand

• Optional features> Configuration services (so all containers configuration can be

centrally managed)> administration commands > administration console plugins

Page 17: GlassFish v3, OSGi Equinox Felix

17

Container Pluggability

Kernel

Container Runtime

Config Admin commands

GUI Parts

Admin ConsoleCentral Config

client/browser admin invocation

Grizzly Adapter

domain.xmlConsole user

Page 18: GlassFish v3, OSGi Equinox Felix

18

OSGi integration

• Module management > Add, remove, update installed modules

• OSGi as a container !> Treat OSGi just like the web container, bundles are

deployed to it.

• Converged Applications> Started investigating Java EE 6 + OSGi converged

applications :– Dependencies in OSGi– Lifecycle still governed by Java EE.