SlideShare a Scribd company logo
Apache Aries
An Open Source project for
Enterprise OSGi Applications
Apache Aries – Project Overview


Agenda

  History


  Community


  Content


  Consumers


  Future



                                              2
Apache Aries – Project Overview


History

 “Aries” created as a new Apache incubator project in Sep 2009
 focused on:
  • the programming model aspects of OSGi applications in an
      enterprise environment
  • building a broad development community to encourage
      implementation and adoption of EEG specs
  • providing an environment to collaborate and experiment with
      new technologies to inform further EEG standards.
 Independent of
  • OSGi framework provider and integration/server runtime
 Initial contribution included the Blueprint container implementation
 developed originally by the Apache Geronimo community.
 Web Site for all resources and documentation:
 http://incubator.apache.org/aries/



                                                                        3
Apache Aries – Project Overview


Community

 In a short space of time a community of 43 committers
 has been formed involving contributors from
 Ericsson, IBM, JBoss, LinkedIn, Progress, ProSyst, SAP
 and individuals
  • http://incubator.apache.org/aries/people.html
 Creation of community is one of the primary goals of the
 Apache Incubator:
  • To demonstrate that there is a broad community of interest
  • To help newcomers to Apache learn the ropes.




                                                                 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/


                                                         5
Apache Aries – Project Overview


      Aries Blueprint Container
       A DI container standardizing established Spring conventions
       XML 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
                        Managed beans
                                                              highly extensible:
                                                                • Namespace handlers supported to extend
   publishes                                       consumes
                                                    service       the Blueprint definitions
    service
                                                                • Bean interceptors can be registered by
                             OSGI-INF/blueprint/                  handlers
     A static                  blueprint.xml
 assembly and
configuration of
                                                              Other Aries components contribute handlers –
  components
    (POJOs)
                         Blueprint bundle                     “jpa” and “jta” handlers.
                                                              Some other Aries components are
                                                              implemented as Blueprint bundles themselves
                                                                • e.g. JPA container

                                                                                                        6
Apache Aries – Project Overview


Aries JPA Container – Application Managed PUs
                                         Persistence bundle                  Managed EntityManagerFactory
  Provides support for “Application                                          Registered on behalf of the
                                         Bundle Manifest
  managed” JPA.                          …
                                                                             persistence bundle

  Each persistence bundle has its        Meta-Persistence:
                                         OSGI-INF/persistence.xml
  standard JPA metadata located
  through the Meta-Persistence                             OSGI-INF/
                                         Entities
  bundle header.                                       persistence.xml                  Registers
                                                                                        EntityManagerFactory
  JPA Container locates a JPA                                                           service per PU
  Provider which can service the PU                          Uses

  and registers a Provider-created                                  org.apache.aries.jpa.container
  EntityManagerFactory service for
  each PU in each persistence                       Uses                 Used to build the
  bundle                                                                 EntityManagerFactory

   • EMF service lifecyce follows
      the persistence bundle                                               createContainerEMF
                                                                           (PersistenceUnitInfo)
      lifecycle                               JPA Provider
  JPA Provider gets persistence
                                                                         javax.persistence.spi.
  bundle classloader from PUInfo.                                        PersistenceProvider
                                                                         service



                                                                                                               7
Apache Aries – Project Overview



Aries JPA Container – Blueprint Integration
  The Aries JPA container context                 Example blueprint with JPA resource
  bundle provides a blueprint                     injection and container-managed
  namespace for dependency injection              transactions:
  of managed JPA resources.
  Managed persistence units                  <blueprint
  (EntityManagerFactory objects) can         xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
                                             xmlns:jta="http://aries.apache.org/xmlns/transactions/v1.0.0"
  be injected with or without a JTA          xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0">
  Transaction Services
                                              <bean id=“appMgd“ class=“com.acme.AppManaged”>
  implementation.                              <jpa:unit property="emf" unitname="myUnit" />
                                              </bean>
  Managed persistence contexts
  (EntityManager objects) are only            <bean id="containerMgd“ class=“com.acme.Container”>
                                               <jpa:context property="em" unitname=“myUnit“/>
  available with a JTA Transaction             <jta:transaction method=“*" value=“Required" />
  Services implementation.                    </bean>

  Both managed persistence units and         </blueprint>
  managed persistence contexts
  behave as per the JPA specification.


                                                                                                        8
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


                                                         9
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.
                                          <<MBean>>        <<MBean>>        <<MBean>>
                                          Fram ework       Bund le State    Blue print
                                          MB ean           MB ean           MB ean
 Framework MBeans
                                                                                  <<MBean>>         PermissionAdmin
                                                                                  Permis sion
 Compendium MBeans                                                                Ad min MB ean
                           MBean Server
                                                           JMX OSGi               <<MBean>>         Configur ation Admin
 Additional Aries MBeans                                   Manager                Co nfiguratio n
                                                                                  Ad min MB ean

                                                                                  <<MBean>>         Provisioning Service
                                                                                  Provisi onin g
                                                                                  ServiceMBean

                                          <<MBean>>        <<MBean>>              <<MBean>>         User Admin
                                          Service St ate   Package St ate         User Adm in
                                          MB ean           MB ean                 MB ean




                                                                                                                           10
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
                                A way for a Web component to access a
     OSGi                       Blueprint component
