68
CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

  • View
    217

  • Download
    1

Embed Size (px)

Citation preview

Page 1: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

CS 633 Final ProjectTeam A

 Andrew Corea

Christopher FieldGautham Mayyuri

Lokesh Dahiya Nikhil Royal Salman Virk

Shruti Chandrashekar

Page 2: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Project Summary

• Implementation of a Shopping Carto EZShop

• Front Endo Java Server Pages (JSPs) running on JBOSS Web Component

• Middlewareo JBOSS

Enterprise Java Beans Stateless Session Beans Connect with ListCart.jsp over internet

o Java Server Page (ListCart.jsp) at web.njit.edu Speaks with database

• Database Layer Oracle at prophet.njit.edu:5560/isqlplus

Page 3: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Outline

• Middleware Integration• Amazon Web Services• Designs• Screenshots• Problems Encountered• Lessons Learned• Implementation Details• AWS Utilization Ideas

Page 4: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Why JBOSS?

• Free• Popular so there is a good body of information to search on for assistance

o In reality the latest version is a major change over previous ones and the online documentation has not yet caught up.

• It provides both the web container and the EJB container instead of having to try to make two different products work together.

Page 5: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Why Prophet?

• The project presentation said this is a distributed systems class and a 3 tier client/server architecture was encouraged.

• We REALLY distributed our system between AWS, the client, web.njit.edu and prophet.njit.edu

Page 6: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Why use JSPs on the back end

• NJIT states tomcat is only rebooted 3x per day http://web.njit.edu/all_topics/Servers/Tomcat/o Unacceptable development/debug cycle waiting for reboot

• JSPs show the changes as soon as you do it, just change file and save no need to compile, just change, save, and refresh.

Page 7: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Amazon Web Services Exec. Summary

• AWS is much easier to use than the AFS environment• We get root access to a Linux box in the cloud• Dr. Wolosh can open ports on AWS if we ask him to• No chance of conflicts with other people using the same ports for

their projects• No tiny memory or disk space limits like in the AFS

environment

Page 8: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

What is an AMI?

Amazon machine image.  Basically each team's Linux box is a machine image.  A machine image is like what we would refer to as a physical computer.

You can get AMI's with software already installed on them like JBOSS, Oracle, etc.. or you can start with just Linux or windows/etc... An Instance of an AMI is a running computer from an AMI, there can be many of these.  Similar to how one physical computer can run multiple virtual machine images with each one seeming like its own computer.

Page 9: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

What is the Elastic Compute Cloud (EC2)

• A data center managed on Amazon's computerso to a developer each AMI Instance is little different from a Virtual

Machine in their local data center.• You only pay for what you use.  You can scale up to 1,000 AMI's or you

can scale down to 10 AMI's only paying for the computer time you use, not needing to buy hardware, rent hardware, or buy staff to manage it.o If you launch a new product and anticipate a spike in traffic, you can

easily scale up temporarily and then go back down. • Using web services (RESTful or SOAP) you can manage the AMI's by

creating them, destroying them, setting them to IP addresses, opening ports on them, create new storage volumes from the elastic block store and attach them to an AMI (like Dr. Wolosh did with /local)

Page 10: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Cloud Services

• Simple DBo DB system on the cloud that does not use the relational model

• Amazon Simple Storage Serviceo Web Service to store/retrieve large amounts of data.

• Amazon CloudFront o Distribute data files from Amazon Simple Storage Service to

end users, by moving the data to the computer on amazon's network closest to the end user and serving from there

• Amazon Simple Queue Serviceo  Message Oriented Middleware where processes both in and out

of the cloud can store and retrieve messages from the Queue

Page 11: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Other Services

There also seem to be hooks into amazon.com as well as some features already implemented like shopping carts on the various pages which are usable with an amazon web service ID.  They aren't the main services of EC2 and may count as other services, it's tough to say.....

Page 12: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

The Rub

• Accessing the Amazon services requires an AWS ID. Basically there is one AWS ID for the entire class and that has been used to create our machines and give us storage space.

• With the AWS ID it would be possible to use the services like Simple DB and also to stop/start AMI's, including those of other teams.

• The advantage of Amazon web services is mostly for UCS where they have simple management of computers through web services and can scale up/down as they need to for different courses.

Page 13: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

What we get

• Root access on a Linux boxo No restriction on ports below 1024o Can install whatever is required

• a static ip address that can be used to connect to ito in comparison to dynamic addresses at many people's home

connections • UCS can open ports as needed

o specifically Dr. Wolosh mentioned that they will not open ports on the AFS machines

• UCS can also add new space as neededo It's as easy as using the web service to create more storage and

mount it

Page 14: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

