View
217
Download
1
Tags:
Embed Size (px)
Citation preview
CS 633 Final ProjectTeam A
Andrew Corea
Christopher FieldGautham 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
Outline
• Middleware Integration• Amazon Web Services• Designs• Screenshots• Problems Encountered• Lessons Learned• Implementation Details• AWS Utilization Ideas
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.
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
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.
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
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.
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)
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
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.....
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.
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
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
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
Overall Architecture
Chris Field
Overall Architecture View
Architecture Overview
Amazon AWS Architecture Overview
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
NJIT Architecture Overview
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
Database Design
Shruti Chandrashekar
Database Design
Fig: Database diagram showing the various tables with their attributes and relationships
Demo
Shruti & Lokesh
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
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
Screen Shots
Demo of a CustomerClient/Server Interaction
Initial Query of CustOrder Table
Login Page
After log in with item from last time
Product List for Notebooks
Product Detail Pavilion
After adding to cart
Product List of Audio Category
View Cart
After removing camera and changing quantity
After Purchase, note empty cart
Query of completed order
Query of completed order details
Problems Encountered
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.
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.
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.
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
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
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
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.
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.
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
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
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
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
Lessons Learned
Andrew Corea
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.)
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
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
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....
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.
Select Implementation Details
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"));%>
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;}
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
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.
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.
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
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
Thank you for your time
Questions?
Comments?