New York
University
Computer
Science Department
Courant
Institute of Mathematical Sciences
Homework #1 –
Traditional Application Server Technology
Course Title: Application Servers Course
Number: g22.3033-010
Instructor: Jean-Claude Franchitti Session:
1
1. Ongoing
Project Background
As part of the course on-going project, you will develop a framework-based enterprise application of your choice and deploy it on top of various types of application server environments. You will also enrich your application, and tune its operational environment as allowed by the underlying application server facilities. You will need to develop and deploy your application as a set of application-level services and common facilities on top of various application server frameworks suggested as part of the homework specifications. Your applications should keep the processing, rendering, querying, secure messaging, and persistence aspects of your application well componentized to help study the migration of these capabilities across various types of application server platforms. A meaningful example of a framework-based enterprise application is provided by the family of “multi-channel online community applications” that were developed in the Summer 2002 course project for the XML for Java Developers course (i.e., g22-3033.002). As you transition your enterprise application from one platform to another, you will study and develop model-based migration and interoperability tools that leverage off of the cutting edge concepts subsumed by modern Model Driven Architectures (MDA).
You should follow the "real-life" application architecture development approach suggested in the Session1 Sub-Topics 1-3 slide sets. In real projects, the application, application infrastructure, and technology infrastructure are usually analyzed, designed, and developed in parallel. You should always select a technology infrastructure (e.g., Windows 98/NT/2000 or Solaris 5.8 on i5.nyu.edu, and Sun’s JDK 1.3.1, 1.4.1, or 1.4.2) compatible with the application infrastructure set forth by the corresponding homework.
2.
Introduction to Traditional Application Server Technology
The first generation application servers were
spawned from the requirement to improve upon basic CGI connections between a
database and a Web server. To relate to this initial requirement, this first
homework studies a simple Application Server configuration based on an
extension of basic CGI technology.
The simple Application Server is made up of the
following components (see also attached diagrams)
1.
A
small CGI client program which could be written in any language
2.
An
Application Server which is multithreaded and is written in Java
3.
Templates
which contain the presentation logic of the screens. By keeping the presentation
logic detached from the actual code, there is no need to recompile the
Application Server to create new screens allowing for rapid development and
maintenance. In addition, these templates can contain logic for remote method
calls or queries to an underlying database.
2.1. Software Infrastructure Provided:
1.
Perl
archive (to be downloaded from http://www.perl.com/pub/a/language/info/software.html)
2.
Apache
Web Server archive to be downloaded from http://www.apache.org. Other web servers
can be used as alternatives (e.g., JWS, IIS, etc.)
3.
Browser
(Internet Explorer, or Netscape)
4.
J2SE
1.3.1, 1.4.1, or 1.4.2
5.
A
Java IDE of your choice
6.
An
OOAD environment of your choice (e.g., Rational Rose, Softera, etc.)
7.
Other
development tools best suited for legacy application server development
environments (as identified in homework #1a)
1.
AppServer.java
2.
cgimodule.pl
Templates (these files must be placed
in the same directory where AppServer has been started)
1.
Login.html
2.
Main.html
3.
Screen1.html
4.
Screen2.html
Additional
Sample Applications
1.
JavaCGI
2.
PatientProfileDB
2.2. Installing and Running the Homework Software Infrastructure:
1.
Install
Perl
2.
Run
the AppServer
ü Make sure to place all
templates in the same directory as AppServer
ü Run the AppServer as
follows: AppServer port#
3.
Run
the cgimodule
ü Make sure to place the
cgimodule.pl in the Web server cgi-bin directory
ü Make changes to the script
so that the correct host and port are set
ü Run the cgimodule as follows
from your web browser:
http://localhost/cgi_bin/cgimodule.pl?NextTemplate=login.html
3. Questions
1.
Preparation
phase:
2.
Prepare
a short report documenting your framework-based enterprise application (using
software engineering standards), and explaining its motivation.
3.
Prepare
a short report including functional diagrams and screenshots (as needed) to
demonstrate your understanding of the infrastructure software. Explain the
infrastructure software differences between the additional sample applications
and the software you are using for the homework.
4.
Develop
and deploy your framework-based enterprise application on top of the
infrastructure software provided. Document the benefits and deficiencies of the
approach on which the infrastructure software is based, and explain (as needed)
how it limits your ability to develop the various application components you
have envisioned for your enterprise application. Note that you do not need to
provide a complete implementation of your application in this first homework.
You should restrict yourself to what you feel is feasible based on time and the
level of support provided by the infrastructure software. Your application
should be tuned for efficiency as allowed by the underlying infrastructure
software, and you should document your performance engineering approach. You
should conclude your report by suggesting, and implementing (as time allows) an
improved Application Server model.
5. Explain how you would build an “analyzer” tool that can capture information about your deployed application and redeploy it as an XML-based web application such as the “spyweb” application provided as support material under demo programs on the course website. Note that the target application should maintain a strict separation between content, style, and logic. Your analyzer should extract and represent a generic model of your application using a suitable markup language.
6.
Extra
Credit: Implement a prototype of the analyzer tool described in question 5.
Deliverables
Grading
All assignments are graded on a maximum scale of 10 points. Your grade will be based equally on:
a.
The
overall quality of your documentation.
b.
The
understanding and appropriate use of application server related technologies.
c.
Your
ability to submit working and well-commented code.
d.
Extra
credit may be granted for solutions that are particularly creative.
Teaming is allowed for all
the homework and projects in this course. No more than two members per team are
allowed. As the course homework is based on an ongoing project, the same team
members will be required work together on all of the homework assignments.
Please let the TA know as soon as possible about teaming arrangements. You
should only submit one report/archive per team for each assignment. To balance
things out, the final grading in the course will take into account the fact
that you are working as a team instead of individually, so you should feel free
to work individually as well. Note that the final take home examination will
require individual work.