You are on page 1of 59

Kick-start your Java apps: Free software, fast

development
Skill Level: Intermediate

Sing Li (westmakaha@yahoo.com)
Author
Wrox Press

27 Feb 2006

To create, test, and deploy a Web-based application or Web service rapidly, you
need a proven relational database, a standards-compliant Web application server,
and a flexible IDE. Ideally, all these software packages are production-tested, simple
to obtain, easy to use, and well integrated with one another. This tutorial shows you
how to use IBM-backed open source and free software to kick-start your Java™
Web-based application development. You'll learn exactly where to download such
components, install them, and get them working for you today.

Section 1. Before you start


Combine the proven power of the industrial-strength DB2® database with the
versatility of the J2EE 1.4 compatible WebSphere® Application Server, then throw in
the popular open source Eclipse IDE -- and you can have a highly productive
environment to create, test, and deploy Web-based applications and Web services.

This is not a secret, and professionals in large IT projects have been enjoying this
proven collection of software for years. But until now, the development community at
large has not had general access to these tools. Times have changed, though, and
today full-featured editions of the servers and IDE in this collection are only a
download away -- free of charge and free of license fees -- with full support from
IBM.

The Kick-start combo


With the Kick-start your Java apps suite, IBM has put together a
powerful combination of freely available software components for
data, deployment, and development:

• DB2 Express-C database server

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 1 of 59
developerWorks® ibm.com/developerWorks

• WebSphere Application Server Community Edition

• The Eclipse IDE

You're not locked in to using these packages in combination; each


works with a variety of other open-standards based components.
You can use Eclipse with other (even non-Java) application servers
and other databases. Application Server doesn't require either DB2
Express-C or Eclipse. And DB2 Express-C can fit into development
and deployment environments other than Eclipse and Application
Server. But, in ways you'll understand fully from this tutorial, using
the whole, tightly integrated suite can gain you a wealth of
advantages.

Java developers can now freely use the open source Eclipse IDE to create and test
applications and Web services and then install them to WebSphere Application
Server Community Edition (referred to throughout this tutorial as Application Server)
and DB2 Express-C for production deployment.

About this tutorial


This tutorial takes you along the shortest path to getting these software components
-- called the Kick-start your Java apps suite -- downloaded and working, letting you
discover their infinite possibilities while creating your next programming masterpiece.
It assists you in installing and setting up the components and reveals how they are
designed to work with one another. Toward this goal, the tutorial does not attempt to
cover all possible features or configuration options available for the individual
packages. You'll be able to discover each product's rich feature set at your own pace
as you continue exploration and development.

This tutorial guides you through:

• Downloading and installing DB2 Express-C


• Creating databases and manipulating data with tools in DB2 Express-C
• Downloading and installing Application Server
• Managing Application Server through the Web console
• Connecting Application Server to DB2 Express-C using a JCA 1.5
connector
• Downloading and installing Eclipse
• Installing the Application Server plug-in for Eclipse
• Managing, browsing, and editing DB2 Express-C data through the Eclipse
IDE
• Testing Web applications in Eclipse with embedded control of Application
Server instances

Kick-start your Java apps: Free software, fast development


Page 2 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

• Rapidly developing and testing a JSP/JSTL Web application in Eclipse,


with data access to DB2 Express-C, and deploying it to Application Server
• Configuring Application Server as a general Web server on the Internet
By the end of the tutorial, you'll have hands-on working experience with all the
software tools and have a simple data-driven Java application deployed on
Application Server.

Prerequisites
You should be familiar with Java development in general and server-side Java
development specifically. This tutorial assumes that you understand the general
operations of a relational database and are familiar with basic J2EE concepts, such
as deployment descriptors and WAR archives. Experience working with an
application server and relational database is beneficial but not mandatory.

System requirements
To follow along and try out the code for this tutorial, you need a working installation
of Sun's JDK 1.4.2_09 or the IBM JDK 1.4.2 SR3.

The recommended system configuration for trying out the tutorial is:

• A system supporting the JDK/JRE listed above with at least 512MB of


main memory (1GB recommended)
• At least 900MB of disk space to install the software components and
examples
The instructions in the tutorial are based on a Windows operating system. All of the
tools covered in the tutorial also work on Linux® and UNIX® systems.

Section 2. Overview
The Kick-start your Java apps suite of software includes the following products and
versions, which are designed to work well together:

• A database server: DB2 Express C (currently at UDB 8.2 level)


• An application server: WebSphere Application Server Community
Edition (currently release 1.0.0.1)
• An IDE: Eclipse (currently version 3.1.1 for use with the Application

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 3 of 59
developerWorks® ibm.com/developerWorks

Server 1.0.0.1 plug-in)


You can download all of these packages without cost or license fees.

Figure 1 illustrates how these products fit together for server-side Java application
development:

Figure 1. Eclipse, Application Server, and DB2 Express-C working together

Code, test, and debug in the Eclipse IDE


As Figure 1 illustrates, you can write, test, and debug your Java applications using
the Eclipse IDE. DB2 Express-C integrates with the Eclipse IDE to provide you with
easy access to your database content as well as metadata information, such as
schema, table, and field names. You can control instances of Application Server
from the Eclipse IDE to rapidly deploy and test your application components.

In addition to working together as a concept-to-production toolkit, you can use each


of these products alone or with a myriad of available interfacing technology. For
example, as you can see in Figure 1, you can access DB2 Express-C through
C/C++, Python, Ruby, and Perl APIs, among others.

Deploy applications on Application Server and DB2 Express-C

Kick-start your Java apps: Free software, fast development


Page 4 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

servers
Once you have tested your application in Eclipse, you can deploy it into production
running inside Application Server. Application Server is a J2EE 1.4 compatible
application server that can host applications constructed from Web components
such as JavaServer Pages (JSP), servlets, and Enterprise JavaBeans (EJB). You
can use Eclipse and Application Server with modern, open source, lightweight
frameworks such as the Spring Framework and Hibernate. Application Server also
doubles as a general-purpose Web server for static HTML pages and graphic files.
Users can access your application through a browser pointed to the Application
Server.

Your production applications, hosted on Application Server, can use DB2 Express-C
to store any application data. DB2 Express-C supports Java-based data access
through JDBC. It includes a fully licensed, high-performance type 4, 100% JDBC
driver. This driver works very well with 100% Java applications requiring relational
database management system (RDBMS) access.

Application Server has built-in support for J2EE Connector Architecture (JCA) 1.5
resource adapters and can make use of the DB2 Express-C JDBC driver to provide
data persistence for any hosted application.

Section 3. Introducing DB2 Express-C


As a member of the DB2 Universal Database™ family, DB2 Express-C is the
free-of-charge edition of the modern version of a "very big iron" RDBMS. This
section introduces DB2 Express-C, and the following three sections show you how
to download, install, and operate it. If you are already committed to a different
database that you'd like to use with Eclipse and/or Application Server in this tutorial,
feel free to skip these sections.

The robust, proven, and scalable database server


The core technology of DB2 has existed as an IBM product since 1983 and is a
mature and robust database engine. International enterprises use DB2 today to
maintain some of the largest databases on servers that run around the clock. The
DB2 server is designed from the ground up to handle virtually unlimited scalability. It
can handle increasing demand by scaling up (by adding more CPU and memory to
one server) or scaling out (by adding more servers over an interconnection network).
On a development system where the test databases are small, you can have
multiple instances running on one machine; when building very large database
systems, you can have a cluster of multiple machines working together to run a
single logical database instance.

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 5 of 59
developerWorks® ibm.com/developerWorks

Built-in management and business application features


DB2 Express-C is optimized for running on widely available, 32-bit
microprocessor-based server hardware (with extensions for 64-bit CPUs) and has
built-in self-monitoring, maintenance, and tuning features that take most of the
tedious work out of maintaining a database server. It is especially cost-effective for
small enterprise installations because it eliminates the need to retain full-time
database administration staff.

