glassfish v3, osgi equinox felix
DESCRIPTION
GlassFish v3: Java EE 6 OSGi and Eclipse ToolingTRANSCRIPT
1
●Jerome Dochez and Ludovic ChampenoisGlassFish team
●Sun Microsystems, Inc.
GlassFish V3 & OSGi
1
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
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
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).
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
6
OSGi R4 Runtime
OS + Hardware
JDK
Module
Life Cycle
Security
Services
Applications(Bundles)
7
HK2 Module Management Runtime
OS + Hardware
JDK
Module
Life Cycle
Services
Applications(Bundles)
Bundles Repository
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
9
Module Management
RepositoryRepository
Repository
HK2 Services
OSGi Runtime
1. loadModule
2.Get 3.Install
4. return class loader
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
11
GlassFish V3 Runtime with OSGi
GlassFish V3 modules(OSGi + extra metadata)
HK2 Service layer OSGiService Layer
OSGi Bundle management
Random OSGi Bundle
ServiceMapper
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
{
... }
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
14
requests
Runtime
Grizzly
OSGi Runtime
HK2 Services
GlassFish Kernel
Bundles repositories
JRuby/Rails
Web
Security
Naming
Config
Injection
browser
dispatch
services
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
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
17
Container Pluggability
Kernel
Container Runtime
Config Admin commands
GUI Parts
Admin ConsoleCentral Config
client/browser admin invocation
Grizzly Adapter
domain.xmlConsole user
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.