Apache Aries Overview


Published on

Published in: Technology, Education
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Apache Aries Overview

  1. 1. Apache Aries An Open Source project for Enterprise OSGi Applications
  2. 2. Apache Aries – Project Overview Agenda History Community Content Consumers Future 2
  3. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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