Transactions, XA distributed transactions, stored procedures, referential constraints,


and triggers have been well-tested, built-in features of DB2 servers for over a
decade.

DB2 Express-C can grow with your needs


All the data content and schemas that you create using DB2 Express-C are directly
compatible -- without the need to perform any conversions -- with even the largest
member of the DB2 Universal Database family. Should your data needs grow in the
future, DB2 can grow with your needs.

There is practically no limit to the size of the databases that you can create and
manage with DB2 Express-C. Depending on your application and database design,
a 32-bit server equipped with 4GB of main memory can readily handle databases
tens of gigabytes in size.

A restriction with DB2 Express-C is the memory size of the hardware on which you
can run the server. The limit of 4GB of physical memory corresponds to the typical
maximum addressable memory space for many 32-bit operating systems.

If your needs grow past this range of capacity, chances are you need to look beyond
32-bit server hardware and operating systems anyway. The DB2 Universal
Database family of products provides a smooth, scalable growth path without the
need to tackle costly and often risky data conversion.

Section 4. Downloading and installing DB2 Express-C


In this section, you'll download and install DB2 Express-C and build a sample
database. The instructions in this tutorial cover the installation of DB2 Express-C on
32-bit Windows-based systems only.

Downloading DB2 Express-C

Kick-start your Java apps: Free software, fast development


Page 6 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

To download DB2 Express-C, go to DB2 Universal Database Express Edition for


Linux and Windows.

If you do not yet have an IBM ID, you need to register before downloading DB2
Express-C. Registration is free and takes just minutes.

The file you download, named db2exc_NT_x86.zip, is in a compressed Zip format.

Before you proceed any further, you need to be aware that DB2 Express-C uses the
operating system's authentication system to authenticate users. In the case of
Windows, it uses the name of the logged-in Windows user. Any tables that you build
in the database are created under a schema with that username. For this tutorial,
make sure you are logged on to Windows as the same user who will create the
application. This eliminates the need to assign a specific level of privileges for your
explorations.

Installing DB2 Express-C


Unzip the downloaded file, db2exc_NT_x86.zip, to a directory. Then run
SETUP.EXE to begin installing DB2 Express-C. The DB2 Express-C setup screen,
shown in Figure 2, is displayed:

Figure 2. Setup screen for DB2 Express-C installer

You should read the installation prerequisites, verify that your hardware and

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 7 of 59
developerWorks® ibm.com/developerWorks

software satisfy them, and read the release notes. Then click Install Product.

Follow the wizard's directions to install DB2 Universal Database Express.

When prompted, select the Typical installation type, shown in Figure 3. This option
takes up to 500MB of disk space.

Figure 3. Selecting typical installation for DB2 Express-C

The next screen prompts you for an installation directory. The default is the Program
Files\IBM\SQLLIB\ directory on the system drive. This tutorial refers to this directory
as the SQLLIB directory.

Installing the DB2 system services


The next wizard screen sets up the user authorized for the DB2 Administration
Server (DAS). To keep things simple for this development system, select Use the
same user name and password for the remaining DB2 services, as shown in
Figure 4:

Figure 4. Windows user authentication assignments for DB2 installation

Kick-start your Java apps: Free software, fast development


Page 8 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

In the future, when you install production server instance(s), you should consult the
DB2 Administration Server User Guide to determine the security scenario most
applicable to your installation.

Completing the installation


Follow the remaining steps in the installation wizard, accepting the defaults. This
configures an instance called DB2 on your system and sets its default connection
protocol to TCP/IP.

After the wizard completes the installation, you'll notice:

• A new green DB2 tray icon (lower right-hand side of the screen next to
the system clock)
• A new menu named IBM DB2 with a variety of administrative and user
tools (under the Windows Start menu)

Creating the sample database


The application example that you'll work on later in this tutorial (see Creating a Web
application with Eclipse and WTP) makes use of a sample database provided by the
DB2 Express-C installation. To create this sample database, select IBM DB2 >

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 9 of 59
developerWorks® ibm.com/developerWorks

Setup Tools > First Steps from your Windows Start menu.

This starts the First Steps wizard. Select Create Sample Database from the
left-hand menu. The wizard proceeds to create a database called SAMPLE.

Section 5. Understanding the DB2 Express-C


components
This section covers the DB2 Express-C components you installed in the preceding
section (Downloading and installing DB2 Express-C). The components can be
grouped into two categories:

• DB2 system services


• DB2 tools and utilities for administrators, users, and developers

DB2 system services


DB2 Express-C is a database server that can process many data-access and
administration requests simultaneously. These requests can originate from the local
machine and any number of client machines accessing the server. Requests are
received through the network and processed on the server machine(s) by a set of
collaborating system services.

Table 1 describes the system services that are installed on your system:

Table 1. DB2 Express system services on Windows installations


Service name Executable name Description
DB2 System Controller db2syscs The main controller that
provides access to
persistent data and
manages storage
allocation,
memory-buffer pools,
and so on. On Windows
systems, this controller
spawns threads to
perform work; on Linux
systems, it can spawn
additional processes to
perform its work.
DB2 Governor db2govds Statistics collector for
DB2 applications.
DB2 JDBC Applet db2jds Support for JDBC.
Server

Kick-start your Java apps: Free software, fast development


Page 10 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

DB2 License Server db2licd Monitors and enforces


DB2 software license
policies.
DB2 Security Server db2sec Authentication server
for clients.
DB2 Database db2dasrrm Provides administration
Administration Server service functionality.
DB2 Fence Mode db2fmp Executes fenced stored
Process procedures and
user-defined functions
outside the engine's
address space (for
security
implementations).
DB2 system tray db2systray Not strictly a service,
manager this provides a tray icon
on the Windows
desktop for quick
access to DB2 utilities.

If you examine the Windows Task Manager's task list (type Ctrl-Alt-Delete to invoke
the Task Manager), you'll see several of these services running.

DB2 tools for administrators, users, and developers


Other than system services, the typical DB2 installation includes a rich set of tools.
Figure 5 provides an overview:

Figure 5. Tools and developer support for DB2 Express-C

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 11 of 59
developerWorks® ibm.com/developerWorks

In Figure 5, the tools for DB2 Express-C can be generally classified as


command-line based or GUI-based.

Development support
Java development support in DB2 Express-C includes access through JDBC (a type
4 driver and a type 2 driver are available) and SQLJ static embedded SQL. Windows
.NET developers can use the add-in support for development using the Microsoft
Visual Studio .NET development environment. Open source developers can take
advantage of the support for development using popular scripting environments,
including Perl, PHP, Python, and Ruby.

GUI-based tools
Table 2 briefly describes some of the GUI tools provided with DB2 Express-C. You
can explore these tools at your leisure:

Table 2. GUI tools included with DB2 Express-C installation


Tool Access to tool Description
DB2 Control Center Examines instances, databases,
• IBM DB2 > schemas, tables, etc. Can view,
General add, or modify objects and
Administration perform most administration
Tools > Control tasks. Also launches other
Center GUI-based tools.
• Right-click the tray

Kick-start your Java apps: Free software, fast development


Page 12 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

icon and select


DB2 Control Center
• db2cc from
command line

DB2 Information Center Launches browser to a Web site


• IBM DB2 > containing comprehensive
Information > up-to-date documentation and
Information information on the DB2 server.
Center
• db2ic from
command line

DB2 Development Center IDE tool that creates, builds,


• IBM DB2 > and deploys stored procedures
Development > and user-defined functions.
Development
Center
• db2dc from
command line

DB2 Replication Center Sets up replication environment


• IBM DB2 > for DB2 to DB2 replication.
General Replication enables you to
Administration maintain up-to-date copies of
Tools > your important data.
Replication
Center
• db2rc from
command line

DB2 Task Center Tool that schedules scripts (DB2


• IBM DB2 > or OS) and notifies users of a
General task outcome.
Administration
Tools > Task
Center
• db2tc from
command line

See the DB2 documentation for information on other GUI tools.