Service Registry
     getService
                                 InitialContext ic = new InitialContext();
                                 BloggingService blog= ic.lookup("osgi:services/"
   JNDI Context                                  + BloggingService.class.getName());




                                                                                       11
Apache Aries – Project Overview

   Aries Application Assembly and Deploy
     The “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.

 Bundle Repository
Bundle Repository
                                           Application Manifest
                                           Enumerates constituent bundles
                                                                              blog-persistence.jar
     json4j.jar                            Declares Application “externals”
                                                                                    blog.jar

                                          blog.eba                              blog-servlet.jar



                                                                                                     12
Apache Aries – Project Overview


     Aries Application Assembly and Deploy
                                                                                           Pluggable
                                                                                           ApplicationResolver
                                                                                           - NoOpResolver
     Aries Application =                                                                   - OBRAriesResolver
     createApplication(eba)
                                    org.apache.aries.application.management


                                                                                           Pluggable BundleConverters
                                                                                           - WabConverterService


                                                                      Manifest-Version: 1.0
Manifest-Version: 1.0                                                 Deployment-ManifestVersion: 1.0
Application-ManifestVersion: 1.0                                      Application-Name: Blog Application
Application-Name: Blog Application                                    Application-SymbolicName: aries.sample.blog
Application-SymbolicName: aries.sample.blog                           Application-Version: 1.0
Application-Version: 1.0                                              Deployed-Content:
Application-Content:                                                    aries.sample.blog; version=1.0.0,
  aries.sample.blog; version="[1.0.0,1.1.0)",                           aries.sample.blog-api; version=1.0.0,
  aries.sample.blog-api; version="1.0.0",                               aries.sample.blog-persistence; version=1.0.0,
  aries.sample.blog-persistence; version="1.0.0",                       aries.sample.blog-servlet; version=1.0.0,
  aries.sample.blog-servlet; version="[1.0.0,1.0.0]”                    com.ibm.json.java; version=1.0.0

Application Manifest (developer/assembler authored artefact)          Deployment Manifest (generated during createApplication)
Enumerates constituent bundles and allowable version ranges           Transitively closed description of all bundles resolved at
Declares Application “externals”                                      specific versions to “freeze-dry” the application.



                                                                                                                                   13
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


                                                                   Service Provider bundle
                  org.apache.aries.spifly                  reads
                                                                    Bundle Manifest
                                                                    …
                                                                    SPI-Provider:
                         Registers service with property
                spi.provider.url = URL to the associated
                         resource in OSGI-INF/services
                                                                                     OSGI-INF/services
                                                                                    “org.acme.impl.class”




                                                                                                            14
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



                                                             15
Apache Aries – Project Overview


Example “Blog” Application Architecture



              blog.eba
                                                         blog-api




   Web application bundle

                            JNDI                                                                EM
        WEB-INF/                       Blogging                                           OSGI-INF/
                                                                            Blog
         web.xml                       Service     OSGI-INF/blueprint/                  persistence.xml
                                                     blueprint.xml       Persistence
                                                                          Service
      blog-servlet                                                                     OSGI-INF/blueprint/
                                                         blog                            blueprint.xml

                                                                                       blog-persistence




                                                                                                             16
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




                                                          17
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




                                                                        18

More Related Content

What's hot (20)

PDF
Java(ee) mongo db applications in the cloud
Shekhar Gulati
 
PDF
In the Brain of Hans Dockter: Gradle
Skills Matter
 
PDF
Indic threads pune12-java ee 7 platformsimplification html5
IndicThreads
 
PDF
Java Enterprise Edition Concurrency Misconceptions
Haim Yadid
 
PDF
Commons Pool and DBCP
Phil Steitz
 
