Vous êtes sur la page 1sur 69

Kick-start your Java apps, Part 1: Free software,

fast development
Skill Level: Intermediate

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

27 Feb 2006

Updated 05 Dec 2007

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 Java EE 5 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 recently, 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.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 1 of 69
developerWorks® ibm.com/developerWorks

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 2.0 (referred to throughout this tutorial as Application
Server), and DB2 Express-C 9.5 for production deployment.

About this tutorial


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 9.5 database server

• WebSphere Application Server Community Edition 2.0

• 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 9.5 or Eclipse. And DB2 Express-C 9.5 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.

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 9.5


• Creating databases and manipulating data with tools in DB2 Express-C
9.5
• Downloading and installing Application Server 2.0
• Managing Application Server through the Web console
• Connecting Application Server to DB2 Express-C 9.5 using a JCA 1.5

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 2 of 69
ibm.com/developerWorks developerWorks®

connector
• Downloading and installing Eclipse
• Installing the Eclipse Web Tools Platform (WTP) server adapter for
Application Server (formerly called the Application Server plug-in for
Eclipse)
• Managing, browsing, and editing DB2 Express-C 9.5 data through the
Eclipse IDE
• Testing Web applications in Eclipse using existing Application Server
installation
• Rapidly developing and testing a JSP/JSTL Web application in Eclipse,
with data access to DB2 Express-C 9.5, 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 Java EE 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 Java SE JDK 5 update 15 or the IBM SDK for Java Version 5 SR6.

The recommended system configuration for trying out the tutorial is:

• A system supporting the JDK/JRE listed above with at least 1GB of main
memory (2GB recommended)
• At least 2GB 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.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 3 of 69
developerWorks® ibm.com/developerWorks

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 9.5 level)


• An application server: WebSphere Application Server Community
Edition (currently release 2.0.0.1)
• An IDE: Eclipse (currently version 3.3 for use with the WTP server
adapter V2.0 for Application Server)
You can download and use all of these packages for free.

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

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

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 4 of 69
ibm.com/developerWorks developerWorks®

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 9.5 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 deploy and test your application components rapidly.

In addition to working with them 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, you can access DB2 Express-C 9.5 through C/C++,
Python, Ruby, and Perl APIs, among others.

Deploy applications on Application Server and DB2 Express-C


9.5
Once you have tested your application in Eclipse, you can deploy it into production
running inside Application Server. Application Server is a Java EE 5 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 graphics files.
Users can access your application through a browser pointed to Application Server.

Your production applications, hosted on Application Server, can use DB2 Express-C
9.5 to store any application data. DB2 Express-C 9.5 supports Java-based data
access through JDBC. It includes a fully licensed, high-performance type 4, 100%
Java 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 Java EE Connector Architecture (JCA) 1.5
resource adapters and can make use of the DB2 Express-C 9.5 JDBC driver to
provide data persistence for any hosted application.

Section 3. Introducing DB2 Express-C 9.5


As a member of the DB2 Universal Database™ family, DB2 Express-C 9.5 is the
free edition of the modern version of a "very big iron" RDBMS. This section

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 5 of 69
developerWorks® ibm.com/developerWorks

introduces DB2 Express-C 9.5, 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.

Built-in management and business application features


DB2 Express-C 9.5 is optimized for running on widely available 32-bit and 64-bit
microprocessor-based server hardware 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.

Integration with XML data


DB2 Express-C 9.5 has built-in capabilities for handling and working with XML data.
XML documents are stored hierarchically in a table's columns. DB2 Express-C 9.5
integrates native XML storage and XQuery capabilities. The hybrid relational and
XML nature of DB2 Express-C 9.5 lets developers satisfy the XML data storage
needs of modern Web services and systems based on service-oriented architecture
(SOA).

DB2 Express-C 9.5 can grow with your needs

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 6 of 69
ibm.com/developerWorks developerWorks®

All the data content and schemas that you create using DB2 Express-C 9.5 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 9.5. Depending on your application and database
design, a server equipped with 2GB of main memory can readily handle databases
several gigabytes in size.

A restriction with the free edition of DB2 Express-C 9.5 is the resource utilization,
across all database instances, of two CPU cores and 2GB of memory. An alternative
annual-subscription version is available with a four CPU cores and 4GB limit.