Section 6. Working with the DB2 Command Line


Processor
Some system administrators prefer a command-line interface over a GUI tool for the
purpose of server control. Many tedious custom administrative tasks can be

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 13 of 59
developerWorks® ibm.com/developerWorks

automated by creating scripts that execute against a command-line interface. This


section explores the command-line interface for DB2 Express-C.

The DB2 Express-C Command Line Processor


If you are more comfortable with a command-line interface to relational database
servers than with a GUI tool, you'll feel right at home with DB2 Express-C's
Command Line Processor (CLP). The DB2 CLP lets you work with the DB2
database using an interactive command-line interface with a rich set of commands.
You can literally perform everything that you can do from the GUI tools by using the
CLP.

To start the CLP, select IBM DB2 > Command Line Tools > Command Line
Processor from the Windows Start menu. Alternatively, assuming you have set up
your environment PATH variable to include SQLLIB\BIN, you can use the following
command:
db2

Figure 6 shows the DB2 CLP's greeting screen:

Figure 6. Logging on to the CLP of DB2 Express-C

Data query with DB2 CLP


The interactive CLP takes SQL commands as well as DB2-specific control
commands. To connect to the SAMPLE database, type the following command:
connect to sample

Figure 7 shows the result of this command. You are now connected to the SAMPLE
database:

Kick-start your Java apps: Free software, fast development


Page 14 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

Figure 7. Connecting to the SAMPLE database through the DB2 Express-C


CLP

The SAMPLE database contains a table of employee information called EMPLOYEE.


You'll use this table throughout the remainder of this tutorial.

You can directly enter SQL queries against the table. Try the following:
select * from employee where empno='000300'

The result is shown in the top half of Figure 8:

Figure 8. Command-line SQL queries in an interactive CLP session

In Figure 8, the result is the record for Philip Smith, who has the employee number
of 000300.

Figure 8 also illustrates the query to find all the employees with an annual salary of
$40,000 or more:

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 15 of 59
developerWorks® ibm.com/developerWorks

select firstname, lastname, salary from employee where salary > 40000

See Figure 8 for the result, showing four employees with salaries greater than
$40,000.

In addition to the standard SQL commands, many DB2-specific commands are


available. You can use the ? command at any time to get help.

To see the structure of the EMPLOYEE table, enter the following:


describe table employee

This command shows the fields structure of the EMPLOYEE table, as shown in Figure
9:

Figure 9. Using the DESCRIBE command to display table schema

The application you'll work through later in this tutorial makes use of the EMPLOYEE
table.

Creating your own data tables through the DB2 CLP


The DB2 CLP can take a text-based script file as input and execute each line of the
script as if it were entered at the command line.

Kick-start your Java apps: Free software, fast development


Page 16 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

The products.sql script file, found in the sql subdirectory of the code download for
this article (see Download), is shown in Listing 1:

Listing 1. The products.sql DB2 CLP script file for creating a table
CONNECT TO SAMPLE;
DROP TABLE PRODUCTS;
CREATE TABLE PRODUCTS (
SKU CHAR(15) NOT NULL,
DESCRIPTION VARCHAR(80) NOT NULL,
PRICE DECIMAL(10,2),
PRIMARY KEY(SKU)
);

INSERT INTO PRODUCTS VALUES('LCD1020','20 inch LCD TV',


299.00);
INSERT INTO PRODUCTS VALUES('CPU3818','PowerPC CPU',
200.00);
INSERT INTO PRODUCTS VALUES('HDR2929','800 GB Hard Disk',
899.00);

This standard SQL script file connects to the SAMPLE database, creates a table
called PRODUCTS, and places three rows in the table.

The DB2 CLP can process this script. Just enter the following command:
db2 -vf products.sql -t

Figure 10 shows the result of this command:

Figure 10. Processing a DB2 command script file using the CLP

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 17 of 59
developerWorks® ibm.com/developerWorks

You can get more information on the options available with the CLP from the
Information Center. You can also explore the newly created database visually with
the Control Center.

The next section examines another important engine for your Web applications:
WebSphere Application Server Community Edition.

Section 7. Introducing WebSphere Application Server


Community Edition
WebSphere Application Server Community Edition (Application Server) is a J2EE

Kick-start your Java apps: Free software, fast development


Page 18 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

1.4 compatible application server and a member of the IBM WebSphere family of
products. This section introduces you to Application Server's structure and
functionality. If you prefer to use a different application server for the purposes of this
tutorial, feel free to skip to Introducing the open source Eclipse IDE.

Server for J2EE 1.4 applications and Web services


Application Server is a no-license-cost server that supports the production hosting of
Web applications and Web services created to the J2EE 1.4 standard. This includes
applications that can contain the following elements:

• JSPs
• Servlets
• Custom Java coding
• EJBs
• Model-view-controller (MVC) frameworks
• Lightweight development frameworks
• JCA 1.5 resource adapters connecting to EIS or legacy systems
• Other data-access components

Once a Geronimo
The Application Server code is based on the popular Apache Geronimo project (see
Resources). As such, it comes with the capability to integrate with a large body of
open source technology. Moving forward, Application Server will continue to support
tight integration with best-of-breed open source technology, such as the Apache
Tomcat Web container and the ActiveMQ message broker.

The AJP protocol


This protocol is designed to enable the forwarding of requests for
dynamic server contents (JSP and servlet) from an Apache Web
server to an instance of a container for Java Servlets or JSPs. The
first version of such a container was named JServ. Since then,
however, Tomcat has taken over as the de facto open source
standard in Web-tier containers.

Application Server has built-in support to interoperate with legacy CORBA systems.
You can also use it to deploy and host Web services through its integration with
Apache Axis (see Resources). And you can use Application Server as a
general-purpose Web server to support the serving of static HTML pages and
graphical images.

For high-performance service of static Web assets, you can configure the Apache

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 19 of 59
developerWorks® ibm.com/developerWorks

JServ Protocol version 1.3 (AJP13) protocol connector to enable Application Server
to accept requests from an industry-standard Apache Web server (front end) (see
The AJP protocol).

Application Server's open source pedigree


Figure 11 shows the composition of Application Server. You'll recognize many open
source server components:

Figure 11. Application Server's open source server components

Table 3 summarizes the open source server components shown in Figure 11:

Table 3. The open source server components inside Application Server


Server Description
Apache Tomcat Popular container for Web-tier components.
Initially, Tomcat served as the reference
container implementation for the latest JSP and
Servlets specifications. Overwhelming support
from the developer and user communities has
made it the de facto standard in open source,
Web-tier containers. Three version families of
Tomcat are supported: 3.x, 4.x, and 5.x.
Application Server integrates Tomcat 5.5. (See
Resources for Tomcat's open source community
Web site.)
ActiveMQ Popular message broker that supports a rich set

Kick-start your Java apps: Free software, fast development


Page 20 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

of transports. Supports the Java Message


Service (JMS) 1.1 API. Includes a JCA 1.5
resource adapter and support for Message
Driven Beans. (See Resources for ActiveMQ's
open source community Web site.)
OpenEJB An EJB container supporting the EJB 2.1
specification, including Container Managed
Persistence (CMP) 2 and EJB Query Language
(EJBQL). (See Resources for OpenEJB's open
source community Web site.)
Apache Derby Based originally on code from IBM's Cloudscape
product, Apache Derby is a full-featured RDBMS
created completely in Java code. Application
Server currently uses Apache Derby as its own
internal embedded database. (See Resources for
Apache Derby's open source community Web
site.)

Section 8. Downloading and installing Application Server


This section walks you through downloading Application Server (and, optionally,
some additional items that might enhance your configuration) and performing the
installation.

Downloading Application Server


To download Application Server 1.0.0.1, go to Download: WebSphere Application
Server Community Edition V1.0.0.1.
Important note: The instructions in this tutorial pertain to version
1.0.0.1 of Application Server. This version is significantly different,
especially with respect to the Web console menu's layout and
configuration identifiers, from version 1.0. Be sure to use version
1.0.0.1 or later as you follow along with this tutorial.