PPTX
Don't Wait! Develop Responsive Applications with Java EE7 Instead
WASdev Community
 
PDF
Lecture 7 Web Services JAX-WS & JAX-RS
Fahad Golra
 
PDF
50 new features of Java EE 7 in 50 minutes
Antonio Goncalves
 
ODP
Spring 4 advanced final_xtr_presentation
sourabh aggarwal
 
PDF
Declarative Services
Felix Meschberger
 
PDF
the Spring 4 update
Joshua Long
 
PDF
A tour of (advanced) Akka features in 40 minutes
Johan Janssen
 
PDF
5050 dev nation
Arun Gupta
 
PDF
Spring 4 - A&BP CC
JWORKS powered by Ordina
 
KEY
Multi Client Development with Spring
Joshua Long
 
KEY
A Walking Tour of (almost) all of Springdom
Joshua Long
 
PDF
Dropwizard
Scott Leberknight
 
PPTX
Batching and Java EE (jdk.io)
Ryan Cuprak
 
PDF
Short intro to scala and the play framework
Felipe
 
PPTX
Java Play Restful JPA
Faren faren
 
Java(ee) mongo db applications in the cloud
Shekhar Gulati
 
In the Brain of Hans Dockter: Gradle
Skills Matter
 
Indic threads pune12-java ee 7 platformsimplification html5
IndicThreads
 
Java Enterprise Edition Concurrency Misconceptions
Haim Yadid
 
Commons Pool and DBCP
Phil Steitz
 
Don't Wait! Develop Responsive Applications with Java EE7 Instead
WASdev Community
 
Lecture 7 Web Services JAX-WS & JAX-RS
Fahad Golra
 
50 new features of Java EE 7 in 50 minutes
Antonio Goncalves
 
Spring 4 advanced final_xtr_presentation
sourabh aggarwal
 
Declarative Services
Felix Meschberger
 
the Spring 4 update
Joshua Long
 
A tour of (advanced) Akka features in 40 minutes
Johan Janssen
 
5050 dev nation
Arun Gupta
 
Spring 4 - A&BP CC
JWORKS powered by Ordina
 
Multi Client Development with Spring
Joshua Long
 
A Walking Tour of (almost) all of Springdom
Joshua Long
 
Dropwizard
Scott Leberknight
 
Batching and Java EE (jdk.io)
Ryan Cuprak
 
Short intro to scala and the play framework
Felipe
 
Java Play Restful JPA
Faren faren
 

Similar to Apache Aries Overview (20)

ODP
Apache Aries Blog Sample
Skills Matter
 
PPT
OSGi Persistence With EclipseLink
Shaun Smith
 
PDF
HowTo Build an OSGI EJB3 Server
ekkehard gentz
 
PDF
TDC 2011: OSGi-enabled Java EE Application
Arun Gupta
 
PPT
Java Persistence API (JPA) - A Brief Overview
Craig Dickson
 
PPT
OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune...
IndicThreads
 
PDF
GlassFish REST Administration Backend
Arun Gupta
 
PDF
GlassFish REST Administration Backend at JavaOne India 2012
Arun Gupta
 
PDF
OSGi tech session
Bram de Kruijff
 
KEY
Beyond OSGi Software Architecture
Jeroen van Grondelle
 
PDF
OSGi Community Event 2010 - A Crash Course in OSGi Application Development
mfrancis
 
PDF
JavaEE 6 and GlassFish v3 at SFJUG
Marakana Inc.
 
PDF
OSGi Community Event 2010 - Enterprise OSGi in WebSphere and Apache Aries
mfrancis
 
PDF
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
Arun Gupta
 
PPTX
Introduction to JPA (JPA version 2.0)
ejlp12
 
PDF
MongoDB for Java Devs with Spring Data - MongoPhilly 2011
MongoDB
 
PDF
Spring Mvc
ifnu bima
 
PDF
Crx 2.2 Deep-Dive
Gabriel Walt
 
PDF
Karaf ee-apachecon eu-2012
Charles Moulliard
 
PDF
Java EE 6 & GlassFish 3
Arun Gupta
 
Apache Aries Blog Sample
Skills Matter
 
OSGi Persistence With EclipseLink
Shaun Smith
 
HowTo Build an OSGI EJB3 Server
ekkehard gentz
 
TDC 2011: OSGi-enabled Java EE Application
Arun Gupta
 
Java Persistence API (JPA) - A Brief Overview
Craig Dickson
 
OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune...
IndicThreads
 
GlassFish REST Administration Backend
Arun Gupta
 
