You are on page 1of 28

Point Of Sale(POS) J2EE Application

(POS J2EE Application with JRun)


< Master Degree Final Project >

Department : Computer Science


Degree : Master
Student : Woojin Choi
ID : 0426367

Topics

Introduction of POS Application


System requirement
Application Map
Database Diagram
POS Component
POS Workflow using J2EE Design
HTML / JSP / Servlet / EJB in POS
J2EE Introduction (J2EE J2EE API)
POS Application with J2EE
Enterprise JavaBeans (EJB)
POS Component Example
POS Security Mechanism
POS Scheduler
Supplementary Issues

Introduction of POS

POS : Point of Sale


Business topic : Web based application for a customer to check out the
shopping easily and fast
Current Process : Customer comes in store -> Put the item to shopping
cart -> Wait to check out -> Clerk help to check out
Problem : Customers need to wait for a long time even the item is simple
Solution : Put the clerk barcode scanning and checking out systems to
each shopping lane and allow for a customer to check out the carts by
himself
New system to solve the problem : POS J2EE Application
Benefits : Portable business solution / Integrated e-business / Save the
customers time / Down the store cost

System Requirement

Server side
Operating System : Win NT 4.0 / Win2K
Web Server : IIS 4.0 / 5.0
Application Server : JRun 3.0.2
Database : MS SQL Server 7.0
Client side
Browser : IE4.0 or higher

Application Map
Index.jsp

(Display shoppling cart)

Login.jsp

Authentication
Servlet

Products.jsp
Add/Edit/Delete
Shopping list
Checkout.jsp

Customized Error Pages


HTTP Error
Jrun Application Error
403.html
404.html
405.html
500.html
Loginerror.jsp

Loginerror.jsp

Logout.jsp
Scheduler

Database Diagram

POS Components

Presentation Logic
HTML
JSP
Login.jsp, customers.jsp, customer_profile.jsp,
Interface Logic (Data Modeling)
Servlet
EditCustomer.class, DeleteCustomer.class,
AddShoppingList.class,
Business Logic
EJB
Customer EJB, ShoppingList EJB,

POS Workflow using J2EE design

Presentation : JSP
Interface : Servlet
Business Logic : EJB
Benefits : Presentation logic doesnt implement
business logics at all. Every business data is updated
through EJB or Servlets. Especially Servlet is
reponsible for data modeling for business logic as
interface between presentation and business logic.

JSP

<>

Servlet

EJB
Container

DB

HTML / JSP / Servlet / EJB in POS

HTTP on LAN

JSP
<>
Engine
Servlet
Container
EJB
Container

JDBC

HTTP

HTTP Server(HTML)

JRun

DB

Java 2 Enterprise Edition (J2EE)

Defines a standard for developing multi-tier applications


Vendors collaborate on standards and compete on
implementation
All the pieces of the application are portable across platforms
and servers
Simplifies application development
Developer focuses on application logic
J2EE server handles complexity of lower level services
Component
JSPs / Servlets / EJBs
API : Servlet / JSP / EJB / JDBC / JNDI / JavaMail / JMS / JTA

J2EE APIs
Servlets
Standard API extending and enhancing Web servers
Java Server Pages (JSP)
Standard API for creating dynamic content using static templates
Enterprise JavaBeans (EJB)
Standard server-side component model
Java Database Connectivity (JDBC)
JavaMail
Java Naming and Directory Interface (JNDI)
Java Message Service (JMS)
Java Transaction API (JTA)
*) POS system : Servlet / JSP / EJB / JNDI / JDBC

POS Application with J2EE

Provides complete implementation of J2EE

POS Application

Servlets 2.2
JSP 1.1
EJB 1.1
JNDI
JMS
JDBC
JTA/JTS
JavaMail

Servlet 2.2
JSP 1.1
EJB 1.1
JNDI

POS Application Work Flow


Presentation : JSP
Interface : Servlet
Business Logic : EJB

Enterprise JavaBeans (EJB)

Server-side component model allowing developers to


concentrate on business logic

EJB server handles complexity of lower level services

Component life cycle Connection pooling


State management
Transaction management
Persistence
Security
Multi-threading
EJB
API guarantees components to be portable across
EJB Servers

Entity Beans

Used to
Represent a business entity (like a row in a
database table)
Provide standard access and validation for
business entities
Persistent (live beyond server lifetime)
Usually represent data in a database
Examples
Customer, Product, Employee, ...

Entity Beans

Bean Managed Persistence (BMP)


Developer writes persistence code
Container Managed Persistence (CMP)
EJB properties are mapped to database columns
Persistence code automatically generated by EJB
container
Implements javax.ejb.EntityBean

Session Beans