The Application Server distribution you download is in Windows EXE format. The file
is probably named wasce_setup-1.0.0.1.exe. (The actual filename might differ
depending on version.)

Make sure you also download the Eclipse plug-in for this version of Application
Server. Note that plug-ins are highly specific to the version of Eclipse and
Application Server that you use. You should not attempt to use the downloaded
plug-in for with any other version of Application Server (or Eclipse) other than the
one specified. In this case, the file is named wasce_eclipse_plugin-1.0.0.1.zip, and it
works against the 3.1.1 version of Eclipse.

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 21 of 59
developerWorks® ibm.com/developerWorks

Optional additional downloads


In addition to the Application Server and plug-in downloads, you might also want to
download these items from the same site:

• Application Server documentation


• IBM JRE 1.4.2 SR3 that supports the Application Server version
• Application Server sample applications
These downloads are not mandatory, but they can be helpful for your configuration.

Installing Application Server


To install Application Server, run the wasce_setup-1.0.0.1.exe file on your system.
The installation wizard prompts you for a directory for the installation. You can
specify your own directory or accept the default.

To start the server after installation, select IBM WebSphere > Application Server
Community Edition > Start the server from the Windows Start menu.

You should see a command console open that displays the server startup
information, similar to Figure 12:

Figure 12. A system console showing output from the Application Server
startup

Kick-start your Java apps: Free software, fast development


Page 22 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

To verify the success of the installation, start the Administration Console by selecting
IBM WebSphere > Application Server Community Edition > Administration
Console from the Windows Start menu.

This should start an instance of your browser, pointed to the login page for the
Administration Console. The Administration Console is actually a Web application
running inside Application Server. Figure 13 shows the login screen for the console:

Figure 13. The login screen for the Application Server Administration Console

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 23 of 59
developerWorks® ibm.com/developerWorks

Instead of using the menu selection, you can always reach the Administration
Console on a browser with the URL http://localhost:8080/console/.

If you wish to explore the Administration Console, use the predefined username
(system) and password (manager).

Section 9. Operating your Application Server


As with DB2 Express-C, you can control the basic operations of your Application
Server through either the Administration Console GUI or a command-line interface.
This section describes the basic commands available through either user interface.

Starting the server

Kick-start your Java apps: Free software, fast development


Page 24 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

To start the server, select IBM WebSphere > Application Server Community
Edition > Start the server from the Windows Start menu.

You can also change to the bin directory just below the Application Server
installation directory (or add the bin directory to your PATH environment variable)
and this command:
startup

Stopping the server


To stop the server, choose one of these three methods:

• Log in to the Administration Console and select Shutdown from its menu
on the left-hand side.
• From the Windows Start menu, select IBM WebSphere > Application
Server Community Edition > Stop the server.
• change directory to the bin directory just below Application Server
installation directory (or add the bin directory to your PATH environment
shutdown
variable) and issue this command:

Obtain a list of installed applications


On Application Server, installing applications to the server is called deployment.
Applications that are deployed to Application Server are maintained by the server as
configurations. To view the configurations deployed on the server, log on to the
Administration Console (using system for username and manager for password) and
select Application EARs or Web App WARs.

You can also issue this command from a command line while you're in the bin
subdirectory:
deploy list-modules

Application Server prompts you for a username and password (use system and
manager). This runs the command-line deployer tool and obtains module information
on all the configurations installed on this server. Figure 14 shows the output from a
list-modules command:

Figure 14. Showing all configurations installed in a Application Server

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 25 of 59
developerWorks® ibm.com/developerWorks

In Figure 14, a configuration name preceded by a plus sign (+) indicates that it is
installed and running. A configuration name without the + indicates that it is installed
but not currently running.

Section 10. Connecting Application Server to DB2


Express-C
In this section, you'll connect Application Server to DB2 Express-C. This lets any
application that's hosted in Application Server access the SAMPLE database
containing the EMPLOYEE and PRODUCTS tables that you created earlier in the
tutorial (see Working with the DB2 Command Line Processor).

Deploying a resource adapter


To connect the Application Server with DB2 Express-C, you need to create and
deploy a JCA 1.5 resource adapter on Application Server that accesses your DB2
SAMPLE database. This resource adapter uses the DB2 Express-C type 4 JDBC
driver to access the SAMPLE database.

Kick-start your Java apps: Free software, fast development


Page 26 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

A resource adapter already exists in Application Server (from an open source


implementation called TranQL) that works with the JDBC driver. The action that you
need to perform boils down to the following:

1. Uploading the DB2 Express-C JDBC driver to the code repository of


Application Server

2. Creating a deployment plan to deploy the TranQL resource adapter,


configured with the JDBC driver

Uploading the DB2 Express JDBC driver to the Application


Server repository
First, log on to the Application Server Administration Console. Click Common
Libraries in the left-hand menu. This shows all the entries in the repository where
Application Server keeps binaries of system and application components.

Figure 15 shows the list of entries in the repository. You need to upload two new
entries -- one for the JDBC library JAR file and another for the license JAR file.

Figure 15. Uploading the DB2 JDBC driver and license JARs to Application
Server repository

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 27 of 59
developerWorks® ibm.com/developerWorks

The JDBC library JAR file, called db2jcc.jar, is located in the SQLLIB/java
subdirectory of your DB2 Express-C installation directory. The license file,
db2jcc_license_cu.jar, is also there.

Click the Browse button, browse to the SQLLIB/java directory, and select db2jcc.jar.

Use the settings shown in Figure 15 for adding the db2jcc.jar to the directory. Use
the following settings to add db2jcc_license_cu.jar:

• Group: java
• Artifact: db2jcclicense
• Version: 8.2
• Type: jar
After you add the two JAR files, take a look at the list of entries in the repository and
you should see two new ones:

Kick-start your Java apps: Free software, fast development


Page 28 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

• java/db2jcc/8.2/jar
• java/db2jcclicense/8.2/jar

Adding a system-wide database pool


The TranQL JCA 1.5 resource adapter provides database pooling for all Application
Server-hosted applications. To deploy the adapter, log on to the console and click
Database Pools in the menu on the left-hand side. You should see the currently
deployed database pools, as shown in Figure 16:

Figure 16. Displaying the currently configured database pools in Application


Server

In Figure 16, the server-wide database pool called SystemDatasource accesses a


Derby database that is used internally by Application Server.

Click the Create a new database pool: Using the Geronimo database pool
wizard option.

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 29 of 59
developerWorks® ibm.com/developerWorks

Fill in the details of the pool with values shown in Table 4. This will involve the next
few screens of the wizard.

Table 4. Configuration for the Application Server database pool connecting to


SAMPLE DB2 database
Field Value
Name of Database Pool dwDatasource
Database Type DB2
JDBC Driver Class com.ibm.db2.jcc.DB2Driver
Driver JAR java/db2jcc/8.2/jar
DB User Name Windows user name under which DB2 Express-C
is installed
DB Password Windows user's password for DB2 Express-C
Port 50000
Host localhost
Database sample
JDBC Connect URL jdbc:db2://localhost:50000/sample

Leave the rest of the configuration empty, accepting the default values, and then
click the Test Connection button. This causes Application Server to attempt to
connect to the SAMPLE database. If the attempt is successful, you should see a
screen similar to Figure 17:

Figure 17. Successful test connect to the DB 2 Express-C database from


Application Server

Kick-start your Java apps: Free software, fast development


Page 30 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

Adding the license JAR file

The connection is now tested, but to access the data successfully, you must also
add the license JAR file for the JDBC driver to the plan. Unfortunately, there is no
automated way to accomplish this at this time with Application Server. Follow these
manual steps:

1. Click the Show Plan button (see Figure 17).

2. Copy the plan into a text editor and save it as dsplan.xml.

3. Edit dsplan.xml to add the dependency on the JAR license file by


including the boldfaced lines in Listing 2.

