Innovations within reach: What's new in Apache Geronimo 3.0

The Apache Geronimo project has released the first milestone release of the Geronimo 3.0 server. The 3.0 application server assemblies are provided as an implementation of Java™ EE 6 Web Profile features, such as Servlet 3.0, JSP 2.2, EL 2.2, JSF 2.2 and JPA 2.0. Geronimo 3.0 M1 also introduces support for the OSGi-based Aries application programming model, including new development, deployment, and service capabilities with the Blueprint service, JNDI lookup, and Web application bundle support. This article provides an overview of some of these significant new features. This content is part of the IBM WebSphere Developer Technical Journal.

Ryan Boyles ( raboyles@us.ibm.com), Software Engineer, IBM

Ryan Boyles is a software engineer in IBM Software Group working on the WebSphere Technical Evangelism team in Research Triangle Park, North Carolina. He is a developer advocate for emerging technology and web application software. He worked for nine years in user interface development in Tivoli Software. Ryan writes about WebSphere application infrastructure on his blog.



15 December 2010

Also available in

Each installment of Innovations within reach features new information and discussions on topics related to emerging technologies, from both developer and practitioner standpoints, plus behind-the-scenes looks at leading edge IBM® WebSphere® products.

New features and supported technologies

IBM WebSphere Application Server Community Edition is based on the open source project Apache Geronimo. Apache Geronimo is a modular server framework comprised of a core Java EE runtime and components, as well as several Apache projects that provide Java developers with application development tools in a lightweight deployment. Geronimo has an architectural design based on Inversion of Control, commonly called dependency injection. The Geronimo kernel is purpose-built to manage the dependencies that form a Java EE server deployment. This design makes it feasible for Geronimo developers to integrate tested open source components together to provide services like Java Persistence API (JPA), Enterprise JavaBeans™ (EJB) and Java Message Service (JMS).

The Apache Geronimo 2.0 application server is compatible and certified with the Java EE 5 specification. Geronimo 3.0 is a new release that includes Java EE 6 level services and components, and runs on top of an OSGi framework. Geronimo 3.0 now provides support for developing applications with the Enterprise OSGi programming model provided through integration with Apache Aries components. Applications defined in bundles can be managed in isolation as services to improve the maintainability of the server runtime.

This release adds on to what is considered the most flexible and easy to use open source application server for developers. The Geronimo 3.0 M1 milestone driver was released in June 2010. This article highlights some of the significant new features available in Geronimo 3.0-M1.

Blueprint and EBAs

Apache Aries provides a number of components that implement various OSGi enterprise specifications. Aries Blueprint implements the Blueprint Container specification, providing a dependency injection container for OSGi applications. Blueprint standardizes conventions from Spring and uses an XML definition to describe component configuration and wiring. Geronimo 3.0 uses the Blueprint container together with other components from Apache Aries to provide the EBA (Enterprise Business Archive) programming model and package deployment.

An EBA file is a way to specify an OSGi application. An OSGi application is a collection of bundles that together form a coherent business function, much like an EAR file in the Java EE programming model. For example, an EBA file can contain a Blueprint bundle and a JPA persistence bundle. The Blueprint bundle can contain components that are injected with a persistence unit defined in the persistence bundle. JPA (Java Persistence API) is a standard way to map a relationship from a POJO (Plain Old Java Object) to the persistence layer. JPA 2.0 is now a standalone specification separate from the Enterprise JavaBeans 3.0 specification. Geronimo uses the Apache OpenJPA component to provide persistent data access.

An EBA distributed as a registered service simplifies module reuse between applications. This also enables flexibility for developers to unit test independent of the server environment with available tooling.

Geronimo 3.0 M1 also integrates the JNDI (Java Naming and Directory Interface) component from Apache Aries. It provides a handy way to provide access to a service registry with a JNDI lookup. This feature also enables OSGi services to be injected into regular Java EE modules with the @Resource annotation.

Web application bundles