What do we get on AFS machines

• An account with memory limits in both disk space and RAMo Lecture slides mention needing to request more space to Install

JBoss and Web Sphere not working at all• A set machine behind a firewall that cannot be accessed outside of

the NJIT network except for certain exceptionso It was mentioned that they will not open additional ports to the

outside worldo need to be on the vpn to use an arbitrary port

• A machine shared with otherso if two students run their project on the same port, only one will

be successful if both are on the same machine• not the root

o Cannot do a lot of things and need to ask UCS

Page 15: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Sources on AWS

• Emails with Dr. Wolosh, he is the Amazon Web Services Guru at UCS

 • Amazon Developer Guide, in particular looking at the API's can

get a feel for what you can do.  

• http://docs.amazonwebservices.com/AWSEC2/2009-03-01/DeveloperGuide/

http://aws.amazon.com/ general guide to everything AWS

Page 16: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Overall Architecture

Chris Field

Page 17: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Overall Architecture View

Page 18: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Architecture Overview

Page 19: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Amazon AWS Architecture Overview

Page 20: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Amazon AWS Architecture

Amazon Web Services machine  (174.129.241.232)  • JBOSS

o Store.war JSPs for front end various resources like images etc.

o  Beans.jar cs633beans

 Java bean interfaces, implementations Communication class Posts forms to ListCart.jsp on web.njit.edu and extracts

results from xml messages

Page 21: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

NJIT Architecture Overview

Page 22: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

NJIT Architecture

NJIT Network• web.njit.edu

o ListCart.jsp JSP that processes a web form and runs queries on Oracle

returning xml responses• Prophet.njit.edu

o course Oracle DB

Page 23: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Database Design

Shruti Chandrashekar

Page 24: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Database Design

   Fig: Database diagram showing the various tables with their attributes and relationships

Page 25: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Demo

Shruti & Lokesh

Page 26: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

SQL Queries

• SELECT OID, CName, OrderDate from CustOrder co INNER JOIN Customer c on co.CID = c.CID

  

• SELECT co.OID, OrderDate, CName, PName, Quantity, Price * Quantity as PriceFROM OrderContents oc INNER JOIN custorder co on oc.oid = co.OID INNER JOIN Customer c on c.CID = co.CID INNER JOIN Product p on p.PID = oc.PIDORDER BY co.OID  

Page 27: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Query of CUSTORDERS/OrderContents after Checkout

Oracle:

• SELECT p.PName, oc.Quantity, p.Price FROM OrderContents oc INNER JOIN Product p on oc.PID = p.PID WHERE oc.OID = xxx

Page 28: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Screen Shots

Demo of a CustomerClient/Server Interaction

Page 29: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Initial Query of CustOrder Table

Page 30: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Login Page

Page 31: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

After log in with item from last time

Page 32: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Product List for Notebooks

Page 33: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Product Detail Pavilion

Page 34: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

After adding to cart

Page 35: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Product List of Audio Category

Page 36: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

View Cart

Page 37: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

After removing camera and changing quantity

Page 38: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

After Purchase, note empty cart

Page 39: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Query of completed order

Page 40: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Query of completed order details

Page 41: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Problems Encountered

 

Page 42: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Setting up JBOSS

• JBOSS 5 just came out which is a significant departure from previous versions.  Most of the JBOSS material is from the book JBoss in Action at http://www.manning.com/jamae/ there are older versions, so make sure you get the one published January 2009.

• Even with the book a lot still isn't spelled out and requires guess work.

• In particular JBOSS has a bunch of configurations. But our project is in JBOSS installation directory/server/default/deploy.

• To start JBOSS go into JBOSS installation/bin and run run.sh as ./run.sh -b 0.0.0.0.  If you forget the -b 0.0.0.0 flag you will only be able to connect locally.

Page 43: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

How to Package App for JBOSS

• Shoppingcart.ear - Enterprise Archive Fileo META-INF 

 application.xml - application deployment descriptor. To get JBOSS to redeploy java beans, need to modify this file (we used touch application.xml) for this

o Beans.jar  cs633beans - package for our beans

.java and .class files for interfaces/implementations of beans and DBCommunicator class

redeploy.sh - shell script to touch Shoppingcart.ear/META-INF/application.xml

 classpath.sh - shell script to set classpath to compile EJBso Store.war - Web Archive File containing front end JSPs, graphics, static

html, etc.

Page 44: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

How to Package App for JBOSS II

• We just created the directories in the deploy directory for each of the archive files and just edited files directly in those directories.

 • You can also package them up into an Enterprise Archive File

and move that into the deployment directory for the appropriate server configuration.

Page 45: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Unable to compile ejb apps

