This tutorial walks you through configuring, developing and deploying an enterprise application with Eclipse and Geronimo. To run this tutorial, as a minimum you will be required to have installed the following prerequisite software.

To run this tutorial, as a minimum you will be required to have installed the following prerequisite software.

Sun JDK 5.0+

Eclipse IDE for Java EE Developers, which is platform specific

Apache Geronimo Eclipse Plugin 2.1.x

Apache Geronimo Server 2.1.x

Geronimo version 2.1.x, Java 1.5 runtime, and Eclipse Ganymede are used in this tutorial but other versions can be used instead (e.g., Geronimo version 2.2, Java 1.6, Eclipse Galileo)

Details on installing eclipse are provided in the Development environment section. This tutorial is organized in the following sections:

Create the enterprise application project

Start from creating an enterprise application project from the eclipse workspace.

In the EAR Application Project wizard type in SampleEAR as the Project name and select Apache Geronimo v2.1 in Target Runtime. Leave the rest as it is.

Click Next.

In the J2EE Modules to Add to the EAR window select the Generate Deployment Descriptor checkbox and click Next.

In the Geronimo Deployment Plan window enter the values as specified below. To find out more about what these values mean check the Creating deployment plans section.

Group Id: sampleear

Artifact Id: sample-ear

Version: 1.0

Artifact Type: ear

Click Finish.

If asked about changing to the Java EE perspective, click Yes. You may want to select the Remember my decision checkbox to avoid dealing with it in the future.

You should now have the following project structure.

Error message

Don't worry about the error cvc-complex-type.2.4.b: The content of element 'application' is not complete... for now. We'll fix it in the next step when you define an ejb module (and webapp module afterwards).

Create the EJB project

The next step is to create an EJB project to hold your EJBs.

Select File -> New, select EJB Project.

In the EJB Project wizard type in SampleEJB as the project name and select Add project to an EAR checkbox. Leave the rest as is and click Next.

Unselect the Create an EJB Client JAR module to hold the client interfaces and classes checkbox. We're not interested in it. Click Next.

Fill in the Geronimo Deployment Plan fields with the following values:

Group Id: sampleear

Artifact Id: sample-ejb

Artifact Type: ejb

Click Finish.

You should now have the following project structure.

Important

Remove ejbModule/META-INF/openejb-jar.xml file in the SampleEJB project as it causes deployment issues. See the file highlighted in the image above.

Create the dynamic Web project

Now that you have EAR and EJB projects created the next step is to create a Dynamic Web project to hold your Web application.

Select File -> New, select Dynamic Web Project.

In the Dynamic Web Project wizard type in SampleWAR as the project name and select Add project to an EAR checkbox. Leave the rest as is and click Next twice.

Fill in the Geronimo Deployment Plan fields with the following values:

Group Id: sampleear

Artifact Id: sample-war

Artifact Type: war

Click Finish.

You should now have the following project structure.

Create Stateless Session EJB

Every stateless session EJB has its own business interface. There are three types of business interfaces - @Remote, @Local and @WebService - and combinations of these three. EJB development starts from defining a business interface and implementing it in a bean implementation class. We do this in the next steps.

Create remote business interface

Right click on the SampleEJB project and select New -> Interface and fill it in with the following values:

Package: sampleear

Name: RemoteBusinessInterface

Click Finish.

Now we need to add a business method and mark the interface as a remote one with @Remote annotation.

RemoteBusinessInterface.java

Create bean class

Right click on the SampleEJB project and select New -> Class and fill it in with the following values:

Package: sampleear

Name: MyStatelessSessionBean

Interfaces: sampleear.RemoteBusinessInterface

Click Finish.

Implement the business method sayHello and mark the class as a stateless session bean with the @Stateless annotation.

MyStatelessSessionBean.java

Web application development

The time has come to use the EJB in the Web application. In this section we create a jsp index.jsp page that executes a servlet MyServlet that in turn executes the ejb MyStatelessSessionBean.

Create welcome page index.jsp

Right click on the SampleWAR project and select New -> JSP. Name it index.jsp and click Finish.

Change it so it executes the servlet upon form submission.

index.jsp

Create servlet - MyServlet

Since the servlet calls the EJB, the Web project the servlet is in depends on the EJB project. Let's define the dependency.

Right click on the SampleWAR project and select Properties. Go to J2EE Module Dependencies and select the checkbox next to SampleEJB.jar (it's in the J2EE Modules tab) and click OK.

Right click on the SampleWAR project and select New -> Servlet and fill it in with the following values:

Java Package: sampleear

Class name: MyServlet

Click Next.

Change the URL Mapping section so the servlet serves at /sayHello url mapping and click Finish.

MyServlet.java opens up automatically for editing after creation, update the servlet as shown below to call off the ejb when executed.

MyServlet.java

Deploy and run

All it's left before we test this sample it to deploy it. This task is done automatically for you when you choose to run the application directly from the eclipse workspace.

Right click on the SampleEAR project and select Run As -> Run on Server. When Run On _Server popup window comes up, select the Always use this server when running this project checkbox. Leave the rest as is.

Click Finish.

The server's stopped so nothing happens (from a user's perspective at least). Open up the Servers tab and right click on Apache Geronimo v2.1 Server at localhost and select Start.

After a few seconds, Geronimo will be up and running with the enterprise application published. Open up the browser of your choice and go to http://localhost:8080/SampleWAR.