The first part of this guide:
- Acquaints you with the Apache Geronimo application server and the open source Geronimo project.
- Shows you where to go to download the server and how to install it.
- Provides step-by-step instructions for creating your first Geronimo application.
The second part of this guide contains a list of frequently asked questions (FAQs). Questions range from "Where do I get the latest technical information?" to "How do I get in touch with Geronimo developers in the community?" You'll find some of the most puzzling Geronimo questions answered here.
About the Geronimo application server
The Apache Geronimo project (see Resources for a link) aims to create a vibrant global community of J2EE users and developers around the code base for a fully compliant, open source J2EE 1.4 application server.
At the time of this writing, the project team is racing toward Release 1.0 status, at which time the server will be fully J2EE 1.4 certified. Meanwhile, milestone builds of Geronimo are available (see Resources for a link to milestone downloads). These milestone builds include binary distributions that provide a fully functional server environment for development and evaluation purposes.
To make sure that the server hit the ground running, Geronimo developers integrated several existing, field-tested open source projects into it. Many of these projects are mature and well known. In fact, you might already be using them. Table 1 shows some of the open source code that is integrated into Geronimo.
Table 1. Open source projects integrated into Geronimo
| Open source project | Description |
|---|---|
| Apache Tomcat 5.5 | Web-tier application server supporting Java Servlet 2.4 and JavaServer Pages (JSP) 2.0 |
| Jetty | Web-tier application server supporting Java Servlet 2.4 and JavaServer Pages 2.0 -- an alternative to the Tomcat server |
| ActiveMQ | Open source Java Message Service (JMS) 1.1 applications provider and supporter of message-driven beans (MDBs) |
| OpenEJB | Open source Enterprise JavaBeans (EJB) Container System and EJB Server that supports Enterprise JavaBeans at the 2.1 level, including Container Managed Persistence 2 (CMP2) and EJB Query Language (EJBQL) |
| Apache Axis and Scout | A Simple Object Access Protocol (SOAP) implementation (Axis) and JSR 93 (JAXR) implementation (Scout) for Web services and Web Services Interoperability Organization (WS-I) Basic Profile support |
| Apache Derby | Full-fledged relational database management system (RDBMS) with native Java Database Connectivity (JDBC) support |
In addition to the open source projects that support the J2EE core of Geronimo, listed in Table 1, the Geronimo community has contributed a couple of significant and well-known open source projects. These projects, listed in Table 2, are integrated into and tested in Geronimo, and are included with some Geronimo binary distributions.
Table 2. Contributed open source projects integrated into Geronimo
| Open source project | Description |
|---|---|
| Spring Framework | Popular application framework for constructing applications from lightweight Inversion of Control (IoC) components |
| ServiceMix | Open source toolkit that supports Java Business Integration (JBI) and provides an Enterprise Service Bus (ESB) for service-oriented architecture (SOA) implementation |
If you already use of any of the above open source projects, your learning curve for Geronimo will be significantly shorter.
Applications, application services, and components you can run on Geronimo
The integrated services shown in Table 1 enable you to run a variety of applications, application services, and components on Geronimo. These include the following:
- Web applications based on JSPs and servlets
- Enterprise applications that contain JSPs, servlets, and EJBs
- Relational database services
- JMS-based message queue components
- MDB components
- Lightweight application components based on Spring
- Web services
- JBI service components
Without further delay, it's time to set up your own Geronimo server.
Get up and running with Geronimo in five minutes flat
Before starting, go through this checklist to make sure you have the following:
- A high-speed Internet connection to download the server's code
- The Sun Java 2 Platform, Standard Edition (J2SE) Development Kit (JDK) 1.4.2_08 or later (JDK 1.5 currently will not work) installed and running on your system
- Microsoft® Windows® 2000, Windows Server 2003, or Windows XP (for Windows operating system users)
- Most versions of Linux® with a known working Sun JDK 1.4.2 application, or the well-tested and supported Red Hat Enterprise Linux, Version 3 or 4, or SUSE Linux Enterprise Server, Version 9 (for Linux operating system users)
- Sun Solaris™ 9 and 10
- At least a 1.6-GHz Intel® Pentium® 4 processor (or equivalent), which should ideally have 1 GB of RAM (although as little as 256 MB will work
- 200 MB or more of free disk space to install and run Geronimo (in a pinch, even 60 MB will work)
Once you've gone through the above checklist, download the latest milestone build of Geronimo (see Resources for a link) from the Apache Geronimo site (this article uses Milestone 4 or M4).
Select the .zip or .jar installation for now; this is the quickest installation choice. The other choice is an .exe installer, which provides more configuration options and is useful for later builds.
Decompress the .zip or .jar installation into an installation directory of your choice. For the purposes of this article, it will be called Geronimo_installation_directory.
Default installation is as simple as unarchiving the distribution. Now, you're ready to start your server.
Change your current working directory to Geronimo_installation_directory, and then enter the following command:
java -jar bin/server.jar |
The server is bundled and ready to run from the Geronimo_installation_directory as the server.jar archive.
Figure 1 shows the console display of a successful startup of the server. Yours should look similar.
Figure 1. Starting the Geronimo server
In Figure 1, several integrated services report the TCP port they are listening to for requests on your system. If you need to shut down the server, type control-c at the console. Release 1.0 of Geronimo will support the installation of the server as a system service, allowing it to run without a console.
Build your first Geronimo application in 10 minutes
Listing 1 shows the simple single JSP Web application that you'll create. It consists of a single JSP printing the Hello world! message. The JSP also uses the standard <jsp:useBean> directive and Expression Language (EL) to print the current server time.
Listing 1. Hello world JSP
<html>
<head>
<jsp:useBean id="datetime" class="java.util.Date" />
<title>dw Getting Started with Geronimo</title>
</head>
<body>
<h1>Hello world, from Geronimo!</h1>
on ${datetime}
</body>
</html>
|
First, create a working directory called project_base to contain the project. In this directory, create the hellojsp.jsp file with the content of Listing 1.
Now create a subdirectory under your project_base directory called WEB-INF. In this WEB-INF directory, create a web.xml file with the content shown in Listing 2.
Listing 2. web.xml deployment descriptor for hellojsp.war
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<description>
developerWorks Getting Started with Geronimo
- Hello JSP example
</description>
<display-name>
IBM developerWorks getting started with Geronimo example
</display-name>
</web-app>
|
Listing 2 is a standard Servlet 2.4-compliant, J2EE deployment descriptor. This descriptor is required by the J2EE 1.4 standard for Web Application aRchive (.war) files.
Now, back in the project_base directory, create the .war file using the command:
jar cvf hellojsp.war |
You now have a hellojsp.war file that you can deploy to the Geronimo server.
To deploy the simple Web application, copy the hellojsp.war file to your Geronimo_installation directory. From this directory, deploy the application using the runtime deployer:
java –jar bin/deployer.jar --user system --password manager deploy hellojsp.war |
The Geronimo deployer prints the following status indicator upon successful deployment of your first Geronimo application:
Deployed hellojsp |
Now start up a browser, and try the URL http://localhost:8080/hellojsp/hellojsp.jsp.
The default Jetty container processed and executed the JSP (in Release 1.0, you will be able to run Tomcat as default). Your browser displays the JSP, as shown in Figure 2.
Figure 2. Hello world JSP running in Geronimo
Congratulations! You've just completed installation and setup of the Geronimo server; you even created an application from scratch and deployed it to the server.
The next section of this guide contains a list of FAQs for new Geronimo users.
How do I find out what is deployed on my Geronimo server?
Use the runtime deployer to list all the deployed modules on your server. The command for this is:
java -jar bin/deployer.jar -user system -password manager list-modules |
What should I do if I find a bug in Geronimo or have a new feature request?
The Geronimo project uses the Apache Software Foundation's bugs and issue tracking database (see Resources for a link) to track issues and feature requests. Any Geronimo user is welcome to submit bugs and/or feature requests.
Before you submit a bug or feature request, check the currently open issues to make sure that somebody else hasn't filed the same bug/feature.
You need to create an account for yourself the first time you log on. Then you can enter the description of the bug you've found. Make sure you provide detailed steps to reproduce the bug, and attach any file that may be helpful.
Where can I get more technical information on Geronimo?
You might want to start with these overview articles from developerWorks on Geronimo's architecture (see the Resources section for links to all of these articles):
- "Building a better J2EE server, the open source way" (developerWorks, May 2005)
- "Geronimo! Part 1: The J2EE 1.4 engine that could" (developerWorks, May 2005)
- "Geronimo! Part 2: Tame this J2EE 1.4 bronco" (developerWorks, May 2005)
Here's a partial list of resources to check out for more specific Geronimo development tasks (go to the Resources section for links):
- The official Geronimo project and community Web site is a mandatory stop for information.
- If you want to work with JSP and Web applications, check out "Powerful browser detection and custom JSP tags with Geronimo" (developerWorks, September 2005).
- For EJBs, check out "Dive into EJB Web applications with Geronimo" (developerWorks, July 2005).
- If you're working with JMS, read "Magic with JMS, MDBs, and ActiveMQ in Geronimo" (developerWorks, July 2005).
- For databases, read "Three ways to connect a database to a Geronimo application server" (developerWorks, June 2005).
- If you're interested in Web services, read "J2EE Web services in Geronimo, Part 1" (developerWorks, August 2005) and "Deploy Web services in Apache Geronimo" (developerWorks, June 2005).
- If you're a client or GUI developer, read "Create client applications for Geronimo" (developerWorks, June 2005) and "Connect a Java Swing application to a Geronimo server" (developerWorks, July 2005).
- Geronimo's security implementation is discussed in "Build a secure enterprise infrastructure with Geronimo" (developerWorks, July 2005).
You can find the latest Geronimo articles and tutorials on the developerWorks Apache Geronimo project resources page (see Resources).
The Geronimo project wiki (see Resources) is a community-based information site with community-maintained details on many technical aspects of Geronimo.
Are there any books about Geronimo?
Yes. Every major technical book publisher has a book about Geronimo. Most of them are targeted for late 2005 and early 2006 releases. Apache's Geronimo book list shows the upcoming books about Geronimo (see Resources for a link to the list).
Is there any Integrated Development Environment (IDE) support for Geronimo?
Yes. A Geronimo plug-in for Eclipse is available from the Eclipse Web Tools Platform project (see Resources for a link to the Web page). You can learn about the features of this plug-in in the article "Create, deploy, and debug Apache Geronimo applications" (see Resources). A NetBeans plug-in is another work in progress.
Geronimo is licensed under the Apache License, Version 2.0 (see Resources to link to the license), one of the most recognized and liberal open source licenses in the industry. While the specifics of the license are best interpreted by competent legal counsel, in essence you may freely use the server in your project with no obligation for contribution.
What is open source software? Is it legal to just download and use? Is IBM endorsing it?
See developerWork's "New to open source" resource center in the Resources section for answers to these questions.
See the list of Geronimo committers (go to the link in the Resources section). A committer is a developer of the Geronimo server who has write access to Geronimo's source code repository. The current team of committers is a global, eclectic group of professional developers with the common interest of developing a world-class J2EE server. Individuals and employees from multiple vendors are represented. If you're interested in becoming a Geronimo developer, see the answer to How to become a committer for more details.
Actually, Geronimo is much more than just a J2EE server. It's a generic framework for gluing together service components. The concept of assemblies in Geronimo enables you to create specialized versions of Geronimo that contain only the server components you need. A J2EE server is just one specific assembly of existing open source service components. It's possible to integrate any other service component into Geronimo. See "Integrate third-party components into Geronimo" (developerWorks, August 2005) for an example (link to this article in Resources). Flexible assemblies will enable Geronimo to integrate other best-of-breed servers in the future.
I need help with Geronimo. Who can I turn to?
The Apache Geronimo user mailing list is your best bet (see Resources for a link). Many community members, as well as the development team, read this list. You're likely to get help quickly if you use this list. As a courtesy, you should always search the list first to see if the question you want to ask is already answered.
If your company is developing production-quality J2EE applications, and you prefer reliable, expert-level support, then IBM Support for Apache Geronimo is the subscription service for you (see Resources for a link).
How do I get in touch with the Geronimo developers?
You can find several lead Geronimo developers in the developerWorks Apache Geronimo community forum (see the link in the Resources section). They can answer your technical questions. You can also check the developerWorks "Meet the experts" section (see Resources), where Dain Sundstrom answers technical questions on Geronimo development.
The intense around-the-clock development schedule of Apache Geronimo means that there are always a couple of developers around. You can often catch someone at the IRC channel that they use to talk shop. To use this resource, you need an IRC client, and you need to join the #geronimo channel. See the freenode server for IRC information (go to Resources for the link).
All active Geronimo developers subscribe to the Geronimo developer mailing list (see Resources). This mailing list is restricted to discussions directly related to development of the Geronimo server.
Once a year, you have a chance to rub shoulders and chill out with the cream of the Apache developers' crop at the annual ApacheCon conference (see Resources for a link to the Web page).
What are Geronimo milestone builds?
Before the official Geronimo 1.0 release, releases of the Geronimo server are made available through milestone builds. These builds are provided for early community access to the server. This is a common practice for open source projects.
As of this writing, Milestone 4 of Geronimo is available. Table 3 provides some information about the different Geronimo milestone builds that you might see in circulation.
Table 3. Geronimo milestone builds
| Milestone build | Description |
|---|---|
| M5 | The latest feature set and closest to 1.0 release. Incorporates a Web console. You can now easily select between Tomcat and Jetty for Web-tier components. |
| M4 | The first milestone build that supports EJBs fully through OpenEJB. |
| M3 | Major milestone build. All Web-tier support is in place, ActiveMQ is functional, and Derby is the built-in RDBMS. EJB support is broken. Favors Jetty over Tomcat for Web-tier deployment. |
| M1 and M2 | Limited circulation release offering a restrictive feature set. |
Are there any other binary distributions than the milestone builds?
Yes. During periods of rapid feature additions or long periods between milestone builds, the Geronimo team often makes the latest unstable builds available.
These builds are exactly what the name implies -- untested and not guaranteed to be stable. However, they provide the latest available feature set to the users who need to evaluate it but are unable to build from source code.
How do I build Geronimo from source code?
Building Geronimo from source code is not simple. But then, you would be doing on your desktop computer what multibillion-dollar software companies used to do on their dedicated build servers.
Geronimo is a large project and uses an arsenal of version control and build tools. Be prepared to spend some time troubleshooting your setup if you insist on proceeding. When you're ready, check out the wiki page on building Geronimo from source code for the latest information (see Resources for the link).
You can't just sign up. The Geronimo team, like the famous Apache Web server team it's modeled after, is a meritocracy. This means that you must first prove your worth to the community. This can be accomplish by a dedicated effort over a long period of time (typically, months) to make significant contributions to the project. You have to start by fixing bugs, submitting patches, interacting with the community, and writing a lot of code. Then one fine day, an existing committer of the project will send you an invitation to become a member. The existing group of developers will then vote, based on what they've seen of your work, for you to become an official committer.
In the modern world of open source technocrats, an earned committer status in a major Apache project, such as Geronimo, is a prestigious, globally recognized degree of exemplary cyber citizenship and software mastery.
Check out the tutorial, "Apache Geronimo uncovered" (developerWorks, August 2005), available in the Resources section. It's written by Adam Neat, a longtime expert WebSphere user.
It doesn't get much better than this. A passionate, global team of open source developers are working around the clock on a standard, certified server that you can download and use freely -- with no obligation to contribute back in any form.
This server is designed to be scalable, manageable, and highly configurable from day one. It's free from legacy baggage of supporting existing users, yet empowered with the wisdom of hindsight, avoiding expensive mistakes previously made by others.
At the same time, Geronimo is a server backed by the pledge of support from a major global software company with an aggressive open source strategy, feeding the project with the vital brain power and resources it needs.
If you are a J2EE developer, you owe it to yourself to give Geronimo a spin.
Learn
Read the following developerWorks articles and tutorials for information about developing with Apache Geronimo:
- "Building a better J2EE server, the open source way" (developerWorks, May 2005)
- "Geronimo! Part 1: The J2EE 1.4 engine that could" (developerWorks, May 2005)
- "Geronimo! Part 2: Tame this J2EE 1.4 bronco" (developerWorks, May 2005)
- "Dive into EJB Web applications with Geronimo" (developerWorks, July 2005)
- "Magic with JMS, MDBs, and ActiveMQ in Geronimo" (developerWorks, July 2005)
- "Three ways to connect a database to a Geronimo application server" (developerWorks, June 2005)
- "Create client applications for Geronimo" (developerWorks, June 2005)
- "Connect a Java Swing application to a Geronimo server" (developerWorks, July 2005)
- "Build a secure enterprise infrastructure with Geronimo" (developerWorks, July 2005)
- "Deploy Web services in Apache Geronimo" (developerWorks, June 2005)
- "Create, deploy, and debug Apache Geronimo applications (developerWorks, May 2005)
- "Integrate third-party components into Geronimo" (developerWorks, August 2005)
- "Apache Geronimo uncovered" (developerWorks, August 2005)
- "Powerful browser detection and custom JSP tags with Geronimo" (developerWorks, September 2005)
- "J2EE Web services in Geronimo, Part 1" (developerWorks, August 2005)
- Visit the developerWorks Apache Geronimo project resources area to access resources for Geronimo developers.
- Check out the developerWorks New to open source resource center to get all the basics of open source and to help you get started in the most wide-ranging, growing, and dynamic field of software development today.
- Meet the experts of WebSphere software products; they're standing by to answer your questions.
- Visit the official Apache Geronimo project Web site.
- Access the Apache Software Foundation's bugs and issue-tracking database.
- See the Tomcat Web site for more information on Geronimo's servlet and JSP container.
- Check out Apache's Geronimo book list.
- Visit the Geronimo project wiki, and read about building Geronimo from source code while you're there.
- Visit the Jetty Web site for information about another popular servlet and JSP container integrated into Geronimo.
- Find out more about the annual ApacheCon conference.
- Learn more about the OpenEJB project, from which Geronimo's EJB engine originated.
- View the Apache License, Version 2.0.
- Access the Geronimo user mailing list and Geronimo developer mailing list.
- Find out about the versatile and wildly popular ActiveMQ server, which is integral to Geronimo and handles JMS applications and MDBs.
- Learn about the Apache Derby RDBMS server, Geronimo's built-in relational database.
- See the freenode server for IRC information.
- Explore Apache Axis and Apache Scout, both of which handle Web services for Geronimo and are the industry's de facto standards when it comes to Java-based Web services engine components.
- Get a lot more information on the ServiceMix engine integrated into the Geronimo distribution.
- Visit the developerWorks Open source zone for extensive how-to information, tools, and project updates to help you develop with open source technologies and use them with IBM's products.
Get products and technologies
- Get IBM Support for Apache Geronimo, IBM's world-class support program for Geronimo development.
- Download the latest Geronimo milestone.
- Get the Eclipse Web Tools Platform.
- Download the Geronimo application server.
- Innovate your next open source development project with IBM trial software, available for download or on DVD.
- Download Gluecode Standard Edition, an open source application server based on Apache Geronimo.
Discuss

Sing Li is an active author and has contributed to Beginning JavaServer Pages, Professional Apache Tomcat 5, Pro JSP - Third Edition, Early Adopter JXTA, Professional Jini, Beginning J2ME: From Novice to Professional, Third Edition, and numerous other books. He's a regular contributor to technical magazines and an active evangelist of the Voice Over Network (VON) and Peer to Peer (P2P) evolutions. Sing is a consultant and freelance writer and can be reached at westmakaha@yahoo.com.
Comments (Undergoing maintenance)





