SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud Shekhar Gulati
 
In the Brain of Hans Dockter: Gradle
In the Brain of Hans Dockter: GradleIn the Brain of Hans Dockter: Gradle
In the Brain of Hans Dockter: GradleSkills Matter
 
Indic threads pune12-java ee 7 platformsimplification html5
Indic threads pune12-java ee 7 platformsimplification html5Indic threads pune12-java ee 7 platformsimplification html5
Indic threads pune12-java ee 7 platformsimplification html5IndicThreads
 
Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions Haim Yadid
 
Commons Pool and DBCP
Commons Pool and DBCPCommons Pool and DBCP
Commons Pool and DBCPPhil Steitz
 
Don't Wait! Develop Responsive Applications with Java EE7 Instead
Don't Wait! Develop Responsive Applications with Java EE7 InsteadDon't Wait! Develop Responsive Applications with Java EE7 Instead
Don't Wait! Develop Responsive Applications with Java EE7 InsteadWASdev Community
 
Lecture 7 Web Services JAX-WS & JAX-RS
Lecture 7   Web Services JAX-WS & JAX-RSLecture 7   Web Services JAX-WS & JAX-RS
Lecture 7 Web Services JAX-WS & JAX-RSFahad Golra
 
50 new features of Java EE 7 in 50 minutes
50 new features of Java EE 7 in 50 minutes50 new features of Java EE 7 in 50 minutes
50 new features of Java EE 7 in 50 minutesAntonio Goncalves
 
Spring 4 advanced final_xtr_presentation
Spring 4 advanced final_xtr_presentationSpring 4 advanced final_xtr_presentation
Spring 4 advanced final_xtr_presentationsourabh aggarwal
 
the Spring 4 update
the Spring 4 updatethe Spring 4 update
the Spring 4 updateJoshua Long
 
A tour of (advanced) Akka features in 40 minutes
A tour of (advanced) Akka features in 40 minutesA tour of (advanced) Akka features in 40 minutes
A tour of (advanced) Akka features in 40 minutesJohan Janssen
 
5050 dev nation
5050 dev nation5050 dev nation
5050 dev nationArun Gupta
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with SpringJoshua Long
 
A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom Joshua Long
 
Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Ryan Cuprak
 
Short intro to scala and the play framework
Short intro to scala and the play frameworkShort intro to scala and the play framework
Short intro to scala and the play frameworkFelipe
 
Java Play Restful JPA
Java Play Restful JPAJava Play Restful JPA
Java Play Restful JPAFaren faren
 

Was ist angesagt? (20)

Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud
 
In the Brain of Hans Dockter: Gradle
In the Brain of Hans Dockter: GradleIn the Brain of Hans Dockter: Gradle
In the Brain of Hans Dockter: Gradle
 
Indic threads pune12-java ee 7 platformsimplification html5
Indic threads pune12-java ee 7 platformsimplification html5Indic threads pune12-java ee 7 platformsimplification html5
Indic threads pune12-java ee 7 platformsimplification html5
 
Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions
 
Commons Pool and DBCP
Commons Pool and DBCPCommons Pool and DBCP
Commons Pool and DBCP
 
Don't Wait! Develop Responsive Applications with Java EE7 Instead
Don't Wait! Develop Responsive Applications with Java EE7 InsteadDon't Wait! Develop Responsive Applications with Java EE7 Instead
Don't Wait! Develop Responsive Applications with Java EE7 Instead
 
Lecture 7 Web Services JAX-WS & JAX-RS
Lecture 7   Web Services JAX-WS & JAX-RSLecture 7   Web Services JAX-WS & JAX-RS
Lecture 7 Web Services JAX-WS & JAX-RS
 
50 new features of Java EE 7 in 50 minutes
50 new features of Java EE 7 in 50 minutes50 new features of Java EE 7 in 50 minutes
50 new features of Java EE 7 in 50 minutes
 
Spring 4 advanced final_xtr_presentation
Spring 4 advanced final_xtr_presentationSpring 4 advanced final_xtr_presentation
Spring 4 advanced final_xtr_presentation
 
Declarative Services
Declarative ServicesDeclarative Services
Declarative Services
 
the Spring 4 update
the Spring 4 updatethe Spring 4 update
the Spring 4 update
 
A tour of (advanced) Akka features in 40 minutes
A tour of (advanced) Akka features in 40 minutesA tour of (advanced) Akka features in 40 minutes
A tour of (advanced) Akka features in 40 minutes
 
5050 dev nation
5050 dev nation5050 dev nation
5050 dev nation
 
Spring 4 - A&BP CC
Spring 4 - A&BP CCSpring 4 - A&BP CC
Spring 4 - A&BP CC
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with Spring
 
A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom
 
Dropwizard
DropwizardDropwizard
Dropwizard
 
Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)
 
Short intro to scala and the play framework
Short intro to scala and the play frameworkShort intro to scala and the play framework
Short intro to scala and the play framework
 
Java Play Restful JPA
Java Play Restful JPAJava Play Restful JPA
Java Play Restful JPA
 

Ähnlich wie Apache Aries Overview

Enterprise Persistence in OSGi - Mike Keith, Oracle
Enterprise Persistence in OSGi - Mike Keith, OracleEnterprise Persistence in OSGi - Mike Keith, Oracle
Enterprise Persistence in OSGi - Mike Keith, Oraclemfrancis
 
03.eGovFrame Runtime Environment Training Book Supplement
03.eGovFrame Runtime Environment Training Book Supplement03.eGovFrame Runtime Environment Training Book Supplement
03.eGovFrame Runtime Environment Training Book SupplementChuong Nguyen
 