4. Save the modified dsplan.xml.

Listing 2. dsplan.xml -- the Application Server system-wide database pool


deployment plan for the DB2 Express-C database connection

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 31 of 59
developerWorks® ibm.com/developerWorks

<?xml version="1.0" encoding="UTF-8"?>


<connector configId="console-db-pool-dwDatasource" xmlns=
"http://geronimo.apache.org/xml/ns/j2ee/connector-1.0">
<dep:dependency xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.0">
<dep:uri>java/db2jcc/8.2/jar</dep:uri>
</dep:dependency>
<dep:dependency xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.0">
<dep:uri>java/db2jcclicense/8.2/jar</dep:uri>
</dep:dependency>
<resourceadapter>
<outbound-resourceadapter>
<connection-definition>
<connectionfactory-interface>
javax.sql.DataSource
</connectionfactory-interface>
<connectiondefinition-instance>
<name>dwDatasource</name>
<config-property-setting name="Password">
mypassword
</config-property-setting>
<config-property-setting name="Driver">
com.ibm.db2.jcc.DB2Driver
</config-property-setting>
<config-property-setting name="UserName">
sing
</config-property-setting>
<config-property-setting name="ConnectionURL">
jdbc:db2://localhost:50000/sample
</config-property-setting>
<connectionmanager>
<local-transaction/>
<single-pool>
<match-one/>
</single-pool>
</connectionmanager>
</connectiondefinition-instance>
</connection-definition>
</outbound-resourceadapter>
</resourceadapter>
</connector>

Deploying the plan

Now you can use this plan to deploy the TranQL resource adapter. You can do this
from the command line.

Change the directory to the bin subdirectory of your Application Server installation
and enter this command on one line:
deploy deploy c:\dsplan.xml
e:\wasce10\repository\tranql\rars\tranql-connector-1.1.rar

You need to replace c:\ and e:\wasce10 with the path where you placed the
dsplan.xml file and the location where Application Server is installed, respectively.

The command-line deploy tool prompts you to enter a username and password. Use
system for username and manager for password.

When the TranQL connector is successfully deployed, the deployer tool returns with
the following:
Deployed console-db-pool-dwDatasource

Note that it has assigned the name console-db-pool-dwDatasource for this


deployed database pool. You can use this name to look up the pool.

Kick-start your Java apps: Free software, fast development


Page 32 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

If you select Database Pools again on the Web console menu, the display should
now show the dwDatasource pool as a deployed system-wide database pool.
Applications hosted in Application Server can now access the SAMPLE database by
looking up the console-db-pool-dwDatasource connection pool.

Section 11. Introducing the open source Eclipse IDE


The open source Eclipse IDE is one of the most popular IDEs for Java development
in the world. Eclipse is supported by a huge global community of users, developers,
and researchers. (See Resources for information on the Eclipse community Web
site.) This section gives you an introduction to Eclipse.

Open source users and developers community


Eclipse is used daily by Java development teams across the world to code, debug,
and test code bases that consist of up to millions of lines.

Eclipse has features that are very attractive to developers in general and Java
developers in particular, including:

• Built-in smart editors for Java code, HTML, XML, and so on


• Full syntax highlighting on all editors
• Full syntax check as you enter your code
• Context-sensitive code assists for supported programming languages,
including dynamic API documentation lookup
• Support for the development of standard Java applications, as well as
J2EE targets, such as Web applications and Web services
• Tight integration with popular version-control systems, such as
Subversion and CVS
• Tight integration with popular Java build tools, such as Apache Ant
• Tight integration with popular Java unit-testing frameworks, such as JUnit
• Ability to control, manage, and deploy applications to servers during the
test and debug cycle
• Tight integration with relational database sources through JDBC
• One-click ability to find the declaration of a type or base type anywhere in
the source code
• One-click ability to look up all references to a type or symbol anywhere in

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 33 of 59
developerWorks® ibm.com/developerWorks

the source code


• Refactoring tools that assist in the often tedious, complex, and
error-prone refactoring process
This is just a partial list of the features of Eclipse. You'll likely discover even more
useful features as you start coding with this workhorse IDE.

Reusable GUI framework


Eclipse's modular architecture encourages customization and code reuse. The
Eclipse IDE's GUI is designed to be reusable, and many open source and
commercial products have leveraged Eclipse's open source code base. The DB2
Express-C Development Center is an example of a commercial product leveraging
the Eclipse framework.

Plug-ins extend Eclipse beyond Java programming


In addition to the GUI framework, Eclipse has a well-specified plug-in API and rich
support for plug-in construction. This has created a foundation for an abundance of
high-quality, third-party plug-ins that extend well beyond the realm of Java
development. Eclipse plug-ins provide support for other popular development
languages, such as C/C++, Python, and Ruby on Rails.

Figure 18 illustrates the rich features and versatile composition of the Eclipse IDE:

Figure 18. Features of the Eclipse IDE user interface made available to all
plug-ins

Uniform developer experience across platforms


Eclipse's all-Java construction lets exactly the same IDE code and IDE user
interface run on any supported OS and hardware platform. Once you become

Kick-start your Java apps: Free software, fast development


Page 34 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

familiar with the UI and operations of Eclipse, you will be right at home on any
development platform, including UNIX, Linux, Windows, Mac OSX, and others.

Section 12. Downloading and installing Eclipse


In this section, you'll download and install the Eclipse IDE and the Application Server
plug-in for Eclipse.

Downloading Eclipse
You can download releases of the Eclipse IDE for your platform from the Eclipse
Project Downloads page.

The Application Server plug-in that you'll use for this tutorial has been tested on
Eclipse 3.1.1. Make sure you download the binary for Eclipse version 3.1.1.

The installation file for Eclipse is distributed in Zip archive format. The name of the
file to download is eclipse-SDK-3.1.1-win32.zip.

Unzip and install the Eclipse distribution


Installing Eclipse is as simple as unzipping the Zip file's contents to a directory
where you want Eclipse to be installed. Make sure you maintain the Zip file's
structure as you unzip the distribution.

If you look into your distribution directory, you will find an eclipse.exe executable,
which starts Eclipse. You might want to drag-and-drop a shortcut onto your desktop
or the system tray to make future launching of the IDE simpler.

Double-click eclipse.exe or run it on the command line. The IDE should start. After
the splash screen, it prompts you to select a workspace, shown in Figure 19:

Figure 19. Selecting the initial workspace for the Eclipse IDE

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 35 of 59
developerWorks® ibm.com/developerWorks

A workspace is simply a directory where Eclipse manages source code and other
artifacts of your projects. You can maintain as many projects as you wish in a
workspace. In production projects that use version control, development staff often
needs to work on multiple branches of the same source tree at the same time. You
can use multiple workspaces to work on the different branches. For the purpose of
this tutorial, accept the default to let Eclipse create a new workspace for you.

The IDE starts up with a help screen that you can walk through the fundamentals of
working with Eclipse, if you wish. Close Eclipse to prepare for the next step.

Application Server Eclipse plug-in installation


The Application Server Eclipse plug-in lets you control an instance of Application
Server within Eclipse. You can automate the testing/debug process using this plug-in
because it can also install and uninstall applications directly to the connected
instance of the Application Server.

You have downloaded the Application Server Eclipse plug-in as part of your
Application Server download. Before you can install the plug-in, you need to
download its prerequisites.

Downloading WTP and dependencies

The Application Server Eclipse plug-in requires the Web Tools Platform (WTP)
plug-in for Eclipse. You can download WTP from the Web Tools Platform downloads
page.

Download either V1.0 Maintenance M200502010238 (which the Application Server


plug-in 1.0.0.1 is tested against) or 1.0.1 if it is available.

You also need to download the EMF driver, GEF driver, and EMF model runtime

Kick-start your Java apps: Free software, fast development


Page 36 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

