The latest version of GlassFish application server supports JavaEE 6 Web Profile and Full Platform, improved OSGi support, clustering and high availability (HA) features. Oracle recently released version 3.1 of the commercial (Oracle GlassFish Server) and open source (GlassFish Server Open Source Edition) versions of the application server. The new release also provides centralized administration and improved JDBC monitoring capabilities. The current IDE tool support includes the NetBeans and Eclipse plugin extensions and the next release of Oracle Enterprise Pack for Eclipse will be updated to include the new GlassFish 3.1 server plug-in.
Clustering and HA support includes the creation of multiple clusters per domain and multiple instances per cluster with up to 100 instances per domain using the web-based Admin Console or the command line interface (CLI). The HTTP, EJB, IIOP, SSO, and Web Services Reliable Messaging and Secure Conversation session states are replicated evenly in the cluster. All the administration, management, and monitoring data is exposed as RESTful Web services. The web-based admin console uses the same RESTful backend so the developers can use the same set of APIs to integrate similar capabilities in the toolkits or IDEs. Also, multiple versions of an application can be concurrently deployed allowing to change between different versions.
OSGi Support: Apache Felix is bundled with the runtime and is used as the default shell but GlassFish runs on Equinox and Knopflerfish as well. The OSGi support enables hybrid application development to leverage the benefits of OSGi modularity and Java EE programming model. The developers can utilize OSGi services from Java EE Applications and vice-versa. The support also includes the updates to the Apache Felix runtime to version 3.0.8 including the Apache Gogo shell.
Active Redeploy: The new release extends GlassFish Server 3.0 Active Redeploy feature to include Stateful EJBs and EJB Timer components. When applications are re-deployed using the redeploy command, GlassFish server maintains HTTP session and EJB state. There is also a full EJB feature support in the Embedded API.
JDBC Monitoring: Improved JDBC monitoring such as statement leak detection and reclaim which automatically monitors, logs, and reclaims database cursors when applications fail to do so. This feature also includes tracing SQL queries, application based connection pool monitoring, and a custom validation template for JDBC connection pool.
Application Scoped Resources: This feature allows the developers to specify the resources, such as JDBC resource, to be created as part of the application deployment. This enables developers to limit the scope of resources to a deployed application and eliminates the need to have an external deployment script which makes the application portable across multiple GlassFish instances.
Unit Testing: GlassFish server can be run in an embedded mode for unit testing purposes using the Maven plugin. Developers can perform lifecycle operations, deploy their applications and perform runtime configurations on GlassFish programmatically without the need to explicitly install and start the application server.
In addition to the above features, the commercial version of the application server provides the following value add features in GlassFish Server Control:
- DAS Backup & Recovery - A disaster recovery solution that allows the admins to back up an existing domain in an archive and recover in case of a disaster.
- Performance Tuner (online help only) - Analyzes the underlying infrastructure and provides up to 300% performance improvement over OOTB performance.
- Monitoring scripting client - Allows to introspect the runtime using JavaScript and create custom dashboards.
- Coherence Active Cache - Enable integration with Oracle Coherence, allows to replace in-memory session replication with Oracle Coherence, to scale out application tier independent of session replication tier.
- Integration with Oracle Access Manager - Delegate authorization & authentication to OAM.
- Load Balancer & Plugin Installer - Reverse proxy engine that runs on Oracle Web Server and provides smart failover by knowing exactly where the backup session resides.
InfoQ spoke with Arun Gupta, Java EE & GlassFish Guy at Oracle, about the new release of the application server.
Does the clustering feature use Shoal framework? How is GlassFish server's clustering different from traditional clustering implementation?
GlassFish Clustering is centered around an administrative domain which can then create a single server instance or clusters with multiple instances spread across distributed machines. Multiple clusters can be created per domain, multiple instances can be created per cluster, with up to 100 instances per domain. The multiple machines can be remotely provisioned and managed using SSH. The instances within a cluster are homogeneously configured allowing a single-click deployment of web applications to the cluster. The GlassFish High Availability also provides session replication for HTTP, EJB, IIOP, SSO, and Web Services Reliable Messaging and Secure Conversation. The session replication can be configured either for full session or only modified session.
The commercial version of GlassFish, Oracle GlassFish Server, also comes with a value-add feature that allows to replace in-memory session replication with Oracle Coherence such that replication can be moved to a separate tier. This allows to scale out application tier independent of the session replication tier.
Yes, GlassFish uses Shoal, the runtime dynamic clustering framework, which also forms as the basis for in-memory replication module. Shoal GMS (Group Management Service) is used for lifecycle event notifications and now uses Grizzly, instead of JXTA in the previous release, and thereby gives 33% better performance improvement over GlassFish v2.
Can you expand on the OSGi support in GlassFish 3.1?
GlassFish 3.1 allows you to deploy OSGi-enabled Java EE applications very easily. This enables you to leverage the typical OSGi benefits such as modularity, dependency management, service dynamism, and others along with typical advantages of Java EE such as persistence, security, transaction, and other similar services in the same application. In GlassFish 3.1, we've implemented several RFCs from OSGi R4.2 Enterprise Specifications to get this working. So an OSGi client can easily invoke a Web application and a Web application can invoke an OSGi service using standard Java EE APIs and using any boiler plate code.
Can you discuss the Active Redeploy feature in more detail? Is this same as the "FastSwap" feature that was included in WebLogic 10.3 release?
Active Redeploy feature is a combination of IDE (NetBeans or Eclipse) and GlassFish to boost developer's productivity during development cycle. It allows an IDE to redeploy a web application to the underlying GlassFish server as soon as any file in the project is created/saved. And it works equally well for static files such as JSP or dynamic files such as EJB or Servlet class files. This feature is primarily targeted towards development and is not intended to be used for production. Notice, this is a complete deployment of the application unlike "FastSwap" which monitors and then reloads the changed classes only.
What is the tool support to use the new version in terms of development, administration and monitoring?
NetBeans, Eclipse, and IntelliJ provide comprehensive tooling around Java EE 6 already. Out of those, NetBeans 7.0 and Eclipse 3.6 with GlassFish plug-in also enable GlassFish 3.1 integration. This allows you to develop, deploy, and debug your Java EE 6 applications on GlassFish Server 3.1 using these IDEs.
All the administration, management, and monitoring data is exposed as RESTful Web services and thus can be seamlessly integrated in the toolkit of your choice. Even the GlassFish web-based admin console is using these RESTful APIs. The "asadmin" CLI also provides monitoring snapshots on the objects of your choice, such as Web container, by querying the pre-defined probes. The monitoring data can be obtained in a browser using web-based admin console or RESTful Web services. The events are also viewable using DTrace on Solaris 10+. Even your applications can generate monitoring data just the way GlassFish does as the underlying framework is extensible. And if you want something more generic, then a JavaScript program can be written to collect and massage the data.
The centralized web-based administration console provides all the functionality to CRUD clusters, application versioning, password aliasing, and many other features.
What is the future road-map of the application server in terms of new features coming up in version 3.2 and GlassFish in general?
GlassFish 3.2 will focus on adding Virtualization and PaaS capabilities. GlassFish 4.0 is targeted towards implementing Java EE 7 functionality. In general, GlassFish is very much here to stay and is a strategic application server for Oracle.
You can start with the GlassFish Server Open Source Edition and then buy commercial support from Oracle when you are ready. You can download the commercial version and open source edition (includes APIs, Tutorials, Samples) from Oracle GlassFish Server website.
For more information about the new release of GlassFish Server 3.1 version, the readers can check out the "What's New in GlassFish 3.1" and "GlassFish 3.1 Clustering" webinars.