If your needs grow past this range of capacity, 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


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

Downloading DB2 Express-C 9.5


To download DB2 Express-C 9.5, go to Download: IBM DB2 Express-C 9.5.

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

The file you download, named db2exc_950_WIN_x86.zip, is in a compressed ZIP


format.

Before you proceed any further, you need to be aware that DB2 Express-C 9.5 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

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 7 of 69
developerWorks® ibm.com/developerWorks

application. This eliminates the need to assign a specific level of privileges for your
explorations.

Installing DB2 Express-C 9.5


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

Figure 2. Setup Launchpad screen for DB2 Express-C 9.5 installer

The tabs on the left side link to various IBM informational Web sites. (Make sure you
are connected to the Internet.) Read the installation prerequisites, verify that your
hardware and software satisfy them, and read the release notes. Then click Install
Product.

Follow the wizard's directions to install DB2 Express-C 9.5.

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

Figure 3. Selecting typical installation for DB2 Express-C 9.5

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 8 of 69
ibm.com/developerWorks developerWorks®

The next screen prompts you to save a response file. This file captures all the
options you have selected and is handy if you need to install multiple database
instances or reinstall. The next screen asks for an installation folder. 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

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 9 of 69
developerWorks® ibm.com/developerWorks

If you use db2admin as the user name, make sure you have created a user with that
name using control panel administration utilities. 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).
• The DB2 First Steps window appearing on your desktop, as shown in

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 10 of 69
ibm.com/developerWorks developerWorks®

Figure 5:
Figure 5. DB2 First Steps window

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. The default
DB2 Express-C 9.5 installation creates the sample database as the last step in the
installation, and you do not need create it explicitly. However, if you ever need to
create or re-create this database manually, you can do so by following these steps:

1. Click the Database Creation link on the left-hand side of the First Steps
window.

2. Click the Create the SAMPLE Database button.

3. On the next screen, select the default SQL objects and data only option.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 11 of 69
developerWorks® ibm.com/developerWorks

4. The wizard proceeds to create a database called SAMPLE.

Section 5. Understanding the DB2 Express-C 9.5


components
This section covers the DB2 Express-C 9.5 components you installed in the
preceding section (Downloading and installing DB2 Express-C 9.5). 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 9.5 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.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 12 of 69
ibm.com/developerWorks developerWorks®

Server
DB2 License Server db2licd Monitors and enforces
DB2 software license
policies.
DB2 Security Server db2sec Authentication server
for clients.
DB2 Remote Command db2rcmd Handles remote
Executor commands for the DB2
instance.
DB2 Database db2dasrrm Provides administration
Administration Server service functionality.
DB2 Management db2mgmtsvc Manages registry for
Service backward compatibility
with earlier versions.
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 6 provides an overview:

Figure 6. Tools and developer support for DB2 Express-C 9.5

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 13 of 69
developerWorks® ibm.com/developerWorks

In Figure 6, the tools for DB2 Express-C 9.5 can be generally classified as
command-line based or GUI-based.

Development support
Java development support in DB2 Express-C 9.5 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 9.5.
You can explore these tools at your leisure:

Table 2. GUI tools included with DB2 Express-C 9.5 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

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 14 of 69
ibm.com/developerWorks developerWorks®

Administration perform most administration


Tools > Control tasks. Also launches other
Center GUI-based tools.
• Right-click the tray
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.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 15 of 69
developerWorks® ibm.com/developerWorks

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
automated by creating scripts that execute against a command-line interface. This
section explores the command-line interface for DB2 Express-C 9.5.

The DB2 Express-C 9.5 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 9.5'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 > DB2COPY1(Default) > 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 7 shows the DB2 CLP's greeting screen:

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

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 16 of 69
ibm.com/developerWorks developerWorks®

Data query with DB2 CLP


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

connect to sample

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

Figure 8. Connecting to the SAMPLE database through the DB2 Express-C 9.5
CLP

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

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 17 of 69
developerWorks® ibm.com/developerWorks

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 Figure 9:

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

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

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
10:

Figure 10. Using the DESCRIBE command to display table schema

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 18 of 69
ibm.com/developerWorks developerWorks®

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.

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('TV1020','70 inch Plasma TV',
1299.00);
INSERT INTO PRODUCTS VALUES('CPU3818','PowerPC CPU',
200.00);
INSERT INTO PRODUCTS VALUES('HDR2929','2 TB Hard Disk',
899.00);

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 19 of 69
developerWorks® ibm.com/developerWorks

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 11 shows the result of this command:

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

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.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 20 of 69
ibm.com/developerWorks developerWorks®

Section 7. Introducing WebSphere Application Server


Community Edition Version 2.0
WebSphere Application Server Community Edition (Application Server) is a Java EE
5 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 Java EE 5 applications and Web services


Application Server is a free server that supports the production hosting of Web
applications and Web services created to the Java EE 5 standard. This includes
applications that can contain the following elements:

• JSPs
• Servlets
• JavaServer Faces (JSF) components
• Custom Java coding
• EJBs
• POJOs (plain old Java objects) with Java Persistence API (JPA)
persistence support
• 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 Server
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.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 21 of 69
developerWorks® ibm.com/developerWorks

The AJP protocol


The AJP 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
through the open source Yoko project (see Resources). 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
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 12 shows the composition of Application Server. You'll recognize many open
source server components:

Figure 12. Application Server's open source server components

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 22 of 69
ibm.com/developerWorks developerWorks®

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

Table 3. The open source server components inside Application Server


