Apache Geronimo Uncovered a View Through the Eyes of a Websphere Application Server Expert
Total Page:16
File Type:pdf, Size:1020Kb
Apache Geronimo uncovered A view through the eyes of a WebSphere Application Server expert Skill Level: Intermediate Adam Neat ([email protected]) Author Freelance 16 Aug 2005 Discover the Apache Geronimo application server through the eyes of someone who's used IBM WebSphere® Application Server for many years (along with other commercial J2EE application servers). This tutorial explores the ins and outs of Geronimo, comparing its features and capabilities to those of WebSphere Application Server, and provides insight into how to conceptually architect sharing an application between WebSphere Application Server and Geronimo. Section 1. Before you start This tutorial is for you if you: • Use WebSphere Application Server daily and are interested in understanding more about Geronimo. • Want to gain a comparative groundwork understanding of Geronimo and WebSphere Application Server. • Are considering sharing applications between WebSphere Application Server and Geronimo. • Simply want to learn and understand what other technologies are out there (which I often do). Prerequisites Apache Geronimo uncovered © Copyright IBM Corporation 1994, 2008. All rights reserved. Page 1 of 23 developerWorks® ibm.com/developerWorks To get the most out of this tutorial, you should have a basic familiarity with the IBM WebSphere Application Server product family. You should also posses a general understanding of J2EE terminology and technologies and how they apply to the WebSphere Application Server technology stack. System requirements If you'd like to implement the two technologies included in this tutorial, you'll need the following software and components: • IBM WebSphere Application Server. The version I'm using as a base comparison is IBM WebSphere Application Server, Version 6.0. However, given the large install base of WebSphere, Version 5.1, I make retrospective version references. To obtain this software, see your IBM sales representative to purchase, or check with your employer to see if they have available licenses. You can also download a trial version. • Apache Geronimo. I've used Geronimo, Version 1.0, Milestone 3 as the comparison version for this tutorial. You can download Geronimo under the Apache Software Foundation (ASF) licensing scheme. Because I've written this tutorial while traveling, I've been restricted to using my Microsoft® Windows® XP Professional-based notebook computer on which all these components are installed. For the purposes of this tutorial, you can get away with 512MB of memory and an Intel® Pentium® processor with Intel Centrino™ mobile technology at >1.6GHz or a Pentium 4 2.66GHz processor (I'm using a Pentium 4 3.06GHz with 1GB of memory). Section 2. Introduction to Apache Geronimo and IBM WebSphere Application Server This section gives you a high-level overview of Geronimo and WebSphere Application Server. After completing this section, you'll have a better understanding of the frameworks of the two application servers. A tale of two: Apache Geronimo Geronimo is the newest open source Java™ 2 Platform, Enterprise Edition (J2EE) application server available. The project has been forged out of the Apache Software Foundation incubator stables, and it builds on the tremendous success of the Apache Tomcat project. Originally conceived in late 2003, Geronimo, like many open source initiatives, took form rapidly through the open source community's enthusiasm. Apache Geronimo uncovered Page 2 of 23 © Copyright IBM Corporation 1994, 2008. All rights reserved. ibm.com/developerWorks developerWorks® In May 2004, Geronimo became an official top-level Apache project. Since then it has undergone J2EE 1.4 certification testing. As of the end of June 2005, Geronimo is fully J2EE 1.4 compliant. With Geronimo falling under an open source licensing banner, it's distributed through a General Public License (GPL)-like arrangement known as the Apache License. Unlike the Apache License, more typical GPL-like licensing schemes, such as the Lesser General Public License (LGPL), muddy the water when entities, such as Independent Software Vendors (ISVs), start to develop plug-ins and third-party products consumed within an open source (LGPL) package. Ultimately, this means that if you develop server products and development tools for Geronimo under the LGPL, there is ambiguity regarding how the derived work is licensed. That is, does a commercially developed support tool for Geronimo automatically become LGPLed, or does it remain under its own licensing arrangement? This discussion is the source of much ongoing debate and is beyond the scope of this tutorial. One of the most interesting aspects of Geronimo is that it's based on many existing frameworks and tools that are individually available in the open source world. You might say that Geronimo is an open source project made up of open source projects (a framework of frameworks perhaps), which means that, instead of reinventing the wheel, the Geronimo team has made a smart and architecturally valid decision to reuse existing components. The components that are incorporated into the Geronimo system include Apache Tomcat, Jetty, Velocity, Apache Eve, MX4J, and many others. (Later in this tutorial, we'll cover the inner workings of the Geronimo server.) This framework is excellent for those who are bent toward a purer open source operating philosophy, but it can prove to be an unusual operating model for architects or system managers who aren't well-versed in the intricacies of open source tools. While it can be tempting to upgrade individual components with updated versions as each is re-released, system operators may inadvertently upgrade the individual (open source) component and break the system. Like any product you install and manage, upgrades of components that make up the overall platform should be performed in conjunction with formal release schedules and software concurrency matrixes. Figure 1 provides a high-level component view of Geronimo. The major components that are reused in each tier are shown in red boxes (these are only a handful of the more prominent external components incorporated into Geronimo). The implementation specifications are listed under each tier. Also, the blue-green box for each tier depicts the custom components and the Geronimo core. The capabilities incorporated into these blue-green boxes represent the wiring and plumbing that make up Geronimo's core platform. Figure 1. High-level component view of Geronimo Apache Geronimo uncovered © Copyright IBM Corporation 1994, 2008. All rights reserved. Page 3 of 23 developerWorks® ibm.com/developerWorks A tale of two: IBM WebSphere Application Server That's enough about Geronimo for a moment. The second player in this tutorial is IBM WebSphere Application Server, no doubt the market-leading J2EE application server offering from IBM. WebSphere Application Server is deployed into some of the largest and most complex enterprise and Web-enabled applications globally. The latest incarnation of WebSphere Application Server -- Version 6 -- takes scalability, robustness, and performance features to a new level. Packed into WebSphere Application Server's functionality is a plethora of features, functions, and capabilities that cover everything from basic JavaServer Pages (JSP) serving to capabilities that let you manage and run highly integrated and distributed architectures that are similar to service-oriented architectures (SOAs). So why would someone who uses WebSphere Application Server consider using Geronimo? The power of Geronimo comes in its approach to (re)using existing open source packages. Near the conclusion of this tutorial, a table outlines some of Geronimo's key components and describes their sources (such as Apache or other open source community projects). Now, let's dive deeper into the world of J2EE application servers. Apache Geronimo uncovered Page 4 of 23 © Copyright IBM Corporation 1994, 2008. All rights reserved. ibm.com/developerWorks developerWorks® Section 3. Considerations of J2EE application servers: What makes them tick? This section explores the container constructs of WebSphere Application Server and Geronimo in detail. Application server overview Application servers are the centerpiece of any J2EE implementation. They provide all the run time, core operational infrastructure, and interface plumbing for deployed Java/J2EE applications. Being a specification-oriented architecture, J2EE mandates that any application server that aims to be called a J2EE application server must adhere to the specification exactly. As noted earlier, Geronimo, like any J2EE-compliant server, has had to undergo significant testing through the J2EE certification process to become J2EE certified. Some people think the certification process is counterproductive; but although it's a resource- and time-intensive requirement for enterprise applications, it's considered mandatory to always run on a fully certified platform. The application server concept was developed years ago by pioneers, such as ATG with its ATG Dynamo application server. The application server concept is an abstracted runtime architecture. The core idea is to hide the intricacies of integration, run time, communications, and so on from the developer and have the application server run these facilities and services. Figure 2 shows a high-level view of the container concept. Figure 2. High-level context view of a J2EE application server Apache Geronimo uncovered © Copyright IBM Corporation 1994, 2008. All rights reserved. Page 5 of 23