Sun ONE logo      Previous      Contents      Index      Next     

Sun ONE Application Server 7 Migrating and Redeploying Server Applications Guide

Appendix A
iBank Application specification

The sample application we defined is called 'iBank' and simulates a basic online banking service with the following functionality:

The application is designed after the MVC (Model-View-Controller) model where:

For packaging and deployment of application components, standard J2EE methods are used, and include definition of deployment descriptors, and packaging of application components within archive files:

The use of standard J2EE packaging methods will be useful in pointing out any differences between Sun™ ONE Application Server 6.0/6.5 and Sun ONE Application Server 7, and any issues arising thereof.

Tools used for the development of the application

Sun ONE Studio Enterprise Edition for Java, Release 4.0

Oracle 8i 8.1.6

Database schema

These business rules are illustrated in the entity-relationship diagram below:

Figure shows the Database Schema for the iBank application..

Figure A-1  Database Schema

The database model translates as the series of table definitions below, where primary key columns are printed in bold type, while foreign key columns are shown in italics.

BRANCH

BRANCH_CODE

CHAR(4)

NOT NULL

4-digit code identifying the branch

BRANCH_NAME

VARCHAR(40)

NOT NULL

Name of the branch

BRANCH_ADDRESS1

VARCHAR(60)

NOT NULL

Branch postal address, street address, 1st line

BRANCH_ADDRESS2

VARCHAR(60)

 

Branch postal address, street address, 2nd line

BRANCH_CITY

VARCHAR(30)

NOT NULL

Branch postal address, City

BRANCH_ZIP

VARCHAR(10)

NOT NULL

Branch postal address, Zip code

BRANCH_STATE

CHAR(2)

NOT NULL

Branch postal address, State abbreviation

CUSTOMER

CUST_NO

INT

NOT NULL

iBank customer number (global)

BRANCH_CODE

CHAR(4)

NOT NULL

References this customer's branch

CUST_USERNAME

VARCHAR(16)

NOT NULL

Customer's login username

CUST_PASSWORD

VARCHAR(10)

NOT NULL

Customer's login password

CUST_EMAIL

VARCHAR(40)

 

Customer's e-mail address

CUST_TITLE

VARCHAR(3)

NOT NULL

Customer's courtesy title

CUST_GIVENNAMES

VARCHAR(40)

NOT NULL

Customer's given names

CUST_SURNAME

VARCHAR(40)

NOT NULL

Customer's family name

CUST_ADDRESS1

VARCHAR(60)

NOT NULL

Customer postal address, street address, 1st line

CUST_ADDRESS2

VARCHAR(60)

 

Customer postal address, street address, 2nd line

CUST_CITY

VARCHAR(30)

NOT NULL

Customer postal address, City

CUST_ZIP

VARCHAR(10)

NOT NULL

Customer postal address, Zip code

CUST_STATE

CHAR(2)

NOT NULL

Customer postal address, State abbreviation

ACCOUNT_TYPE

ACCTYPE_ID

CHAR(3)

NOT NULL

3-letter account type code

ACCTYPE_DESC

VARCHAR(30)

NOT NULL

Account type description

ACCTYPE_INTERESTRATE

DECIMAL(4,2)

DEFAULT 0.0

Annual interest rate

ACCOUNT

BRANCH_CODE

CHAR(4)

NOT NULL

branch code (primary-key part 1)

ACC_NO

CHAR(8)

NOT NULL

account no. (primary-key part 2)

CUST_NO

INT

NOT NULL

Customer to whom accounts belongs

ACCTYPE_ID

CHAR(3)

NOT NULL

Account type, references ACCOUNT_TYPE

ACC_BALANCE

DECIMAL(10,2)

DEFAULT 0.0

Cleared balance available

TRANSACTION_TYPE

TRANSTYPE_ID

CHAR(4)

NOT NULL

A 4-letter transaction type code

TRANSTYPE_DESC

VARCHAR(40)

NOT NULL

Human-readable description of code

TRANSACTION_HISTORY

TRANS_ID

LONGINT

NOT NULL

Global transaction serial no

BRANCH_CODE

CHAR(4)

NOT NULL

key referencing ACCOUNT part 1

ACC_NO

CHAR(8)

NOT NULL

key referencing ACCOUNT part 2

TRANSTYPE_ID

CHAR(4)

NOT NULL

References TRANSACTION_TYPE

TRANS_POSTDATE

TIMESTAMP

NOT NULL

Date & time transaction was posted

TRANS_DESC

VARCHAR(40)

 

Additional details for the transaction

TRANS_AMOUNT

DECIMAL(10,2)

NOT NULL

Money amount for this transaction

Application navigation and logic

High-level view of application navigation

Figure shows the high level view of the application Navigation in the iBank application.

Detailed application logic

Figure shows the login process in the iBank application.

Figure shows the iBank application’s view and edit screens.

Figure shows the Account Summary and transaction history pages of the iBank application.

Figure shows the fund transfer pages of the iBank application.

Figure shows the Interest Calculator pages of the iBank application.

Application Components

Each table in the database schema is encapsulated as an entity bean:

Entity Bean