Geronimo 3.0 M1 also supports OSGi Web applications. OSGi Web applications bring support for WAR modules into OSGi. OSGi application support in Geronimo is complementary to the Java EE 6 programming model, and enables the use of Java components in a modular fashion as a collection of application modules and Web resources. These application modules are packaged as bundles containing resource files, classes, and metadata within a JAR formatted file. The bundle metadata specifies module versions, dependency declarations, and package visibility with XML. In this fashion, bundles can be activated concurrently within their own classpath and react to lifecycle changes independently. The bundle can dynamically resolve dependencies based on lifecycle state events and gracefully degrade if resolution fails at run time. A Web application bundle (WAB) is a bundle with specific common dependencies specified and is essentially a WAR file with the appropriate OSGi metadata. A WAR file can be automatically converted into a WAB using a special "webbundle" URL during a bundle install. Existing WAR modules can become WAB archives by specifying bundle dependencies with specific versions in a manifest file. In this way, we can say WAR : WBA :: EAR : EBA. WABs support Servlets, JSP and annotations.

Java EE features

Geronimo 3.0 M1 contains parts of the new Java EE 6 Web profile features. Servlet 3.0 and JSP 2.2 are now provided with the inclusion of support for the Tomcat 7 container. The main focus of the Servlet 3.0 specification is Web framework extensibility. New Java language features are exposed to provide servlet annotations to describe metadata previously configured in the web.xml descriptor file. Annotations support provides programmatic registration and initialization of servlets, servlet filters, and context listeners. Instead of using one long web.xml file to declare servlets and filters, the container can use multiple web.xml fragments to assemble the descriptor of the application with rules provided to avoid conflicts.

Servlet 3.0 in Tomcat also provides for asynchronous processing of the request/response cycle. This is an important feature, enabling non-blocking input, handling, and output for building Web 2.0 style behavior in the application or service.

The Servlet 3.0 specification is also aligned with Java Server Pages 2.2 support. The main focus of JSP 2.2 is developer productivity. A pluggable Web tier API is provided through the new Unified Expression Language, known simply as EL. EL 2.2 brings together expression languages in JSP and Java Server Faces to better handle tag evaluation, object properties, and their references. EL expressions can be used directly within JSP tag files or the pages themselves. Java Server Faces 2.0 now uses Facelets for the user interface by providing simple view templates.

JSF 2.0 also provides annotations for managed bean access, listener registration, and so on. This means a properly annotated POJO can become a managed bean at run time without separate configuration. The scope of the bean lifecycle is managed through this convention. These annotations can be used in components, validators, or renderers.

The navigation model is also updated to allow declarative convention-based handling based on business logic rather than explicit actions in configuration. There are three ways to specify navigation with no or minimal configuration, and the API enables queries and modifications to be made to the navigation rules at run time. These features are quite handy and make developing web applications easier with Geronimo 3.0.


Conclusion

The primary mission of the Apache Geronimo open source project is to create a modular application server framework from best of breed open source components. Apache Geronimo 3.0 is a flexible Java EE application server developed with customization in mind. It provides greater ease of use and an enhanced developer experience with a small footprint. Five distributions of Apache Geronimo 3.0 give you custom assembly options with Tomcat or Jetty Web containers, and OpenJPA or no persistence services. The Geronimo 3.0 M1 release provides several key Java EE 6 components provided as OSGi services, as well as support for the OSGi application programming model. This server is a compelling milestone for Java developers seeking a robust framework for tailoring reusable application infrastructure services.

Resources

Learn

Get products and technologies

Discuss

Comments

developerWorks: Sign in

Required fields are indicated with an asterisk (*).


Need an IBM ID?
Forgot your IBM ID?


Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. Information in your profile (your name, country/region, and company name) is displayed to the public and will accompany any content you post, unless you opt to hide your company name. You may update your IBM account at any time.

All information submitted is secure.

Choose your display name



The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

Required fields are indicated with an asterisk (*).

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.

 


All information submitted is secure.

Dig deeper into WebSphere on developerWorks


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=WebSphere, Web development, Open source
ArticleID=600223
ArticleTitle=Innovations within reach: What's new in Apache Geronimo 3.0
publish-date=12152010