Server Description
Apache Tomcat Popular container for Web-tier components.
Tomcat implementations always track 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. Four version
families of Tomcat are available: 3.x, 4.x, 5.x,
and 6.x. Application Server integrates with the
latest Tomcat 6 version. (See Resources for
Tomcat's open source community Web site.)
ActiveMQ Popular message broker that supports a rich set
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 3
specification, including support for POJOs as

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 23 of 69
developerWorks® ibm.com/developerWorks

EJBs, Container Managed Persistence over JPA,


dependency injection, and annotations. (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 2.0.0.1, go to Download: WebSphere Application
Server Community Edition V2.0.
Important note: The instructions in this tutorial pertain to version
2.0.0.1 of Application Server. This version is different from version
2.0.0.0. Be sure to use version 2.0.0.1 or later as you follow along
with this tutorial.

The Application Server distribution you download is in Windows EXE format.

The corresponding Eclipse WTP server adapter for Application Server (formerly
called the Application Server plug-in for Eclipse) can be downloaded and installed
using the Eclipse update manager. You'll perform those steps later in this tutorial
(see Downloading and installing Eclipse).

Optional additional downloads


In addition to the Application Server and WTP server adapter downloads, you might
also want to download these items from the same site:

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 24 of 69
ibm.com/developerWorks developerWorks®

• Application Server bundled with IBM Java 2 Version 5 SDK SR6


• 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 downloaded 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 13:

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

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 25 of 69
developerWorks® ibm.com/developerWorks

To verify the success of the installation, start the Administrative Console by opening

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 26 of 69
ibm.com/developerWorks developerWorks®

a browser and pointing it to the URL http://localhost:8080/console.

This should bring you to the login page for the Administrative Console. The
Administrative Console is actually a Web application running inside Application
Server. Figure 14 shows the login screen for the console:

Figure 14. The login screen for the Application Server Administrative Console

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 27 of 69
developerWorks® ibm.com/developerWorks

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

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 28 of 69
ibm.com/developerWorks developerWorks®

Section 9. Operating your Application Server


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

Starting the server


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 issue this command:

startup

Stopping the server


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

• Log in to the Administrative 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
variable) and issue this command:

shutdown

Application Server prompts you for a username and password (use


system and manager).

Obtain a list of installed applications

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 29 of 69
developerWorks® ibm.com/developerWorks

On Application Server, installing applications to the server is called deployment.


Applications that are deployed to Application Server are maintained by the server as
modules. To view the modules deployed on the server, log on to the Administrative
Console (using system for username and manager for password) and select
Application EARs, Web App WARs, EJB JARs, or Application Clients.

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 information on all
the modules deployed on this server. Figure 15 shows the output from a
list-modules command:

Figure 15. Showing all modules deployed in a Application Server

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 30 of 69
ibm.com/developerWorks developerWorks®

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

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 31 of 69
developerWorks® ibm.com/developerWorks

Section 10. Connecting Application Server to DB2


Express-C 9.5
In this section, you'll connect Application Server to DB2 Express-C 9.5. 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 9.5, you need to create and
deploy an instance of a JCA 1.5 resource adapter on Application Server that
accesses your DB2 SAMPLE database. This resource adapter instance uses the
DB2 Express-C 9.5 type 4 JDBC driver to access the SAMPLE database. The action
that you need to perform boils down to the following:

1. Adding the JDBC driver JAR files from the DB2 Express-C 9.5 installation
to the Application Server repository.

2. Creating a database pool using the resource adapter configured with the
JDBC driver.

3. Creating a deployment plan to deploy the resource adapter.

Add the JDBC driver JAR files from the DB2 Express-C 9.5
installation to the Application Server repository
A JCA 1.5 resource adapter already exists in Application Server that works with the
JDBC driver. However, the DB2 driver distributed as a standard part of Application
Server version 2.0.0.1 is version 9.1, so you need to add the 9.5 JDBC drivers
manually to the Application Server repository. (Later versions of Application Server
will likely include the 9.5 JDBC driver and you may not need to do this.)

The latest version of DB2 Express-C 9.5 comes with the 9.5 JDBC drivers set. You'll
find the following JDBC JARs in the SQLLIB\java directory:

• db2jcc.jar - The library JAR file

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 32 of 69
ibm.com/developerWorks developerWorks®

• db2jcc_license_cu.jar - The license JAR file


Next, log on to the Application Server Administrative Console. Click Common Libs
in the left-hand menu to display all the entries in the code repository where
Application Server keeps binaries of system and application components. As you
can see in Figure 16, the repository viewer shows current entries and lets you add
new entries:

Figure 16. Application Server repository viewer

Look for these two entries under Current Repository Entries:

• com.ibm.db2/db2jcc/9.5/jar
• com.ibm.db2/db2jcc_license_cu/9.5/jar
If these entries already exist with your version of the Application Server, you don't
need to do anything more on this screen. Otherwise, add the two JARs from the DB2
Express-C 9.5 SQLLIB\java directory:

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 33 of 69
developerWorks® ibm.com/developerWorks

1. Enter the path to db2jcc.jar as File (use the Browse button to locate the
JAR file), com.ibm.db2 as Group, db2jcc as Artifact, 9.5 as Version,
and jar as Type.

2. Click Install.

3. Enter the path to db2jcc_license_cu.jar as File (use the Browse button


to locate the JAR file), com.ibm.db2 as Group, db2jcc_license_cu as
Artifact, 9.5 as Version, jar as Type.

4. Click Install.

Now that you have the JDBC driver files in place, you can use them to create a
database pool.

Adding a system-wide database pool


The JCA resource adapter provides database pooling for all Application
Server-hosted applications. To deploy the adapter, log on to the Administrative
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 17:

Figure 17. Displaying the currently configured database pools in Application


Server

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 34 of 69
ibm.com/developerWorks developerWorks®

In Figure 17, 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.

Fill in the details of the pool with the 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 CTRL-click or SHIFT-click to select both:
com.ibm.db2/db2jcc/9.5/jar
com.ibm.db2/db2jcc_license_cu/9.5/jar
DB User Name Windows user name under which DB2 Express-C

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 35 of 69
developerWorks® ibm.com/developerWorks

9.5 is installed
DB Password Windows user's password for DB2 Express-C 9.5
Port 50000
Database sample
Host localhost

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 18:

Figure 18. Successful test connect to the DB2 Express-C 9.5 database from
Application Server

Viewing and deploying the plan


The connection to DB2 Express-C 9.5 is now tested, but to access the data
successfully from Application Server, you must create and deploy a deployment
plan. This deployment plan can be generated for you automatically, by the wizard,
based on your input. Follow these steps to view and then deploy the plan:

1. Click the Show Plan button (see Figure 18). This will display the
generated deployment plan, shown in Listing 2.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 36 of 69
ibm.com/developerWorks developerWorks®

2. Click the Deploy button to deploy the plan.

Listing 2. Generated Application Server system-wide database pool


deployment plan for the DB2 Express-C 9.5 database connection

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


<connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2">
<dep:environment xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2">
<dep:moduleId>
<dep:groupId>console.dbpool</dep:groupId>
<dep:artifactId>dwDatasource</dep:artifactId>
<dep:version>1.0</dep:version>
<dep:type>rar</dep:type>
</dep:moduleId>
<dep:dependencies>
<dep:dependency>
<dep:groupId>com.ibm.db2</dep:groupId>
<dep:artifactId>db2jcc</dep:artifactId>
<dep:version>9.5</dep:version>
<dep:type>jar</dep:type>
</dep:dependency>
<dep:dependency>
<dep:groupId>com.ibm.db2</dep:groupId>
<dep:artifactId>db2jcc_license_cu</dep:artifactId>
<dep:version>9.5</dep:version>
<dep:type>jar</dep:type>
</dep:dependency>
</dep:dependencies>
</dep:environment>
<resourceadapter>
<outbound-resourceadapter>
<connection-definition>
<connectionfactory-interface>javax.sql.DataSource</connectionfactory-interface>
<connectiondefinition-instance>
<name>dwDatasource</name>
<config-property-setting name="ConnectionURL">
jdbc:db2://localhost:50000/sample</config-property-setting>
<config-property-setting name="UserName">sing</config-property-setting>
<config-property-setting name="Password">mypassword</config-property-setting>
<config-property-setting name="Driver">
com.ibm.db2.jcc.DB2Driver</config-property-setting>
<connectionmanager>
<local-transaction/>
<single-pool>
<max-size>10</max-size>
<min-size>0</min-size>
<match-one/>
</single-pool>
</connectionmanager>
</connectiondefinition-instance>
</connection-definition>
</outbound-resourceadapter>
</resourceadapter>
</connector>

If you select Database Pools again on the Administrative 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 dwDatasource connection pool.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 37 of 69
developerWorks® ibm.com/developerWorks

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 a link to the Eclipse community Web site.) This
section gives you an introduction to Eclipse.