driver (called JEM) corresponding to the WTP version that you select. The download
page for the WTP you select includes links to these drivers.
The WTP supports installation through the Eclipse update manager,
which ideally simplifies the download and install process.
Unfortunately, the current setup the of WTP update manager install
does not work reliably.

To install the WTP, EMF, GEF, and EMF model runtimes, unzip the downloaded Zip
files to your Eclipse installation directory. Examine the content of the Zip files before
unzipping them and make sure you match the directory hierarchy.

Installing the Application Server plug-in

To install the Application Server plug-in, locate the wasce_eclipse_plugin-1.0.0.1.zip


distribution that you downloaded earlier. Unzip this file into the eclipse subdirectory
of your Eclipse installation directory.

Section 13. Hands-on Eclipse: Connecting Eclipse to


DB2 Express-C
This section shows how to use Eclipse's powerful Database Explorer view to
connect to the DB2 Express SAMPLE database you created earlier in this tutorial.

Creating a DB2 Express-C connection in the Database


Explorer
Start Eclipse in the workspace you created during the installation. From the Eclipse
IDE menus, select Window > Show View > Other....

In the window, select the Database Explorer view, as shown in Figure 20:

Figure 20. Creating an Eclipse Database Explorer view

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 37 of 59
developerWorks® ibm.com/developerWorks

A new Database Explorer view appears. Right-click the Connections element and
select New Connection....

Fill in the connection information as shown in Figure 21, pointing to your SAMPLE
database:

Figure 21. Connecting Eclipse to DB2 Express-C through the JDBC driver

Kick-start your Java apps: Free software, fast development


Page 38 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

In Figure 21, note that you need to enter the user ID and password of the Windows
user under which you set up DB2 Express-C. As you know from Downloading and
installing DB2 Express-C, it should be your own Windows user ID and password.

Another important area is the Class location field (see Figure 21). Click Browse to
locate the SQLLIB/java subdirectory and select the db2cc.jar JDBC driver. You must
manually edit the entry to add the db2cc_license_cu.jar file. Otherwise, the
connection will be denied. In my setup, for example, the entire entry becomes:
C:\Program Files\IBM\SQLLIB\java\db2cc.jar;
C:\Program Files\IBM\SQLLIB\java\db2cc_license_cu.jar

The two entries are separated by a semicolon (;). If you have installed DB2
Express-C somewhere other than the default location, you need to change the path
accordingly.

You should now be able to click Test Connection, and Eclipse should report that

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 39 of 59
developerWorks® ibm.com/developerWorks

the connection is successful. Finally, click Finish. A new SAMPLE connection


appears in the Database Explorer view.

Expand the SAMPLE connection to see your EMPLOYEE and PRODUCTS tables.
Figure 22 shows the expanded EMPLOYEE table:

Figure 22. Exploring the SAMPLE DB2 Express-C database from Eclipse

You can see how easy it is to access information on DB2 Express-C databases from
Eclipse.

Kick-start your Java apps: Free software, fast development


Page 40 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

Section 14. Working with data in the Data Output and


Database Explorer views
Now that the connection to your DB2 database is established, you'll see some of the
powerful features provided by the Database Explorer and Data Output views in
Eclipse.

Examining table schema


In Figure 22, you saw that the Database Explorer provides full field definition, field
type, default values, and primary key information -- right on the tree view display of
the EMPLOYEE table.

Viewing the table content


To see the contents of a table (EMPLOYEE, for example), right-click the table and
select Data > Sample Content. This performs a SELECT * on the table and
displays the result in a Data Output view, as shown in Figure 23:

Figure 23. Eclipse Data Output view displaying DB2 Express-C table contents

To see the SQL statement that is executed on the DB2 engine, you can click the
Messages tab of the Data Output view.

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 41 of 59
developerWorks® ibm.com/developerWorks

Modifying table content


You can change the value of any record, as well as add rows to a table, directly from
the Database Explorer view. Right-click the EMPLOYEE table and select Data > Edit.

Eclipse opens up a database edit view. You can see all the data in the table. You
can change the data in the fields, and you can add new rows to the end of the table.
Figure 24 shows this editable view:

Figure 24. Modifying DB2 Express-C data from Eclipse

Generating Data Definition Language (DDL) for your table


Another useful feature available in Database Explorer view is the ability to generate
Data Definition Language (DDL) scripts from your connected databases. To see this
in action, right-click EMPLOYEE and select Data > Generate DDL....

This brings up a wizard that guides you through the DDL generation process. Select
all the check boxes in the wizard's first two screens. The wizard's final screen
previews the generated DDL. For the EMPLOYEE table, it is similar to Listing 3:

Listing 3. DDL generated by Eclipse's Database Explorer for the EMPLOYEE


table
ALTER TABLE "SING"."EMPLOYEE" DROP CONSTRAINT "CC1140139132846";

Kick-start your Java apps: Free software, fast development


Page 42 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

...
CREATE TABLE "SING"."EMPLOYEE" (
"EMPNO" CHAR(6) NOT NULL,
"FIRSTNME" VARCHAR(12) NOT NULL,
"MIDINIT" CHAR(1) NOT NULL,
"LASTNAME" VARCHAR(15) NOT NULL,
"WORKDEPT" CHAR(3),
"PHONENO" CHAR(4),
"HIREDATE" DATE,
"JOB" CHAR(8),
"EDLEVEL" SMALLINT NOT NULL,
"SEX" CHAR(1),
"BIRTHDATE" DATE,
"SALARY" DECIMAL(10,2),
"BONUS" DECIMAL(10,2),
"COMM" DECIMAL(10,2)
);
...

You can use this DDL to re-create the table on any DB2 database. You can save
this DDL to a file or execute it on a server (perhaps creating the same table in
another database).

Section 15. Creating a Web application with Eclipse and


WTP
In this section, you'll create a simple Web application consisting of a single JSP that
accesses data in your SAMPLE database and an associated stylesheet.

Kick-start components working together


Now you'll put together what you've learned so far in this tutorial and develop a
data-driven Web application in the Eclipse IDE. You'll deploy the Web application,
bundled in a standard Web application archive (WAR) file, to Application Server and
test it there. This application accesses the DB2 Express-C server through the
database pool that you set up earlier in this tutorial (see Connecting Application
Server to DB2 Express-C).

The connections and relationships among Eclipse, Application Server, and DB2
Express-C, illustrated in Figure 25, are key to this scenario:

Figure 25. Relationships among Eclipse, Application Server, and DB2


Express-C

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 43 of 59
developerWorks® ibm.com/developerWorks

In Figure 25, Eclipse's Database Explorer and Data Output views are used to access
directly the database schema and content managed in DB2 Express-C. Application
Server is configured with a JDBC data pool that accesses DB2 Express-C
databases.

Creating a new Eclipse project


Follow these steps to create a new Web project for Application Server deployment:

1. Shut down your Application Server server.

2. Start Eclipse and select File > New > Project... from the application
menu.

3. From the window, select Web > Dynamic Web Project.

4. In the wizard screens:


• Enter dwapp for the Project name.
• Select Apache Geronimo v 1.0 for the Target runtime.
• Accept the default for everything else.

Figure 26 shows the directory structure of the dwapp project you've created using
Eclipse's Navigator view:

Figure 26. Creating a new dynamic Web project on the Eclipse IDE

Kick-start your Java apps: Free software, fast development


Page 44 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

Generated deployment descriptor and plan


Web applications are archived into standard WAR file format before they can be
deployed to a compatible server. The organization of these WAR files is governed by
the J2EE 1.4 standard specifications.

In Figure 26, under the WebContent directory, you can see the standard J2EE WAR
file layout of directories. The wizard has also generated two XML files automatically,
described in Table 5:

Table 5. Wizard-generated XML files for 1.4 J2EE dynamic Web applications
Generated XML file Description
WEB-INF/web.xml Standard J2EE deployment descriptor for Web
applications running on compatible containers.
Must be included with every deployed WAR file.
WEB-INF/geronimo-web.xml Application Server specific deployment plan. This
plan describes server customization for
deployment of this application.

