20
Apache Aries An Open Source project for Enterprise OSGi Applications OSGi Tooling Demo for EclipseDemoCamp

OSGi tooling for RTP Eclipse DemoCamp

Embed Size (px)

DESCRIPTION

My teammate Ted Kirby is giving a demo at RTP Eclipse DemoCamp presentation on November 10, 2010. This is the 15 minute version of OSGi tooling in Eclipse.See event information http://wiki.eclipse.org/Eclipse_DemoCamps_November_2010/RTPSee Demo details http://bit.ly/eclipsedemocampDownload original file http://bit.ly/b40pOS

Citation preview

Page 1: OSGi tooling for RTP Eclipse DemoCamp

Apache AriesAn Open Source project for Enterprise OSGi Applications

OSGi Tooling Demo for EclipseDemoCamp

Page 2: OSGi tooling for RTP Eclipse DemoCamp

2

Apache Aries – Project Overview

Who am I?

Ted Kirby - IBM Software Developer

Demo Reference

http://bit.ly/eclipsedemocamp

Slide deck adapted from:• https://svn.apache.org/repos/asf/incubator/aries/slides/

Apache%20Aries%20-%20Overview.ppt

Page 3: OSGi tooling for RTP Eclipse DemoCamp

3

Apache Aries – Project Overview

What is it?

Aries is a set of JEE components that have been fit into the OSGi model according to the Blueprint container specification. • http://incubator.apache.org/aries/

The OSGi framework that Aries runs in could be Equinox or Felix.

Page 4: OSGi tooling for RTP Eclipse DemoCamp

4

Apache Aries – Project Overview

Aries Content includes…

Blueprint container

JPA integration

JTA integration

JMX

JNDI integration

Application assembly and deployment

META-INF/services handler

Samples, documentation, integrator’s guide

http://svn.apache.org/repos/asf/incubator/aries/trunk/

Page 5: OSGi tooling for RTP Eclipse DemoCamp

5

Apache Aries – Project Overview

Aries Blueprint ContainerA DI container standardizing established Spring conventions

XML Blueprint definition describes component configuration and scope• Optionally publish and consume components to/from OSGi service

registry.

Managed beans

publishesservice

consumesservice

A static assembly and

configuration of components

(POJOs)Blueprint bundle

OSGI-INF/blueprint/blueprint.xml

Page 6: OSGi tooling for RTP Eclipse DemoCamp

6

Apache Aries – Project Overview

RAD V8

OSGi App Devt Tool

WAS v7 OSGi FeP Test EnvironmentWAS v7 OSGi FeP Test Environment

Eclipse

WTP 3.6WTP 3.6 PDEPDE

Graphical Application Editor

Graphical Application Editor

Developer Productivity(e.g. content assist, validation, re-factoring)

Developer Productivity(e.g. content assist, validation, re-factoring)

Graphical Creation Wizards

Graphical Creation Wizards

Creation / Import / Export Tools

Creation / Import / Export Tools

Tutorials and DocumentationTutorials and

Documentation

Publish and Run

WAS v7 Server Support

WAS v7 Server Support

Free Eclipse Plugin for OSGi ApplicationsGraphical tools to develop OSGi applications and bundles Includes features that increase developer productivity Creates OSGi Applications for any Aries-based server runtime. Eclipse WTP 3.6 (Helios) required

http://marketplace.eclipse.org/content/ibm-rational-development-tools-osgi-applications

OSGi Application Development Tools

Blueprint Graphical Editor

Blueprint Graphical Editor

Bundle ExplorerBundle Explorer

SCA / OSGi IntegrationSCA / OSGi Integration

OSGi Application Support in RAD V8 Provide integrated development and test of OSGi Applications on the WebSphere platform

Integrated with Web Tools, JEE productivity tools, and other capabilities in RAD Supports deployment to WAS v7 OSGi FeP and includes the FeP in the WAS Test Environment SCA support for OSGi Applications Additional OSGi tools:

Graphical and wiring editor for Blueprint Bundle Explorer Tools for WAS OSGi extensions / Value-add

http://www-01.ibm.com/software/awdtools/developer/application/index.html

Page 7: OSGi tooling for RTP Eclipse DemoCamp

7

Apache Aries – Project Overview

Backup

Page 8: OSGi tooling for RTP Eclipse DemoCamp

8

Apache Aries – Project Overview

Aries Blueprint ContainerA DI container standardizing established Spring conventionsXML Blueprint definition describes component configuration and scope

• Optionally publish and consume components to/from OSGi service registry.

Simplifies unit test outside either Java EE or OSGi r/t.

The Aries BP container implementation is highly extensible:

• Namespace handlers supported to extend the Blueprint definitions

• Bean interceptors can be registered by handlers

Other Aries components contribute handlers – “jpa” and “jta” handlers.

Some other Aries components are implemented as Blueprint bundles themselves

• e.g. JPA container

Managed beans

publishesservice

consumesservice

A static assembly and

configuration of components

(POJOs)Blueprint bundle

OSGI-INF/blueprint/blueprint.xml

Page 9: OSGi tooling for RTP Eclipse DemoCamp

9

Apache Aries – Project Overview

Aries JPA Container – Application Managed PUs

Provides support for “Application managed” JPA.Each persistence bundle has its standard JPA metadata located through the Meta-Persistence bundle header.JPA Container locates a JPA Provider which can service the PU and registers a Provider-created EntityManagerFactory service for each PU in each persistence bundle• EMF service lifecyce follows

the persistence bundle lifecycle

JPA Provider gets persistence bundle classloader from PUInfo.

org.apache.aries.jpa.container

Persistence bundleBundle Manifest

…Meta-Persistence: OSGI-INF/persistence.xml

OSGI-INF/

persistence.xml

Used to build the EntityManagerFactory

Managed EntityManagerFactory Registered on behalf of the persistence bundle

JPA Provider

javax.persistence.spi.PersistenceProviderservice

createContainerEMF(PersistenceUnitInfo)

Uses

RegistersEntityManagerFactoryservice per PU

Entities

Uses

Page 10: OSGi tooling for RTP Eclipse DemoCamp

10

Apache Aries – Project Overview

Aries JPA Container – Blueprint Integration

The Aries JPA container context bundle provides a blueprint namespace for dependency injection of managed JPA resources.

Managed persistence units (EntityManagerFactory objects) can be injected with or without a JTA Transaction Services implementation.

Managed persistence contexts (EntityManager objects) are only available with a JTA Transaction Services implementation.

Both managed persistence units and managed persistence contexts behave as per the JPA specification.

Example blueprint with JPA resource injection and container-managed transactions:

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:jta="http://aries.apache.org/xmlns/transactions/v1.0.0"xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0">

<bean id=“appMgd“ class=“com.acme.AppManaged”> <jpa:unit property="emf" unitname="myUnit" /> </bean> <bean id="containerMgd“ class=“com.acme.Container”> <jpa:context property="em" unitname=“myUnit“/> <jta:transaction method=“*" value=“Required" /> </bean>

</blueprint>

Page 11: OSGi tooling for RTP Eclipse DemoCamp

11

Apache Aries – Project Overview

Aries JTA integration

Apache Aries integrates the OSGi Transaction Service Reference Implementation (Apache Geronimo Transaction Manager).

Also: transaction-blueprint bundle registers a “jta” Blueprint namespace handler to provide container-managed transactions for BP components

Page 12: OSGi tooling for RTP Eclipse DemoCamp

12

Apache Aries – Project Overview

Aries JMX Integration

Implementation of OSGi JMX specification.

Aries JMX bundle automatically registers the JMX MBeans into any javax.management.MBeanServer service in the OSGi Service Registry.

JMX OSGi Manager

<<MBean>>FrameworkMBean

<<MBean>>Bundle StateMBean

<<MBean>>Service StateMBean

<<MBean>>Package StateMBean

<<MBean>>Configuration Admin MBean

<<MBean>>Permission Admin MBean

<<MBean>>Provisioning ServiceMBean

<<MBean>>User Admin MBean

PermissionAdmin

Configuration Admin

Provisioning Service

User Admin

MBean Server

<<MBean>>BlueprintMBean

Framework MBeans

Compendium MBeans

Additional Aries MBeans

Page 13: OSGi tooling for RTP Eclipse DemoCamp

13

Apache Aries – Project Overview

Aries JNDI integration

Provides JNDI-based access to OSGi Service Registry

<blueprint xmlns=...> <bean id="bloggingServiceComponent" class="org.apache.aries.BloggingServiceImpl"> </bean> <service ref="bloggingServiceComponent" interface="org.apache.aries.samples.blog.api.BloggingService"/> ...</blueprint>

registerService

InitialContext ic = new InitialContext();BloggingService blog= ic.lookup("osgi:services/" + BloggingService.class.getName());

getService

A way for a Web component to access a Blueprint componentOSGi

Service Registry

JNDI Context

Page 14: OSGi tooling for RTP Eclipse DemoCamp

14

Apache Aries – Project Overview

Aries Application Assembly and DeployThe “application” project provides pluggable infrastructure to support deployment of an application consisting of a collection of bundles as a logical unit from an enterprise bundle archive (archive with .eba extn).• An “Enterprise OSGi Application”.

