http://java.sun.com/ http://java.sun.com/ http://java.sun.com/javaone
JavaOne - ExperiencingJava technology through education, industry, and community
2007 Conference
Home
Registration
   Conference Hotels
Schedule
   Activities
Tracks
Sessions
   General Sessions
   Business Day
   TV Day
   JavaOne Camp
Hands-on Labs
Pavilion
   Cosponsors
   Exhibitors
   Media
   How to Exhibit
Blogs
Multimedia
Java University
 
Conference Tools
Schedule Builder
Event Connect
My Registration Details
 
Conference Programs
Alumni Program
   Alumni FAQ
Eco Corner
Rock Stars
 
Related Resources
JavaOne Library
JavaOne Online
2006 Site Archive
 
Community
Forums
Sun Developer Network
 
Popular Items
Java Wear
Duke Images
 
Related Sites
java.sun.com
java.com
java.net
 
 
  Home > GlassFish Application Server: Present and Future

 GlassFish Application Server: Present and Future

   
By Rick Palkovic  

Much has happened in the GlassFish community since the introduction of the GlassFish Java Platform, Enterprise Edition (Java EE) application server at last year's JavaOne conference.

The main goal of Project GlassFish has been to produce an application server that implements the Java EE standard. The server is licensed under the Common Development and Distribution License (CDDL), which allows developers to view, use, edit, and alter the code, as well as to distribute or use the code in production.

Session TS-4436, "Technical Overview of GlassFish v2," presented by Dhiru Pandey and Larry White, brought the audience up-to-date on recent developments. Later in the day, Jerome Dochez presented TS-6503, "GlassFish v3 Architecture Review," and provided a preview of version 3 (v3).

Version 2 of the GlassFish server, due to be released at the beta 2 level this week, contains many new features. Here are the most prominent:

  • Improved clustering and session failover capabilities
  • Web Services Interoperability Technology (WSIT)
  • Support for Java Business Interface (JBI) technology

GlassFish Clustering

Instances of the GlassFish application server can be grouped into clusters, which can be administered jointly. For example, an administrator can distribute an application to all instances in the cluster with a single deployment.

The clusters are dynamic, so when an instance is added or removed, the changes in cluster topology are handled automatically. The automation is made possible by Group Membership Service (GMS), which provides up-to-date membership information for the cluster, and the replication framework, which reshapes cluster topology when necessary.

Group Membership Service

At the heart of the GlassFish dynamic clustering capability lies GMS, an outgrowth of Project Shoal. Project Shoal is a Java technology-based clustering framework that provides infrastructure to build fault tolerance, reliability, and availability. GlassFish clustering capability also makes use of Project JXTA peer-to-peer communication technologies.

In a GlassFish cluster, GMS runs as a process on each instance. GMS keeps track of group membership by registering a callback function that is invoked whenever group membership changes. Instance members can be added and removed from the cluster, and members might fail and recover. As these events occur, GMS adjusts the cluster membership automatically.

Moreover, GMS can differentiate between a member that leaves the group deliberately due to administrative action and a member that leaves the group due to failure. GMS itself requires very little administrative overhead.

The combined abilities of GMS to monitor cluster membership and of the replication framework to change cluster topology forms the basis of the new GlassFish v2 high-availability solution.

High Availability

Sun Microsystems has historically offered a robust high-availability solution for application servers based on High-Availability Database (HADB) technology. HADB offers 99.999 percent ("five nines") availablity for maintaining session-state information. However, it has a higher cost to implement and maintain and, although freely available, has not been available in an open-source version.

Requests for a lighter weight, open-source alternative have resulted in an in-memory replication feature for GlassFish version 2. In-memory replication relies on instances within the cluster storing state information for one another in memory, not in a database. The HADB solution remains available, however, and may be preferred for many installations.

In the GlassFish application server, cluster instances are organized in a ring topology. Each member in the ring sends in-memory state data to the next member in the ring, its replica partner, and receives state data from the previous member. As state data is updated in any member, it is replicated around the ring.

When a member fails in the ring topology, the ring is broken. As noted earlier, GMS can recognize the failure of a member. In that event, the replication framework reshapes the topology of the cluster and notifies members of the changes. When a member learns that its replica partner has disappeared, it selects a new partner from in-service members.

Note that reshaping a cluster does not rely on each instance communicating directly with all of the others. Solutions based on that scheme do not scale well to large clusters.

In the GlassFish clustering scheme, the load balancer tier is not expected to provide any special or proprietary features in order to maintain high availability. The load balancer tier simply sends requests for service to members in the cluster until an in-service member acknowledges its request. Within the cluster, the replication framework makes sure that the responding member is provided the state information that it needs to provide service.

Web Services Interoperability Technologies (WSIT)

To enable interoperability between the Java platform and Microsoft .NET 3.0, GlassFish version 2 implements Web Services Interoperability Technologies (WSIT). WSIT is an outgrowth of Project Tango, a part of the GlassFish community development effort.