Eclipse features useful for Java development


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 features that are
attractive to developers in general and Java developers in particular include:

• 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
Java EE targets, such as Web applications and Web services
• Support for design of POJO-based applications with JPA integration
• Tight integration with popular version-control systems, such as
Subversion and CVS
• Tight integration with popular Java build tools, such as Apache Ant and
Apache Maven
• 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 and nonrelational data sources through
JDBC and Open Data Access (ODA)
• 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

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 38 of 69
ibm.com/developerWorks 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 9.5 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 19 illustrates the rich features and versatile composition of the Eclipse IDE:

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

Uniform developer experience across platforms

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 39 of 69
developerWorks® ibm.com/developerWorks

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
familiar with the UI and operations of Eclipse, you will be right at home on any
development platform, including UNIX, Linux, Windows, Mac OS X, and others.

Section 12. Downloading and installing Eclipse


In this section, you'll download and install the Eclipse IDE and the Eclipse WTP
server adapter for Application Server.

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

The Eclipse WTP server adapter for Application Server that you'll use for this tutorial
has been tested on Eclipse 3.3 (Europa) and Eclipse WTP 2.0.1. Make sure you
download only the compatible binaries.

Instead of downloading and installing Eclipse, then WTP, then all the dependencies
separately, you can use an all-in-one binary download to save time and avoid
headaches. Follow the links for the latest release at the Web Tools Platform
downloads page to download a compatible version of the all-in-one binaries. The
release version that this tutorial is tested on is based on WTP 2.0.1, and the
download is wtp-all-in-one-sdk-R-2.0.1-20070926042742-win32.zip.

Unzip and install the Eclipse WTP all-in-one 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 20:

Figure 20. Selecting the initial workspace for the Eclipse IDE

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 40 of 69
ibm.com/developerWorks developerWorks®

A workspace is simply a directory where Eclipse manages source code and other
artifacts for 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 lets you walk through the fundamentals of
working with Eclipse, if you wish. Close Eclipse to prepare for the next step.

Eclipse WTP server adapter for Application Server installation


The Eclipse WTP server adapter for Application Server lets you control an instance
of Application Server within Eclipse. You can automate the testing/debug process
using this server adapter because it can also install and uninstall applications
directly to the connected instance of the Application Server. The best way to install
the Eclipse WTP server adapter for Application Server is to use the Eclipse update
manager. Using the update manager significantly simplifies the download and
installation process.