GlassFish REST Administration Backend at JavaOne India 2012
Arun Gupta
 
OSGi tech session
Bram de Kruijff
 
Beyond OSGi Software Architecture
Jeroen van Grondelle
 
OSGi Community Event 2010 - A Crash Course in OSGi Application Development
mfrancis
 
JavaEE 6 and GlassFish v3 at SFJUG
Marakana Inc.
 
OSGi Community Event 2010 - Enterprise OSGi in WebSphere and Apache Aries
mfrancis
 
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
Arun Gupta
 
Introduction to JPA (JPA version 2.0)
ejlp12
 
MongoDB for Java Devs with Spring Data - MongoPhilly 2011
MongoDB
 
Spring Mvc
ifnu bima
 
Crx 2.2 Deep-Dive
Gabriel Walt
 
Karaf ee-apachecon eu-2012
Charles Moulliard
 
Java EE 6 & GlassFish 3
Arun Gupta
 
Ad

More from Ian Robinson (6)

PDF
MicroProfile and Jakarta EE - What's Next?
Ian Robinson
 
PDF
WebSphere Application Server - Meeting Your Cloud and On-Premise Demands
Ian Robinson
 
PDF
Is Enterprise Java Still Relevant (JavaOne 2015 session)
Ian Robinson
 
PDF
IBM WebSphere Application Server Update - Technical University (March 2015)
Ian Robinson
 
PDF
Travelling light for the long haul
Ian Robinson
 
PDF
Was liberty
Ian Robinson
 
MicroProfile and Jakarta EE - What's Next?
Ian Robinson
 
WebSphere Application Server - Meeting Your Cloud and On-Premise Demands
Ian Robinson
 
Is Enterprise Java Still Relevant (JavaOne 2015 session)
Ian Robinson
 
IBM WebSphere Application Server Update - Technical University (March 2015)
Ian Robinson
 
Travelling light for the long haul
Ian Robinson
 
Was liberty
Ian Robinson
 
Ad

Recently uploaded (20)

PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PDF
July Patch Tuesday
Ivanti
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
Python basic programing language for automation
DanialHabibi2
 
PDF
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
July Patch Tuesday
Ivanti
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Python basic programing language for automation
DanialHabibi2
 
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 