• When trying to compile applications importing javax.ejb we got an error saying that the package did not exist.  The solution is to add the EJB jar to the classpath.  This is located in jboss installation directory /client/jboss-javaee.jar.

 • In previous versions this was called jboss-j2ee.jar as in the link, so it

required an educated guess to determine jboss-javaee was probably the same thing.

• Refer http://www.velocityreviews.com/forums/t135964-j2se-j2ee-classpath.html

 

Page 46: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

How to set classpath

classpath.sh:CLASSPATH=.:/local/softwares/jboss/jboss-5.0.1.GA/client/jboss-javaee.jarexport CLASSPATH Prior to compiling execute in same directory as classpath.sh. ./classpath.sh

Without the initial "." the variable change will not  be reflected in the current shell session

Page 47: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

How to get jboss to redeploy project

touch application.xml where that is the application deployment descriptor.

We created redeploy.sh:touch ../META-INF/application.xml

after compiling. ./classpath.shjavac cs633beans/*.java./redeploy.sh

Page 48: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Unable to load bean interface in JSP

Needed to put beans into a package, then after importing the package we were able to successfully use the Java Bean interface.  Just sticking them into a java bean .jar file wasn't enough, they had to be in their own package in order to be able to import them into the JSP file.

Page 49: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Unable to find bean implementations in JSP

Instead of using a local interface we switched to a remote interface and it worked.  This was an experiment after trying near everything else.  When declaring the interface you just put @Remote above the definition in the Interface.

Page 50: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Developing web pages prior to EJBs

• Installed Apache Tomcat on our amazon web services servero We can stop and restart tomcat as many times as we want

• Created plain java objects with the same code as the java bean interface (minus the tags) and normal java objects to implement the bean and return results in the same format of the bean.

• After creating the front end with the normal java objects, move them to JBOSS and change the line: Interface i = (Interface) new InterfaceBean() to be InitialContext ctx = new InitialContext(); Interface i = (Interface) ctx.lookup("Shoppingcart/Interface/remote"); 

• Finally use i as a normal java object

Page 51: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

PL/SQL Issues (various)

How to create an autonumber field in Oracle, needed for ShoppingCartContents, OrderContents, and CustOrder.  The answer is called sequences. CREATE SEQUENCE Order_seq    MINVALUE 1    START WITH 1    INCREMENT BY 1    NOCACHE Usage:  Order_seq.nextval in queries

http://www.techonthenet.com/oracle/sequences.php

Page 52: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

PL/SQL Issues 2

Executing Multiple statements and declaring SQL variables:

DECLAREvariable1; variable2;BEGINstmt1; stmt2; END;

http://infolab.stanford.edu/~ullman/fcdb/oracle/or-plsql.html

dual table for executing select statements without a tableeg select Order_Seq.nextval into variable from dual http://forums.asp.net/t/1158811.aspx

Page 53: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Using Java to post to web page and read resultsYou use the URLConnection class to open an input and output screen.  The output screen writes the form parameters and the input stream reads them. http://www.java2s.com/Code/Java/Network-Protocol/Postdatatohtmlform.htm

Page 54: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Lessons Learned

Andrew Corea

Page 55: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Enterprise Java Beans

EJBs are fairly easy to use compared to something like Corba.  The interface is a plain java object with a few annotations as is the implementation.

To use an EJB it is just a matter of using the naming service to look up the EJB and cast it to an object of type interface.  There are no policy files to edit like RMI and no compilation prior to normal compilation which we used with both RMI and CORBA. While building/using the beans is easier than CORBA/RMI, setting up the server is significantly more advanced.  There are a lot of nuances (Packaging up the beans/website into java archives, installing and configuring the server, etc.)

Page 56: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Client/Server Interaction Comparison

How to interact with clients using EJB• Create InitialContext object• Lookup object from InitialContext, no stubs/skeletons required.

 How to interact with clients using CORBA• Create ORB• Lookup Object Reference from CORBA naming service • Narrow naming context• Use helper class with narrow naming context to get reference to the

object How to interact with clients using RMI•  Lookup Naming Registry •  Lookup object from Registry

Page 57: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

JSPs

http://www.jsptut.com

• Directives for how to import fileso Important for using beans

• Declarations for how to declare methods in a JSPo Important for code organization

• Sessions and Form Processing as wello For keeping/sending information between pages

Page 58: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Value of Unit Testing

• HTMLs that test the database jsp ListCart.jsp directly• Dummy Objects for front end to be able to test presentation of DB

results prior to finishing beans• Main Method in DBCommunicator class that tries some of the

operations and prints the xml messages and processed xml onto the command line

 END RESULT: Integration was a non-event.  Just swap out object instantiation of dummy object with naming context lookup for bean.  The procedure calls remain exactly the same.  Also since DB operations and communication links were already tested that all worked as planned as well....

Page 59: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

AWS

Lessons about AWS are in the section in the beginning.  Nevertheless AWS is also a big lessoned learned.  So this is a pointer to the AWS stuff at the beginning.

If you need to scale up for a temporary project AWS is the perfect vehicle, pay only for what you need when you use it.  Otherwise you'd have to rent hardware, worry about power and cooling, worry about disaster recovery, and then if it is only a temporary need figure out what to do with the leftover hardware to recover some of your investment.  AWS is basically a data center that you don't need to worry about.

Page 60: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Select Implementation Details

 

Page 61: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

add_cart.jsp -- JSP calling bean sample

<%@ page import="cs633beans.*, java.util.*, java.lang.*, javax.naming.InitialContext" %><%InitialContext ctx = new InitialContext();ShoppingCart sc = (ShoppingCart) ctx.lookup("Shoppingcart/ShoppingCartBean/remote");

String PID = request.getParameter("PID");String mySession = (String)session.getAttribute("CUSTOMERID");

sc.addItem(mySession, PID);response.sendRedirect(request.getHeader("Referer"));%>

Page 62: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Shopping Cart Bean InterfaceShoppingCart.java

package cs633beans;import java.util.*;import javax.ejb.Remote;@Remotepublic interface ShoppingCart {  public String addItem(String customerID, String productID) throws Exception;  public String removeItem(String customerID, String productID) throws Exception;  public String updateQuantity(String customerID, String productID, int quantity) throws Exception;  List<Map<String,String>> showContents(String customerID) throws Exception;  public String checkOut(String customerID) throws Exception;}

Page 63: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Future Enhancements

• Securityo Turn on SSL for entire website, or just for login and a credit

card page• User Profile

o User Registrationo User Details (name, addresses, etc.)o User Order History

• Store Featureso Shipping Price/Sales tax calculationo Product registration pageo Search engine to search for productso Link to paypal or something for processing credit cards

Page 64: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Changes for Use in the Real World

No company in their right mind would put the database server across the internet from the web server.• It is slow, each operation requires a call across the internet

o Even for small calls the internet has a high latencyo If you were transferring more than a few MB of data there would be an

even larger delay due to transfer time• It is insecure, anyone can read the communication

o Encryption slows everything down and introduces overhead• Java Beans have all sorts of facilities for interacting directly with the

database and making it much easier for the developers (Enterprise Beans with Container Managed Persistence, etc.)

 Definitely for use in the real world install the DB on the Amazon Web Services box.  Mostly this was an Academic exercise.

Page 65: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Ideas for future projects with AWS

1.  Give each team 2 computers - one to set up/install DB on and another to set up/install middleware on.  Then they can do a 3 tier system.

2.  Make one team the database administrators for the other teams so everyone connects to that AWS server for a database.  Of course database administrators must install/setup Oracle and provide instructions on how to connect to Oracle via JDBC.

3.  Give each team their own AWSID so that teams can start/stop instances and more importantly use the Amazon Web Services built in services like Simple DB, etc.

Page 66: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

References I

JBOSS:"JBoss in Action" by Javid Jamae and Peter Johnson http://www.manning.com/jamae/

Java: http://java.sun.com/tutorialApi docs at http://java.sun.com/j2se

AWS :http://aws.amazon.com/

http://centos.wikispaces.com

JSP:www.jsptut.com

References:

http://infolab.stanford.edu/~ullman/fcdb/oracle/or-plsql.html - how to use PL/SQL

http://www.webreference.com/cgi-bin/perl/makerss.pl - for creating RSS

Page 67: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

References II

Products links:

http://digitalcameras.bizrate.com/canon-eos-5d-with-24-105mm-lens--pid593642990/compareprices.html

http://www.imaging-resource.com/PRODS/SX110IS/SX110ISA.HTM

http://laptopcom.blogspot.com/2008_08_01_archive.html

http://www.notebooks.com/2009/04/22/hp-pavilion-dv3t-notebook-pricing-specs-and-details/

http://www.headphone.com/guide/by-headphone-type/sealed-type/

http://www.apple.com/ipodnano/

http://www.hometheatermag.com/buyersguides/speakers/

Logo:

http://www.aistudio.net/img/logo/newlogos/8_Ezshop24com_3_small.jpg

Page 68: CS 633 Final Project Team A Andrew Corea Christopher Field Gautham Mayyuri Lokesh Dahiya Nikhil Royal Salman Virk Shruti Chandrashekar

Thank you for your time

Questions?

Comments?