Chapter 3. About the Example Applications

3.1. The J2EE Tutorial

We will make use of the example applications provided by Sun in the J2EE tutorial, in particular the Duke’s Bank application. You can find the tutorial on-line at You should read the getting started information there and download the example code from

We will look at how to run the code in JBoss, supplementing the tutorial where necessary with JBoss-specific configuration information and deployment descriptors. While you’re online, make sure you’ve downloaded the additional code that comes with this document, which is available along side this document on the JBoss documentation page,

The tutorial uses the Apache Ant build tool, which you should download and install. You can get an up-to-date copy of Ant from We recommend using version 1.6.2 or later with this tutorial. Ant is almost universally used in Java projects these days so if you aren’t already familiar with its use then we recommend you spend some time reading the documentation that comes with it and learning the basics of Ant build files. The default file name is build.xml, and it contains a set of targets which you can use to perform automated tasks in your project. Usually all you will have to do is run the Ant command in the directory which contains the build file. The default target in the file will perform the necessary

The tutorial explains how to run the applications with the J2EE SDK Reference Implementation server. Our aim will be to deploy them in JBoss.

3.2. What’s Different?

J2EE technologies are designed so that the code is independent of the server in which the application is deployed. The deployment descriptors for EJBs and web applications (ejb-jar.xml and web.xml, respectively) are standard and also do not need to change between different J2EE containers. However, there are still one or two things that need to be done in order to move the application to JBoss. In particular, we have to supply JBoss-specific descriptors and make sure that the database scripts will work.

3.2.1. Container-Specific Deployment Descriptors

Container-specific information is usually contained in extra XML descriptors which map logical information used in the application (such as JNDI names and security role names) to actual values which are used in the server. JBoss uses separate files for the EJB and web modules of an application, called jboss.xml and jboss-web.xml respectively. There is also a client version of these files which fulfils the same role in a Java client, in combination with the J2EE application-client.xml descriptor. If container-managed persistence (CMP) is being used for entity EJBs, it is also possible to configure the JBoss persistence engine through the jbosscmp-jdbc.xml file.

3.2.2. Database Changes

The J2EE SDK comes with the Cloudscape database and this is used throughout the tutorials. We will be using the Hypersonic database which runs as an embedded service within JBoss.

In a real-world situation, porting an application to a different databases is rarely straightforward, especially if proprietary features such as sequences, stored procedures and non-standard SQL are used. For these simple applications, though it is relatively easy. When we look at the Duke’s Bank application in the next chapter, you will see that there are only a few minor syntax changes required in the database scripts.

We’ll look at how to configure JBoss to use a different database in Chapter 8, Using other Databases.

3.2.3. Security Configuration

J2EE defines how you specify security constraints within your application, but doesn’t say how the authentication and access control mechanisms are actually implemented by the server or how they are configured. As we mentioned earlier, JBoss uses JAAS to provide a pluggable means of incorporating different security technologies in your applications. It also comes with a set of standard modules for the use of file, database and LDAP-based security information. We’ll start out using file-based information as this is the simplest approach.

3.3. J2EE in the Real World

The examples here are only intended to get you up and running with JBoss and to help you familiarize yourself with the basics. The applications definitely aren’t intended to reflect how you should go about writing production J2EE software - indeed there is a lot of differing opinion on this subject. Many people disagree on the use of EJBs for example, particularly the use of entity beans; the use of bean-managed persistence is especially controversial yet is convenient for examples. There is also endless debate about the use of different web technologies (it would be safe to say that not everyone loves JSPs) and the numerous different Model-2 frameworks that are out there. Struts was one of the first and is probably the best known but is not without its critics. We’ve provided some sources at the end of this chapter which you can check out for more information.

If you’re starting out, your best bet is probably to look at some existing open-source projects and see how they are structured, and then pick something appropriate for your project.

Finally, we hope you’ll realize that there’s a lot more depth to JBoss than we can hope to cover here and once you’ve worked your way through this basic introduction, we hope you’ll be eager to learn more. JBoss is also a continually evolving project with lots of plans for the future. So keep an eye on the bleeding-edge version, even if you’re running all your production applications on the stable 4.0 series.