Constituent bundles may be contained (“by-value”) in the .eba archive or referenced in APPLICATION.MF

Only explicitly declared Services are exposed from the application.

Config by exception - absence of APPLICATION.MF means:• application content is the set of bundles contained by-value plus any

repository-hosted dependencies identified during deployment.

Application Manifest

Enumerates constituent bundles

Declares Application “externals”

blog.eba

blog-persistence.jar

blog.jar

blog-servlet.jar

Bundle RepositoryBundle Repository

json4j.jar

Page 15: OSGi tooling for RTP Eclipse DemoCamp

15

Apache Aries – Project Overview

Aries Application Assembly and Deploy

org.apache.aries.application.management

Aries Application = createApplication(eba)

Pluggable ApplicationResolver- NoOpResolver- OBRAriesResolver

Pluggable BundleConverters- WabConverterService

Manifest-Version: 1.0

Application-ManifestVersion: 1.0

Application-Name: Blog Application

Application-SymbolicName: aries.sample.blog

Application-Version: 1.0

Application-Content:

aries.sample.blog; version="[1.0.0,1.1.0)",

aries.sample.blog-api; version="1.0.0",

aries.sample.blog-persistence; version="1.0.0",

aries.sample.blog-servlet; version="[1.0.0,1.0.0]”

Manifest-Version: 1.0

Deployment-ManifestVersion: 1.0

Application-Name: Blog Application

Application-SymbolicName: aries.sample.blog

Application-Version: 1.0

Deployed-Content:

aries.sample.blog; version=1.0.0,

aries.sample.blog-api; version=1.0.0,

aries.sample.blog-persistence; version=1.0.0,

aries.sample.blog-servlet; version=1.0.0,

com.ibm.json.java; version=1.0.0

Application Manifest (developer/assembler authored artefact)Enumerates constituent bundles and allowable version rangesDeclares Application “externals”

Deployment Manifest (generated during createApplication)Transitively closed description of all bundles resolved at specific versions to “freeze-dry” the application.

Page 16: OSGi tooling for RTP Eclipse DemoCamp

16

Apache Aries – Project Overview

Aries META-INF/services SPI handler

Common Java SE pattern for loading service provider interfaces: config file in META-INF/services containing class name of provider implementation. For example JPA defines:META-INF/services/javax.persistence.spi.PersistenceProvider• Problematic pattern for OSGi where a client import of

META-INF/services gets resolved to one provider.Aries SPI-Fly project provides a generic solution

org.apache.aries.spifly

Registers service with propertyspi.provider.url = URL to the associated

resource in OSGI-INF/services

Bundle Manifest

…SPI-Provider:

OSGI-INF/services

“org.acme.impl.class”

Service Provider bundle

reads

Page 17: OSGi tooling for RTP Eclipse DemoCamp

17

Apache Aries – Project Overview

Aries Samples

AriesTrader – Apache Geronimo DayTrader Java EE benchmark application converted to OSGi Application using web and blueprint components• Objective is to demonstrate best practices

• Performance benchmarking

Blog Sample – New application to demonstrate Aries features

The Samples illustrate how to run Aries applications on a standard OSGi f/w (e.g. Equinox) + Aries + dependencies (Derby DB, PaxWeb servlet container).

http://incubator.apache.org/aries/samples.html

Page 18: OSGi tooling for RTP Eclipse DemoCamp

18

Apache Aries – Project Overview

Example “Blog” Application Architecture

BloggingService

BlogPersistence

Serviceblog-servlet

Web application bundle

OSGI-INF/

persistence.xml

WEB-INF/

web.xml OSGI-INF/blueprint/blueprint.xml

OSGI-INF/blueprint/blueprint.xml

JNDI EM

blog.eba

blog

blog-persistence

blog-api

Page 19: OSGi tooling for RTP Eclipse DemoCamp

19

Apache Aries – Project Overview

Current Aries Consumers

Aries SNAPSHOT builds available right now

Aries 0.1 Release content under discussion and will be available soon.

Aries components are currently used by:• Apache Geronimo

• Apache Felix Karaf

• JBossOSGi

• WebSphere Application Server

Page 20: OSGi tooling for RTP Eclipse DemoCamp

20

Apache Aries – Project Overview

Futures

There are many new application-centric features that Aries may develop including:• message-driven blueprint components and services

• declarative role-based security for blueprint components

• annotation-based alternative to XML configuration

• resource-reference metadata and bindings (Original Proposal: http://wiki.apache.org/incubator/AriesProposal)

Interested in getting involved?• http://incubator.apache.org/aries/gettinginvolved.html