Apache Aries Overview

  • 1. Apache Aries An Open Source project for Enterprise OSGi Applications
  • 2. Apache Aries – Project Overview Agenda History Community Content Consumers Future 2
  • 3. Apache Aries – Project Overview History “Aries” created as a new Apache incubator project in Sep 2009 focused on: • the programming model aspects of OSGi applications in an enterprise environment • building a broad development community to encourage implementation and adoption of EEG specs • providing an environment to collaborate and experiment with new technologies to inform further EEG standards. Independent of • OSGi framework provider and integration/server runtime Initial contribution included the Blueprint container implementation developed originally by the Apache Geronimo community. Web Site for all resources and documentation: http://incubator.apache.org/aries/ 3
  • 4. Apache Aries – Project Overview Community In a short space of time a community of 43 committers has been formed involving contributors from Ericsson, IBM, JBoss, LinkedIn, Progress, ProSyst, SAP and individuals • http://incubator.apache.org/aries/people.html Creation of community is one of the primary goals of the Apache Incubator: • To demonstrate that there is a broad community of interest • To help newcomers to Apache learn the ropes. 4
  • 5. 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/ 5
  • 6. Apache Aries – Project Overview Aries Blueprint Container A DI container standardizing established Spring conventions XML 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 Managed beans highly extensible: • Namespace handlers supported to extend publishes consumes service the Blueprint definitions service • Bean interceptors can be registered by OSGI-INF/blueprint/ handlers A static blueprint.xml assembly and configuration of Other Aries components contribute handlers – components (POJOs) Blueprint bundle “jpa” and “jta” handlers. Some other Aries components are implemented as Blueprint bundles themselves • e.g. JPA container 6
  • 7. Apache Aries – Project Overview Aries JPA Container – Application Managed PUs Persistence bundle Managed EntityManagerFactory Provides support for “Application Registered on behalf of the Bundle Manifest managed” JPA. … persistence bundle Each persistence bundle has its Meta-Persistence: OSGI-INF/persistence.xml standard JPA metadata located through the Meta-Persistence OSGI-INF/ Entities bundle header. persistence.xml Registers EntityManagerFactory JPA Container locates a JPA service per PU Provider which can service the PU Uses and registers a Provider-created org.apache.aries.jpa.container EntityManagerFactory service for each PU in each persistence Uses Used to build the bundle EntityManagerFactory • EMF service lifecyce follows the persistence bundle createContainerEMF (PersistenceUnitInfo) lifecycle JPA Provider JPA Provider gets persistence javax.persistence.spi. bundle classloader from PUInfo. PersistenceProvider service 7
  • 8. Apache Aries – Project Overview Aries JPA Container – Blueprint Integration The Aries JPA container context Example blueprint with JPA resource bundle provides a blueprint injection and container-managed namespace for dependency injection transactions: of managed JPA resources. Managed persistence units <blueprint (EntityManagerFactory objects) can xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:jta="http://aries.apache.org/xmlns/transactions/v1.0.0" be injected with or without a JTA xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0"> Transaction Services <bean id=“appMgd“ class=“com.acme.AppManaged”> implementation. <jpa:unit property="emf" unitname="myUnit" /> </bean> Managed persistence contexts (EntityManager objects) are only <bean id="containerMgd“ class=“com.acme.Container”> <jpa:context property="em" unitname=“myUnit“/> available with a JTA Transaction <jta:transaction method=“*" value=“Required" /> Services implementation. </bean> Both managed persistence units and </blueprint> managed persistence contexts behave as per the JPA specification. 8
  • 9. 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 9
  • 10. 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. <<MBean>> <<MBean>> <<MBean>> Fram ework Bund le State Blue print MB ean MB ean MB ean Framework MBeans <<MBean>> PermissionAdmin Permis sion Compendium MBeans Ad min MB ean MBean Server JMX OSGi <<MBean>> Configur ation Admin Additional Aries MBeans Manager Co nfiguratio n Ad min MB ean <<MBean>> Provisioning Service Provisi onin g ServiceMBean <<MBean>> <<MBean>> <<MBean>> User Admin Service St ate Package St ate User Adm in MB ean MB ean MB ean 10
  • 11. 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 A way for a Web component to access a OSGi Blueprint component Service Registry getService InitialContext ic = new InitialContext(); BloggingService blog= ic.lookup("osgi:services/" JNDI Context + BloggingService.class.getName()); 11
  • 12. Apache Aries – Project Overview Aries Application Assembly and Deploy The “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. Bundle Repository Bundle Repository Application Manifest Enumerates constituent bundles blog-persistence.jar json4j.jar Declares Application “externals” blog.jar blog.eba blog-servlet.jar 12
  • 13. Apache Aries – Project Overview Aries Application Assembly and Deploy Pluggable ApplicationResolver - NoOpResolver Aries Application = - OBRAriesResolver createApplication(eba) org.apache.aries.application.management Pluggable BundleConverters - WabConverterService Manifest-Version: 1.0 Manifest-Version: 1.0 Deployment-ManifestVersion: 1.0 Application-ManifestVersion: 1.0 Application-Name: Blog Application Application-Name: Blog Application Application-SymbolicName: aries.sample.blog Application-SymbolicName: aries.sample.blog Application-Version: 1.0 Application-Version: 1.0 Deployed-Content: Application-Content: aries.sample.blog; version=1.0.0, aries.sample.blog; version="[1.0.0,1.1.0)", aries.sample.blog-api; version=1.0.0, aries.sample.blog-api; version="1.0.0", aries.sample.blog-persistence; version=1.0.0, aries.sample.blog-persistence; version="1.0.0", aries.sample.blog-servlet; version=1.0.0, aries.sample.blog-servlet; version="[1.0.0,1.0.0]” com.ibm.json.java; version=1.0.0 Application Manifest (developer/assembler authored artefact) Deployment Manifest (generated during createApplication) Enumerates constituent bundles and allowable version ranges Transitively closed description of all bundles resolved at Declares Application “externals” specific versions to “freeze-dry” the application. 13
  • 14. 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 Service Provider bundle org.apache.aries.spifly reads Bundle Manifest … SPI-Provider: Registers service with property spi.provider.url = URL to the associated resource in OSGI-INF/services OSGI-INF/services “org.acme.impl.class” 14
  • 15. 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 15
  • 16. Apache Aries – Project Overview Example “Blog” Application Architecture blog.eba blog-api Web application bundle JNDI EM WEB-INF/ Blogging OSGI-INF/ Blog web.xml Service OSGI-INF/blueprint/ persistence.xml blueprint.xml Persistence Service blog-servlet OSGI-INF/blueprint/ blog blueprint.xml blog-persistence 16
  • 17. 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 17
  • 18. 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 18