To install the Eclipse WTP server adapter for Application Server:

1. Select Help > Software Updates > Find and Install ... from the Eclipse
menu.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 41 of 69
developerWorks® ibm.com/developerWorks

2. In the Install/Update wizard, select Search for new features to install


and click Next.

3. Click the New Remote Site button on the top right, and enter the name of
Eclipse WTP server adapter for WAS CE 2.0, and set the URL to
http://download.boulder.ibm.com/ibmdl/pub/software/websphere/wasce/updates/.

4. Expand the selection and make sure you are including only the 2.0 server
adapter — not any of the 1.1 adapters, which have completely different
dependencies.

5. Click Finish and let the update manager download and install the
adapter.

After installation, the download manager might suggest a restart of the Eclipse
environment. Let the update manager restart the environment, and the adapter will
be installed and ready to go.

Section 13. Hands-on Eclipse: Connecting Eclipse to


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

Creating a DB2 Express-C 9.5 connection in the Data Source


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

In the window, select the Connectivity > Data Source Explorer view, as shown in
Figure 21:

Figure 21. Creating an Eclipse Data Source Explorer view

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 42 of 69
ibm.com/developerWorks developerWorks®

A new Data Source Explorer view appears. Right-click the Database element and
select New.... In the New Connection Profile wizard, select Generic JDBC
Connection, and then click the Next button.

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

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

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 43 of 69
developerWorks® ibm.com/developerWorks

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 44 of 69
ibm.com/developerWorks developerWorks®

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

Another important area in Figure 22 is the Select a driver from the drop-down:.
Click ..., select Generic JDBC Connection, and click Next to create a new
connection profile. Name the profile SAMPLE and click Next to select the Database >
DB2 UDB > v9.5 entry. If it does not exist, make a copy of the v9.1 entry and edit it
to reference the DB2 Express-C 9.5 driver files, including db2jcc.jar and
db2cc_license_cu.jar.

You should now be able to click Test Connection, and Eclipse should report that a
ping to 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 23 shows the expanded PRODUCTS table:

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

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 45 of 69
developerWorks® ibm.com/developerWorks

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 46 of 69
ibm.com/developerWorks developerWorks®

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

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 23, you saw that the Data Source Explorer provides full field definition, field
type, default values, and primary key information — right in the tree-view display of
the PRODUCTS 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 an SQL Result view, as shown in Figure 24:

Figure 24. Eclipse SQL Results view displaying DB2 Express-C 9.5 table
contents

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 47 of 69
developerWorks® ibm.com/developerWorks

To see the SQL statement that is executed on the DB2 engine, you can click the
Status tab of the SQL Results view.

Modifying table content


You can change the value of any record, or 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 25 shows this editable view:

Figure 25. Modifying DB2 Express-C 9.5 data from Eclipse

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 48 of 69
ibm.com/developerWorks developerWorks®

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 "RED";