Coding a JSP to access EMPLOYEE data

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 45 of 59
developerWorks® ibm.com/developerWorks

Now you'll create a JSP that accesses the data in the EMPLOYEE table:

1. With the WebContent directory highlighted, right-click and select New >
Other....

2. From the wizard, select New > JSP.

3. Name the page index.jsp.

4. Click Finish.

Eclipse generates a skeletal JSP page from a template. Edit the page to match
Listing 4. Alternatively, you can copy the source from this tutorial's code download
(see Download).

Listing 4. JSP accessing employee data from the DB2 Express-C SAMPLE
database
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="dwstyles.css"/>
<title>dW Example Employee Data from DB2 Express-C Table</title>
</head>
<body>
<h1>&nbsp;&nbsp;DB2 Express Employee List</h1>
<br>
<table>
<tr>
<th>Emp no</th>
<th>First name</th>
<th>Last name</th>
<th>Phone</th>
<th>Job</th>
<th>Salary</th>
<th>Bonus</th>
<th>Commission</th>
<th>Department</th>
</tr>
<sql:query var="employees" dataSource="jdbc/DataSource">
SELECT * FROM EMPLOYEE
</sql:query>
<c:forEach var="employee" items="${employees.rows}">
<tr>
<td><c:out value="${employee.empno}"/></td>
<td><c:out value="${employee.firstnme}"/></td>
<td><c:out value="${employee.lastname}"/></td>
<td><c:out value="${employee.phoneno}"/></td>
<td><c:out value="${employee.job}"/></td>
<td><c:out value="${employee.salary}"/></td>
<td><c:out value="${employee.bonus}"/></td>
<td><c:out value="${employee.comm}"/></td>
<td><c:out value="${employee.workdept}"/></td>
</tr>
</c:forEach>
</table>
</code>
</body>
</html>

Kick-start your Java apps: Free software, fast development


Page 46 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

This JSP prints out a table of employee information. Each row displayed represents
one employee record maintained in the DB2 Express-C EMPLOYEE table.

The coding makes use of only JSP Standard Tag Library (JSTL) tags and
Expression Language (EL); it does not contain any embedded Java code.
Embedded Java code in JSP is often viewed as a bad practice because it tends to
become error-prone and unmanageable in the long term.

The boldfaced lines in Listing 4 show how the <sql:query> tag accesses a JDBC
data source called jdbc/DataSource to execute the SQL SELECT statement. The
result of the query is assigned to the employees variable. Each row of this result is
then displayed using a <c:forEach> iterative tag.

Linking an application data source reference to an Application


Server database pool
The index.jsp page, when deployed to the Application Server server, needs to
resolve the data source named jdbc/DataSource. Specifically, you need to make
sure that it resolves to the dwDatasource that you set up earlier, which points to
the DB2 Express-C tables.

This is standard J2EE flexibility. The deployable application WAR file contains
references to resources (such as a data source) that is resolved only when the
application is deployed. This enables the same code module to be deployed, without
reassembly, on different application servers against different database servers.

Examine the web.xml file that is generated and make sure you add the boldfaced
lines from Listing 5. (You might need to click the Source tab of the Eclipse XML file
editor.) Make sure you save the updated web.xml file.

Listing 5. J2EE deployment descriptor -- web.xml for the application


<?xml version="1.0" encoding="UTF-8"?>
<web-app id="dwapp" version="2.4"
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">
<display-name>
dwapp</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<resource-ref>
<res-ref-name>jdbc/DataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 47 of 59
developerWorks® ibm.com/developerWorks

The <resource-ref> provides information to the container (Tomcat in this case)


on the external resource references that need to be resolved.

In the geronimo-web.xml, you make the actual link to the dwDatasource. Examine
the geronimo-web.xml deployment plan in Eclipse. (Click the Source tab of the
deployment plan editor.) Add the boldfaced lines shown in Listing 6 to the
deployment plan and save it:

Listing 6. The Application Server specific deployment plan --


geronimo-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.0"
xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.0"
xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.1"
xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.0"
configId="dwapp/dwapp"
parentId="console-db-pool-dwDatasource">
<context-root>/dwapp</context-root>
<context-priority-classloader>false</context-priority-classloader>
<nam:resource-ref>
<nam:ref-name>jdbc/DataSource</nam:ref-name>
<nam:resource-link>dwDatasource</nam:resource-link>
</nam:resource-ref>
</web-app>

Setting the parentId to console-db-pool-dwDatasource ensures that the


classes used by the database pool are available to your application. The name
console-db-pool-dwDatasource is assigned by Application Server when you
deploy the dwDatasource database pool. The <nam:resource-ref> element
tells Tomcat in Application Server that the jdbc/DataSource reference should be
linked to the dwDatasource database pool.

Downloading and copying JSTL library JARs


You must explicitly include the support libraries for JSTL 1.1 when you use a J2EE
1.4 application server. (This support is due to become a standard part of Java EE 5.)
Currently, the reference implementations of these libraries are maintained as part of
the Apache Jakarta Taglibs project.

The library JAR files include:

• jstl.jar
• standard.jar
You can download these JAR files from the Jakarta Taglibs page. For your
convenience, they are also included in this tutorial's code distribution under the jstl
subdirectory (see Download).

Copy both of these JAR files to the WebContent/WEB-INF/lib directory of your


Eclipse project before proceeding.

Kick-start your Java apps: Free software, fast development


Page 48 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

Application Server as a Web server: Adding static content


So far you've learned how to generate content dynamically by executing JSP code
on Application Server. But Application Server also has the built-in capability to act as
a regular Web server that serves static content.

If your Web project requires static content service, just place the static content
starting from the WebContent directory in your Eclipse project.

Right-click the WebContent directory and select New > Other.... From the pop-up
window, select Web > CSS. You'll add a static Cascading Style Sheet (CSS) to the
application to enhance its appearance. Name the stylesheet dwstyles.css and
accept the default template for the stylesheet.

Edit the dwstyles.css file, adding the content in Listing 7. You can also
copy-and-paste from the code distribution (see Download).

Listing 7. dwstyles.css -- A static stylesheet for formatting the data output


h1 {
font-family: arial;
font-size: 38;
align: left;
font-weight: bold;
font-style: italic;
color: green;
}

th {
font-family: verdana, arial;
font-size: 13;
font-weight: bold;
align: left;
background-color: black;
color: white;
}
td {
font-family: verdana, arial;
font-size: 12;
font-style: italic;
align: left;
}
table {
border-style: solid;
border-width: thin;
}

Save the modified stylesheet. When you deploy the application, the stylesheet is
accessible directly, as static content, from Application Server. Your user's browser
accesses this static stylesheet to format the dynamic output from index.jsp.

If the first page of your Web project is static and not dynamically generated, you can
simply add an index.html page to the WebContent directory.

Deploying applications to Application Server

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 49 of 59
developerWorks® ibm.com/developerWorks

You are now ready to deploy the dwapp application to Application Server.

Right-click the dwapp element in Eclipse's Navigator and select Run as > Run on
Server....

In the Run On Server wizard that opens (shown in Figure 27), select Apache
Geronimo v1.0 Server. Make sure you select the check box named Set server as
project default (do not ask again).

Figure 27. The Run On Server wizard connecting Eclipse to a Application


Server instance

Kick-start your Java apps: Free software, fast development


Page 50 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