OSGi Service Platform 4.2
OSGi Service Platform 4.2OSGi Service Platform 4.2
OSGi Service Platform 4.2Ilya Katsov
 
Spring MVC framework
Spring MVC frameworkSpring MVC framework
Spring MVC frameworkMohit Gupta
 
Gemini WEB and Virgo
Gemini WEB and VirgoGemini WEB and Virgo
Gemini WEB and VirgoHristo Iliev
 
Ad110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of XpagesAd110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of Xpagesddrschiw
 
Managing your Hadoop Clusters with Ambari
Managing your Hadoop Clusters with AmbariManaging your Hadoop Clusters with Ambari
Managing your Hadoop Clusters with AmbariDataWorks Summit
 
Ese2008 Swordfish
Ese2008 SwordfishEse2008 Swordfish
Ese2008 Swordfishwwtyler
 
Configuring jpa in a Spring application
Configuring jpa in a  Spring applicationConfiguring jpa in a  Spring application
Configuring jpa in a Spring applicationJayasree Perilakkalam
 
ApacheCon EU 2009 Tales from the front line - ActiveMQ ServiceMix and CXF
ApacheCon EU 2009 Tales from the front line - ActiveMQ ServiceMix and CXFApacheCon EU 2009 Tales from the front line - ActiveMQ ServiceMix and CXF
ApacheCon EU 2009 Tales from the front line - ActiveMQ ServiceMix and CXFAdrian Trenaman
 
Introduction Java Web Framework and Web Server.
Introduction Java Web Framework and Web Server.Introduction Java Web Framework and Web Server.
Introduction Java Web Framework and Web Server.suranisaunak
 
Enterprise Spring Building Scalable Applications
Enterprise Spring Building Scalable ApplicationsEnterprise Spring Building Scalable Applications
Enterprise Spring Building Scalable ApplicationsGordon Dickens
 
Leadership Symposium on Digital Media in Healthcare
Leadership Symposium on Digital Media in HealthcareLeadership Symposium on Digital Media in Healthcare
Leadership Symposium on Digital Media in Healthcaresetstanford
 
What Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouWhat Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouJohn Pape
 
Google App Engine At A Glance
Google App Engine At A GlanceGoogle App Engine At A Glance
Google App Engine At A GlanceStefan Christoph
 

Ähnlich wie Apache Aries Overview (20)

Enterprise Persistence in OSGi - Mike Keith, Oracle
Enterprise Persistence in OSGi - Mike Keith, OracleEnterprise Persistence in OSGi - Mike Keith, Oracle
Enterprise Persistence in OSGi - Mike Keith, Oracle
 
Crx 2.2 Deep-Dive
Crx 2.2 Deep-DiveCrx 2.2 Deep-Dive
Crx 2.2 Deep-Dive
 
03.eGovFrame Runtime Environment Training Book Supplement
03.eGovFrame Runtime Environment Training Book Supplement03.eGovFrame Runtime Environment Training Book Supplement
03.eGovFrame Runtime Environment Training Book Supplement
 
OSGi Service Platform 4.2
OSGi Service Platform 4.2OSGi Service Platform 4.2
OSGi Service Platform 4.2
 
Spring MVC framework
Spring MVC frameworkSpring MVC framework
Spring MVC framework
 
Gemini WEB and Virgo
Gemini WEB and VirgoGemini WEB and Virgo
Gemini WEB and Virgo
 
Ad110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of XpagesAd110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of Xpages
 
Managing your Hadoop Clusters with Ambari
Managing your Hadoop Clusters with AmbariManaging your Hadoop Clusters with Ambari
Managing your Hadoop Clusters with Ambari
 
Ese2008 Swordfish
Ese2008 SwordfishEse2008 Swordfish
Ese2008 Swordfish
 
Configuring jpa in a Spring application
Configuring jpa in a  Spring applicationConfiguring jpa in a  Spring application
Configuring jpa in a Spring application
 
Beyond OSGi Software Architecture
Beyond OSGi Software ArchitectureBeyond OSGi Software Architecture
Beyond OSGi Software Architecture
 
ApacheCon EU 2009 Tales from the front line - ActiveMQ ServiceMix and CXF
ApacheCon EU 2009 Tales from the front line - ActiveMQ ServiceMix and CXFApacheCon EU 2009 Tales from the front line - ActiveMQ ServiceMix and CXF
ApacheCon EU 2009 Tales from the front line - ActiveMQ ServiceMix and CXF
 
Introduction Java Web Framework and Web Server.
Introduction Java Web Framework and Web Server.Introduction Java Web Framework and Web Server.
Introduction Java Web Framework and Web Server.
 
Spring Basics
Spring BasicsSpring Basics
Spring Basics
 
Enterprise Spring Building Scalable Applications
Enterprise Spring Building Scalable ApplicationsEnterprise Spring Building Scalable Applications
Enterprise Spring Building Scalable Applications
 
Leadership Symposium on Digital Media in Healthcare
Leadership Symposium on Digital Media in HealthcareLeadership Symposium on Digital Media in Healthcare
Leadership Symposium on Digital Media in Healthcare
 
What Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouWhat Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell You
 
Google App Engine At A Glance
Google App Engine At A GlanceGoogle App Engine At A Glance
Google App Engine At A Glance
 
Project Zero JavaOne 2008
Project Zero JavaOne 2008Project Zero JavaOne 2008
Project Zero JavaOne 2008
 
Riding with camel
Riding with camelRiding with camel
Riding with camel
 

Mehr von Ian Robinson

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

Mehr von Ian Robinson (6)

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

Kürzlich hochgeladen

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Kürzlich hochgeladen (20)

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

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