...
CREATE TABLE "SING"."EMPLOYEE" (
"EMPNO" CHAR(6) NOT NULL,
"FIRSTNME" VARCHAR(12) NOT NULL,
"MIDINIT" CHAR(1),
"LASTNAME" VARCHAR(15) NOT NULL,
"WORKDEPT" CHAR(3),
"PHONENO" CHAR(4),

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 49 of 69
developerWorks® ibm.com/developerWorks

"HIREDATE" DATE,
"JOB" CHAR(8),
"EDLEVEL" SMALLINT NOT NULL,
"SEX" CHAR(1),
"BIRTHDATE" DATE,
"SALARY" DECIMAL(9 , 2),
"BONUS" DECIMAL(9 , 2),
"COMM" DECIMAL(9 , 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 9.5 server through the
database pool that you set up earlier in this tutorial (see Connecting Application
Server to DB2 Express-C 9.5).

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

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


Express-C 9.5

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 50 of 69
ibm.com/developerWorks developerWorks®

In Figure 26, Eclipse's Database Explorer and Data Output views are used to access
directly the database schema and content managed in DB2 Express-C 9.5.
Application Server is configured with a JDBC data pool that accesses DB2
Express-C 9.5 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 instance.

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 IBM WASCE v2.0 for the Target Runtime.
• Point the server directory to where you've installed Application Server.

Figure 27 shows the wizard used to create a new dynamic Web project.

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

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 51 of 69
developerWorks® ibm.com/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 Java EE 5 standard specifications.

The wizard has also generated two XML files automatically, described in Table 5:

Table 5. Wizard-generated XML files for Java EE 5 dynamic Web applications


Generated XML file Description
WEB-INF/web.xml Standard J2EE deployment descriptor for Web

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 52 of 69
ibm.com/developerWorks developerWorks®

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.

In Figure 28, under the WebContent directory, you can see the standard Java EE
WAR file layout of directories:

Figure 28. Creating a new dynamic Web project in the Eclipse IDE

Coding a JSP to access EMPLOYEE data


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 >

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 53 of 69
developerWorks® ibm.com/developerWorks

Other....

2. From the wizard, select Web > 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 9.5 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 9.5 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>

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 54 of 69
ibm.com/developerWorks developerWorks®

</body>
</html>

This JSP prints out a table of employee information. Each row displayed represents
one employee record maintained in the DB2 Express-C 9.5 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 Application 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 9.5 SAMPLE database.

This is standard Java EE 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. Java EE deployment descriptor web.xml for the application

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


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<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>

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 55 of 69
developerWorks® ibm.com/developerWorks

<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>

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 file, 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="ISO-8859-1"?>


<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.2"
xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2"
xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.1"
xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2">
<sys:environment>
<sys:moduleId>
<sys:groupId>default</sys:groupId>
<sys:artifactId>dwapp</sys:artifactId>
<sys:version>1.0</sys:version>
<sys:type>car</sys:type>
</sys:moduleId>
<sys:dependencies>
<sys:dependency>
<sys:groupId>console.dbpool</sys:groupId>
<sys:artifactId>dwDatasource</sys:artifactId>
</sys:dependency>
</sys:dependencies>
</sys:environment>
<context-root>/dwapp</context-root>
<resource-ref>
<ref-name>jdbc/DataSource</ref-name>
<resource-link>dwDatasource</resource-link>
</resource-ref>
</web-app>

Adding a <sys:dependency> pointing to console.dbpool/dwDatasource


ensures that the JCA 1.5 resource adapter instance that you configured earlier is
available to this application. Note that if <sys:version> and <sys:type> of the
<sys:dependency> are not specified, Application Server will treat this as a
wildcard and look up the resource matching any version or type. The
<nam:resource-ref> element tells Tomcat in Application Server that the
jdbc/DataSource reference should be linked to the configured dwDatasource

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 56 of 69
ibm.com/developerWorks developerWorks®

database pool.

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.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 57 of 69
developerWorks® ibm.com/developerWorks

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


Alternative way to deploy applications
An alternative way of deploying the application to Application Server
is to export the project as a WAR file and then deploy it using the
Application Server console. To export a WAR file, right-click on the
dwapp project and select Export.... In the Export Wizard, select
Web > WAR file. Save the exported WAR file to a directory of your
choice where it can be found easily. Then, with the Application
Server running:

1. Log in to the console.

2. Select Deploy New from the menu.

3. Click the Browse button and locate the WAR file.

4. Click Install to deploy and start the application.

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 29), select IBM WASCE
v2.0 Server. Make sure you select the check box named Always use this server
when running this project.

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


Server instance

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 58 of 69
ibm.com/developerWorks developerWorks®

Click Next and select the JRE that you are using. (It must be one of the JRE

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 59 of 69
developerWorks® ibm.com/developerWorks

releases listed in System requirements). Also enter the directory where you have
installed Application Server. This is shown in Figure 30:

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

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

Start a browser and point it to the URL http://localhost:8080/dwapp/

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

Figure 31. Successful Eclipse deployment of an Application Server application


accessing DB2 Express-C 9.5 data

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 60 of 69
ibm.com/developerWorks developerWorks®

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.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 61 of 69
developerWorks® ibm.com/developerWorks

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
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 Administrative Console and select Web Server on
the left-hand side menu. You'll see three connectors running: one for Secure
Sockets Layer (SSL)-based connections, one for the AJP protocol for connecting to
front-end Web servers, and one for regular Web connections via the HTTP protocol.
Click the edit link next to the HTTP-based TomcatWebConnector. On the next
screen, replace port 8080 with port 80 and click Save. Figure 32 shows the edited
TomcatWebConnector:

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

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 62 of 69
ibm.com/developerWorks developerWorks®

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 eliminate 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>.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 63 of 69
developerWorks® ibm.com/developerWorks

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

<?xml version="1.0" encoding="ISO-8859-1"?>


<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.2"
xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2"
xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.1"
xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2">
<sys:environment>
<sys:moduleId>
<sys:groupId>default</sys:groupId>
<sys:artifactId>dwapp</sys:artifactId>
<sys:version>1.0</sys:version>
<sys:type>car</sys:type>
</sys:moduleId>
<sys:dependencies>
<sys:dependency>
<sys:groupId>console.dbpool</sys:groupId>
<sys:artifactId>dwDatasource</sys:artifactId>
</sys:dependency>
</sys:dependencies>
</sys:environment>
<context-root>/</context-root>
<resource-ref>
<ref-name>jdbc/DataSource</ref-name>
<resource-link>dwDatasource</resource-link>
</resource-ref>
</web-app>

Disabling the default welcome application at server root

Application Server maps a welcome application by default to the context root /. In


addition to modifying the geronimo-web.xml plan, you must disable this application.
Otherwise, Application Server will report an error trying to map the context root. To
disable the welcome application:

1. Click the Expert User checkbox at the top of the screen.

2. Click the Applications > Web App WARs link in the left menu.

3. Locate the links next to the component named


org.apache.geronimo.configs/welcome-tomcat/2.0.1/car.

4. Click the Stop link.

Figure 33 shows a disabled welcome application:

Figure 33. Stopping the default welcome application

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 64 of 69
ibm.com/developerWorks developerWorks®

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 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 9.5 database, and IBM
WebSphere Application Server Community Edition 2.0 are all your disposal, only a
short click away. This collection of servers and IDEs works 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 9.5, using its rich set of
GUI tools and command-line tools.
• Created database tables with DB2 Express-C 9.5 and queried against
them using SQL commands.
• Installed and worked with WebSphere Application Server Community
Edition, using its Web-based Administrative Console as well as the
command-line deployer tool.
• Connected WebSphere Application Server Community Edition to DB2
Express-C 9.5 by deploying a system-wide database pool to the DB2
database.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 65 of 69
developerWorks® ibm.com/developerWorks

• Installed the Eclipse IDE, the supporting Web Tools Platform, and the
Eclipse WTP server adapter for WebSphere Application Server
Community Edition.
• Connected Eclipse to DB2 Express-C 9.5 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
the Eclipse WTP server adapter for WebSphere Application Server
Community Edition.
• Successfully developed an application on Eclipse, deployed it to
WebSphere Application Server Community Edition, and made the
application use DB2 Express-C 9.5 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.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 66 of 69
ibm.com/developerWorks developerWorks®

Downloads
Description Name Size Download
method
Sample code for this tutorial j-kickstartcode.zip 4KB HTTP

Information about download methods

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 67 of 69
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 now 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: Find out how
Eclipse differs from Netbeans, IntelliJ IDEA, and Borland JBuilder.
• "Developing Eclipse plug-ins" (David Gallardo, developerWorks, December
2002): Learn to create, debug, and install your plug-ins.
• WebSphere Application Server Community Edition: Documentation, FAQs,
articles, and more resources.
• Apache Geronimo: The Java EE 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
clustering, peer networks, discovery, TCP, SSL, multicast, persistence, and XA
and integrates seamlessly into Java EE 5 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.
• Yoko: An open source Java CORBA server implementation.
Get products and technologies
• WebSphere Application Server Community Edition: Download the application
server.
• DB2 Express-C: Download the database server.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 68 of 69
ibm.com/developerWorks developerWorks®

• Eclipse: Download the Eclipse SDK. Get the all-in-one Eclipse binary download
from the Web Tools Platform downloads page.
• Application Server WTP Server Adapter: Follow these step by step instructions
to install the server adapter.
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.

Free software, fast development Trademarks


© Copyright IBM Corporation 2006, 2007. All rights reserved. Page 69 of 69

Vous aimerez peut-être aussi