Database Table

Account

ACCOUNT table

AccountType

ACCOUNT_TYPE table

Branch

BRANCH table

Customer

CUSTOMER table

Transaction

TRANSACTION_HISTORY table

TransactionType

TRANSACTION_TYPE table

All entity beans use container-managed persistence (CMP), except Customer, which uses bean-managed persistence (BMP).

Currently, the application only makes use of the Account, AccountType, Branch, and Customer beans.

The InterestCalculator bean is a stateless session bean that encapsulates financial calculations. It is responsible for providing the compound interest projection calculations, through the projectEarnings() method.

Component name

Purpose

LoginServlet

Authenticates the user with the BankTeller session bean (authCheck() method), creates the HTTP session and saves information pertaining to the user in the session.Upon successful authentication, forwards request to the main menu page (UserMenu.jsp)

CustomerProfileServlet

Retrieves customer and branch details from the Customer and Branch entity beans and forwards request to the view/edit details page (CustomerProfile.jsp)

UpdateCustomerDetailsServlet

Attempts to effect customer details changes amended in CustomerProfile.jsp by updating the Customer entity bean after checking validity of changes.Redirects to UpdatedDetails.jsp if success, or to DetailsUpdateFailed.jsp in case of incorrect input.

ShowAccountSummaryServlet

Retrieves the list of customer accounts from the BankTeller session bean (getAccountSummary() method) and forwards request to AccountSummary.jsp for display

TransferFundsServlet

Retrieves the list of customer accounts from the BankTeller session bean (getAccountSummary() method) and forwards request to TransferFunds.jsp allowing the user to set up the transfer operation.

CheckTransferServlet

Checks the validity of source and destination accounts selected by the user for transfer and the amount entered. Calls the transferFunds() method of the BankTeller session bean to perform the transfer operation. Redirects the user to CheckTransferFailed.jsp in case of input error or processing error, or to TransferSuccess.jsp if the operation was successfully carried out

ProjectEarningsServlet

Retrieves the interest calculation parameters defined by the user in InterestCalc.jsp and calls the projectEarnings() method of the InterestCalculator stateless session bean to perform the calculation, and forwards results to the ShowProjectionResults.jsp page for display. In case of invalid input, redirects to BadIntCalcInput.jsp

Component name

Purpose

index.jsp

Index page to the application that also serves as the login page.

LoginError.jsp

Login error page displayed in case of invalid user credentials supplied. Prints an indication as to why login was unsuccessful.

Header.jsp

Page header that is dynamically included in every HTML page of the application

CheckSession.jsp

This page is statically included in every page in the application and serves to verify whether the user is logged in (i.e. has a valid HTTP session). If no valid session is active, the user is redirected to the NotLoggedIn.jsp page

NotLoggedIn.jsp

Page that the user gets redirected to when they try to access an application page without having gone through the login process first.

UserMenu.jsp

Main application menu page that the user gets redirected to after successfully logging in. This page provides links to all available actions.

CustomerProfile.jsp

Page displaying editable customer details and static branch details. This page allows the customer to amend their correspondence address

UpdatedDetails.jsp

Page where the user gets redirected to after successfully updating their details.

DetailsUpdateFailed.jsp

Page where the user gets redirected if an input error prevents their details to be updated.

AccountSummaryPage.jsp

This page displays the list of accounts belonging to the customer in tabular form listing the account no, account type and current balance. Clicking on an account no. in the table causes the application to present a detailed transaction history for the selected account

ShowTransactionHistory.jsp

This page prints the detailed transaction history for a particular account no. The transaction history is printed using a custom tag library.

TransferFunds.jsp

This page allows the user to set up a transfer from one account to another for a specific amount of money.

TransferCheckFailed.jsp

When the user chooses incorrect settings for fund transfer, they get redirected to this page.

TransferSuccess.jsp

When the fund transfer set-up by the user can successfully be carried out, this page will be displayed, showing a confirmation message.

InterestCalc.jsp

This page allows the user to enter parameters for a compound interest calculation.

BadIntCalcInput.jsp

If the parameters for compound interest calculation are incorrect, the user gets redirected to this page.

ShowProjectionResults.jsp

When an interest calculation is successfully carried out, the user is redirected to this page that displays the projection results in tabular form.

Logout.jsp

Exit page of the application. This page removes the stateful session bean associated with the user and invalidates the HTTP session.

Error.jsp

In case of unexpected application error, the user will be redirected to this page that will print details about the exception that occurred.

Fitness of design choices with regard to potential migration issues

While many of application design choices made are certainly debatable especially in a "real-world" context, care was taken to ensure that these choices enabled the sample application to encompass as many potential issues as possible as one would face in the process of migrating a typical J2EE application.

This section will go through the potential issues that one can face when migrating a J2EE application, and the corresponding component of iBank that was included to check for this issue during the migration process:-

With respect to the selected migration areas to address, the white paper specifically looks at the following technologies:

Servlets

Java Server Pages

JDBC

Enterprise Java Beans

Application Packaging



Previous      Contents      Index      Next     


Copyright 2003 Sun Microsystems, Inc. All rights reserved.