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
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