Used to
Manage processes and tasks
Model the workflow of Entity beans
Retrieve and update data that can't be adequately captured
in an entity bean
No persistent state
Example
Order a product
Check out the shopping cart
Reservation

Session Beans

Stateful Session Bean


Maintain a state between method invocations
Store properties as instance variables
Expose methods to manipulate properties
Stateless Session Bean
Do not retain information between method invocations
Each method is completely independent
Client passes needed information as parameters to the method
Participate in instance pooling
Greatest scalability
Many clients share limited number of instances
Implements javax.ejb.SessionBean

Home / Remote Interface

Home Interface
Defines methods to create (obtain), find, or remove
a Bean Instance on behalf of the client
Extends javax.ejb.EJBHome
Remote Interface
Defines the bean's business methods
Extends javax.ejb.EJBObject

Packaging the Bean in a JAR File

Includes:
Bean class
Remote interface
Home Interface
Deployment descriptor
(ejb.xml)

ShoppingListHome.class
ShoppingList.class
ShoppingListEJB.class
ejb.xml

Deploy Tool

Deploy Tool(Macromedia KAWA, J2EE deploytool) generates


stub classes and object classes
Deploy Tool uses jar file and generates necessary classes for
EJB server
Stub classes
Downloaded to a client dynamically at run time
Used by client
Object classes
Implement all corresponding interfaces
Used by EJB server

EJB Conceptual Architecture


lookup(Customer")

JNDI Server

InitialContext

EJB Server

create/find
EJB Home Stub
Home Interface

EJB Home

Home Interface

getList( )
EJB Object Stub
Remote Interface

EJB Object
Remote Interface

EJB Class

Development Process EJB

Developer
Home Interface
Remote Interface
EJB class
Support classes
Deployer (Deploy tool)
Packaging Interfaces, EJB class, and support classes
Deploy the packaged EJB (jar file)
Server
Implement EJB

EJB
Devloper

CustomerHome.class
Customer.class
CustomerEJB.class
ejb.xml

EJB Servers

POS Component Example

Add, remove, and display a customer shopping list


ShoppingListSession

Display

Index.jsp

DB
Add Remove

ShoppingCart
Table

AddShoppingList
RemoveShoppingList

Display all
shopping list
from EJB
Form action to
add / remove
shopping list

Capture the
Shopping list id
Call bean
method to be fit
with each action

Implement get,
add, remove
shipping list
methods

Select, update,
delete shopping
list from
ShoppingCart
table

POS Security Mechanism

Form Based JRun application security based on J2EE


User / Group / Role
Protect entire application JSPs / Servlets / EJBs
*) DatabaseAthentication.java to verify user using DB
POS
Login.jsp

Authentication*
Servlet

Loginerror.jsp

HTML
JSP
Servlet
EJB
Other Resources

POS Scheduler

Jrun provides a Scheduler servlet to execute actions


at specified times
Scheduler servlet : allaire.jrun.scheduler.CronService
Defines the servlet in web.xml
Application defines Schedule.ini for the service
Schedule.ini includes the rule and the requests to be
scheduled
* If this service is used in application, this application
is not potable because JRun added this service.

Web.xml sample for scheduler

<servlet> defines the service </servlet>

<servlet>
<servlet-name>POSScheduler</servlet-name>
<servlet-class>allaire.jrun.scheduler.CronService</servlet-class>
<display-name>POSScheduler</display-name>
<description>Scheduler for POS System</description>
<init-param>
<param-name>schedfile</param-name>
<param-value>C:\JRun\3.0\servers\default\pos-app\schedule.ini</param-value>
</init-param>
<init-param>
<param-name>logfile</param-name>
<param-value>C:\JRun\3.0\servers\default\pos-app\scheduler-log\pos-scheduler.log</param-value>
</init-param>
<load-on-startup/>
</servlet>

Except those bold tags, developer can give any name or file

Schedule.ini Example

Schedule.ini is defined in web.xml


<init-param>
<param-name>schedfile</param-name>
<param-value>C:\JRun\3.0\servers\default\pos-app\schedule.ini</param-value>
</init-param>

Developer can use any file name on that


Schedule.ini example

# This is the ini file for JRun scheduler


# Scheduler checks the shopping cart table every ten minutes and updates the shopping cart status.
# If the shopping cart items are found to be older than 2hr, those will be deleted.
# Those items to be older than 2hr are supposed to be not in the cart or customer left the store without checkout.
0 0,10,20,30,40,50 * * * * http://localhost/pos/servlet/SchedulerForShoppingCart

Scheduler runs this servlet every ten minutes

Supplementary Issues

Physical Security Mechanism


Barcode scanner integration(physical)
Credit card process integration(physical)
Business data exchange using XML

You might also like