In the GlassFish server, WSIT is used to provide advanced web services features such as bootstrapping, optimizing communication, reliable messaging, atomic transactions, security, and trust. For more on WSIT, check out session TS-4865, "Takes Two to Tango: Java Web Services and .NET Interoperability."

Java Business Integration

Developers of service-oriented architecture (SOA) composite applications will appreciate another new feature in version 2: the inclusion of runtime components for Java Business Integration (JBI).

A SOA composite application is made up of components that provide and consume one another's services, communicating through messages. With JBI, the components need not interact with each other directly. Instead, JBI acts as an intermediary to route messages between components. A standard message format ensures that all components understand one another. An abstract service description is the only coupling between a service consumer and a service provider. The service description is expressed in Web Services Description Language (WSDL).

More Enhancements

GlassFish Application Server, version 2 arrives with many more enhancements. Among them are the following:

  • Usage profiles. Usage profiles configure the server for different user roles. Three profiles are provided by default: developer, cluster, and enterprise. For example, most developers work within a single domain and machine, and they would choose the developer profile to improve performance and expend the least administrative effort.

  • Security. Version 2 supports JSR 196, which provides a standard service provider interface for authentication. It also supports encryption with Elliptic Curve Cryptography (ECC) and Java Key Store (JKS) format. To provide the ability to grant permissions based on authentication, but independent of identity, the server supports assign-groups in the security realm. Finally, the server supports JDBCRealm to authenticate users and define their security roles based on information from a relational database accessed through JDBC APIs.

  • Web container. Web container enhancements include multiple docroot support and compliance with the Apache JServ Protocol. Dynamic attributes and property changes are allowed without requiring a server restart. In addition, a nonblocking implementation of SSL has been implemented using Grizzly for improved performance.

  • New admin console. The admin console graphical user interface (GUI) has been reimplemented. It now provides Project jMaki charting for monitoring charts. The console uses Ajax techniques to refresh the navigation tree, providing faster perceived user response.

  • Update Center. The Update Center provides a GUI for users who want to find the latest software and information available from the Download Center web site.

  • Specification updates. The following specifications were updated for GlassFish application server, version 2:

    • JSR 196: Java Authentication Service Provider Interface for Containers
    • JSR 208: JBI
    • JavaServer Faces 1.2 technology: maintenance release
    • JavaServer Pages (JSP) technology: maintenance release
    • JavaServer Pages Standard Tag Library (JSTL): maintenance release
    • Servlet: maintenance release
    • Java API for XML Web Services (JAX-WS): maintenance release
    • Java Architecture for XML Binding (JAXB): maintenance release

GlassFish Version 3 Architecture Review

The success of the GlassFish version 2 application server in beta release has stimulated interest in version 3.

"The two biggest architectural improvements for version 3 are modularity and open extensibility," said Jerome Dochez in TS-6503, "GlassFish v3 Architecture Review."

Subsystem Modularity

The organization of GlassFish version 3 subsystems into modules is loosely based on the work of JSR 277, which defines a distribution format and a repository for collections of Java technology code and related resources. The specification promises to overcome the shortcomings of distribution by means of Java Archive (JAR) files, which have no versioning mechanism, no ability to enforce interdependency, and no automatic way to track classpaths that change during deployment.

During development, each module in GlassFish version 3 is identified by a name and version number. Each module requires one class loader, which can deploy as many JAR files as necessary.

At runtime, modules are identified by module instances. Each module instance has two class loaders: a public one that users can access and a private one that loads all of the module's classes. Each module has a list of other modules' class loaders to handle loading of imported classes. Garbage collection occurs after all references to the public class loader have been released.

Modularity provides advantages both at runtime and during development. First, it means that startup can be much faster because only the application container that will be used for a deployment needs to be loaded, not the entire infrastructure.

The modular architecture also means that GlassFish version 3 will be easier to maintain. Modules can be updated independently instead of replacing the entire server with a new patch.

Modular updates give developers and administrators more independence in updating their installations. Different versions of the same module can live happily within a single GlassFish application server. So when a new module is installed, an older version of the same module can still be used until the applications that require it can be tested and qualified with the new module.

Open Extensibility

In the past, application servers were typically restricted to Java EE applications -- web applications, EJB beans, web services, and the like.

GlassFish version 3 breaks that restriction. In the new architecture, the application server is a metacontainer for application containers. As a result, you can install application containers that can run applications other than those based on Java EE technology: Ruby on Rails applications or PHP scripts, for example. These applications can be developed more quickly due to improved support for interactive development cycles. And these applications can be deployed directly without the need for complicated repackaging.

GlassFish version 3 will provide a number of containers by default and will also publish APIs that developers can use to add additional container types. According to Dochez, the GlassFish community has already received requests from developers who want to add their own containers to the GlassFish framework.

Rate and Review
Tell us what you think of the content of this page.
Excellent   Good   Fair   Poor  
Comments:
Your email address (no reply is possible without an address):
Sun Privacy Policy

Note: We are not able to respond to all submitted comments.