Click Next and select the JRE that you are using. (It must be either Sun's JDK
1.4.2_09 or IBM's JDK 1.4.2 SR3; see Prerequisites). Also enter the directory where
you have installed Application Server. This is shown in Figure 28:

Figure 28. Specifying JRE and Application Server runtime for the Eclipse
connected server

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 51 of 59
developerWorks® ibm.com/developerWorks

Click Finish and wait while Eclipse starts Application Server and deploys the
application to Application Server.

You should see the list of employees displayed on a Web browser window within the
Eclipse IDE, as shown in Figure 29:

Figure 29. Successful Eclipse deployment of a Application Server application

Kick-start your Java apps: Free software, fast development


Page 52 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

accessing DB2 Express-C data

The IDE is now connected to Application Server for rapid development and
deployment. At any time during your development cycle, you can deploy your
application to Application Server for testing. If you wish, you can configure the same
Application Server for production. Your application users can then see your
application changes immediately after you deploy the application to the server.

Section 16. Configuring Application Server for an


Internet Web site
So far, this tutorial has focused the setup for Application Server on ease of
application development and test deployment. In this section, you'll configure
Application Server as a general Web server on the Internet.

Application Server as a Web server


If your machine were set up as an Internet-accessible server, the users accessing
your application over the Internet would need to use the URL http://your www
domain name:8080/your application name. Now you'll learn how to configure

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 53 of 59
developerWorks® ibm.com/developerWorks

Application Server to accept the URL http://your Web domain name/.

It involves two steps:

1. Changing the TCP port that the Tomcat (Web connector) listener is
listening to

2. Changing the application context of the application deployed on


Application Server

Changing the Tomcat listener port


You need to change the Application Server default port 8080 assignment to port 80.
Port 80 is the default TCP port for the HTTP protocol. If you use port 80 on the
Application Server, users do not need to specify explicitly the port when they access
your site.

Log on to the Application Server Administration Console and select Web Server on
the left-hand side menu. You'll see three connectors running, one for regular Web
connections, one for Secure Sockets Layer (SSL)-based connections, and one for
the AJP protocol. This is shown in Figure 30:

Figure 30. Changing the port of the TomcatWebConnector for Internet user
access

Kick-start your Java apps: Free software, fast development


Page 54 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

Click the edit link next to the HTTP-based TomcatWebConnector. On the next
screen, replace port 8080 with port 80 and click Save.

Now, shut down the server and restart it. Your Application Server application is now
accessible at http://your WWW domain name/your application name.

Next, to get rid of the need to type the name of the application, you'll modify the
application deployment context to map to the root or /.

Modifying the application deployment context


To map the application deployment context root to /, you need to modify the
geronimo-web.xml deployment plan in your project. The element you need to modify
is named <context-root>.

For example, if you want to move the dwapp application to the root context, you
need to make the change shown in boldface in Listing 8 to its geronimo-web.xml
plan:

Listing 8.Modifying geronimo-web.xml to deploy application at server root

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 55 of 59
developerWorks® ibm.com/developerWorks

<?xml version="1.0" encoding="UTF-8"?>


<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.0"
xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.0"
xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.1"
xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.0"
configId="dwapp/dwapp"
parentId="console-db-pool-dwDatasource">
<context-root>/ </context-root>
<context-priority-classloader>false</context-priority-classloader>
<nam:resource-ref>
<nam:ref-name>jdbc/DataSource</nam:ref-name>
<nam:resource-link>dwDatasource</nam:resource-link>
</nam:resource-ref>
</web-app>

Section 17. Summary


You are at an historical moment in the evolution of the software industry. As a Java
Web developer, you now have a choice of many free-to-license servers and
development tools that a few short years ago were available to only the largest
enterprise development teams.

The open source Eclipse IDE, the IBM DB2 Express-C database, and IBM
WebSphere Application Server Community Edition are all your disposal, only a short
click away. This collection of servers and IDEs works very well together to make
your design, development, testing, and deployment life simpler.

In this tutorial, you have:

• Installed and became familiar with DB2 Express-C, using its rich set of
GUI tools and command-line tools
• Created database tables with DB2 Express-C and queried against them
using SQL commands
• Installed and worked with WebSphere Application Server Community
Edition, using its Web-based Administration Console as well as the
command-line deployer tool
• Connected WebSphere Application Server Community Edition to DB2
Express-C by deploying a system-wide database pool to the DB2
database
• Installed the Eclipse IDE, the supporting Web Tools Platform, and the
WebSphere Application Server Community Edition Eclipse plug-in
• Connected Eclipse to DB2 Express-C through Eclipse's versatile
Database Explorer view, which lets you view schema structure, see table
data content, modify data, and generate DDL
• Used Eclipse to create a Web application and deployed it to WebSphere
Application Server Community Edition with one click, supported through

Kick-start your Java apps: Free software, fast development


Page 56 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

the WebSphere Application Server Community Edition Eclipse plug-in


• Successfully developed an application on Eclipse, deployed it to
WebSphere Application Server Community Edition, and made the
application use DB2 Express-C as its data supplier
• Configured WebSphere Application Server Community Edition for access
by users over the Internet
You are now well on your way to developing and deploying your own Web
applications on this powerful collection of software server and tools.

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 57 of 59
developerWorks® ibm.com/developerWorks

Resources
Learn
• "DB2 Express-C, the developer-friendly alternative" (Grant Hutchison,
developerWorks, February 2006): Get started quickly using DB2 Express-C for
all of your applications.
• Migrate to DB2 Express-C: Resources to help you get started migrating to DB2
Express-C today.
• "Get started with Eclipse: The developerWorks Eclipse resource page.
• "Manage your Eclipse environment" (Chris Aniszczyk and Phil Crosby,
developerWorks,February 2006): Zen and the art of Eclipse maintenance.
• "Migrating to Eclipse": A developer's guide to evaluating Eclipse.
• "Developing Eclipse plug-ins" (David Gallardo, developerWorks, December
2002): Learn to create, debug, and install your plug-ins.
• "Get started with WebSphere Application Server Community Edition" (Nell
Gawor and Lin Sun, developerWorks, December 2005): Learn what you need to
know to get up and running quickly with WebSphere Application Server
Community Edition, from setting up your environment and choosing the right
download package to deploying applications.
• "Migrate from JBoss to WebSphere Application Server Community Edition"
(Shyam Nagarajan, developerWorks, November 2005): An excellent guide for
migrating your applications.
• "Migrate from Apache Tomcat to WebSphere Application Server Community
Edition" (Sing Li, developerWorks, November 2005): Author Sing Li
demonstrates how to migrate a J2EE Web tier application from Apache Tomcat
5.5 to WebSphere Application Server Community Edition V1.0.
• "WebSphere Application Server Community Edition system administration":
Learn everything you need to know to successfully administer a WebSphere
Application Server Community Edition environment.
• WebSphere Application Server Community Edition: Documentation, FAQs,
articles, and more resources.
• Apache Geronimo: The J2EE server from Apache.
• Apache Axis: Apache's reliable and stable base for implementing Java Web
services.
• Apache Tomcat: The Apache servlet container that is used in the official
Reference Implementation for the Java Servlet and JavaServer Pages
technologies.
• Apache Derby: Apache's relational database implemented entirely in Java.
• ActiveMQ: Try out this fast, open source JMS 1.1 provider, which supports

Kick-start your Java apps: Free software, fast development


Page 58 of 59 © Copyright IBM Corporation 1994, 2005. All rights reserved.
ibm.com/developerWorks developerWorks®

clustering, peer networks, discovery, TCP, SSL, multicast, persistence, and XA


and integrates seamlessly into J2EE 1.4 containers, lightweight containers, and
any Java application.
• Open EJB: Learn more about this open source, modular, configurable, and
extendable EJB Container System and EJB Server.
Get products and technologies
• WebSphere Application Server Community Edition V1.0.0.1: Download the
application server.
• DB2 Express-C: Download the database server.
• Eclipse: Download the Eclipse SDK.
Discuss
• DB2 Express forum
• eclipse.org
• Eclipse newsgroups
• Eclipse developer mailing lists
• developerWorks blogs

About the author


Sing Li
Sing is a consultant and an active author with over two decades of industry
experience. He 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. Sing also writes for technical magazines and participates in open source
communities. He is an evangelist of the open source, VOIP, and P2P movements.
You can reach Sing at westmakaha@yahoo.com.

Kick-start your Java apps: Free software, fast development


© Copyright IBM Corporation 1994, 2005. All rights reserved. Page 59 of 59

You might also like