Clay v1.3.x Design Specification |
|
Document SummaryThis document specifies in a succinct manner the design for Clay v1.3.x. Document Version and Status
This is version 0.1 of this document. The latest copy can be found at
http://www.tcnj.edu/~assistf/clay/clay-1.3/docs/design.spec.html KeywordsThis document uses some common terms in new ways and defines new terms.
Design Table of Contents
SummaryThere are two points of departure for implementing this new system. First, we could go back into the Tomcat source and specialize Tomcat to run our system. Second, we can just make our Servlets rely on features implemented in a package structure separate from Tomcat and have that package structure available to all Servlets in that Tomcat instance. Along with this second approach, we will take advantage of Tomcat's very flexible configuration and turn off services we don't need rather than try to remove them from the codebase. The advantages of this second approach are mainly the time and effort saver of having to learn and re-architect Tomcat needlessly. In addition, people can run our system by merely changing some config parameters (not having to recompile Tomcat with our classes) and putting our JAR file into their Tomcat's $CLASSPATH environment variable. Application ArchitectureAt a basic level, this "equation" holds true:
(Catalina) + (Tomcat stuff) + clay.jar = (Clay Server) where Catalina is the Servlet Container in Tomcat 4.1.9 and
Tomcat stuff is other random background Tomcat support (without HTTP connectors or other extra stuff like Jasper) and
Clay Server is the combination of these elements that provides an environment for people who
wish to develop a Servlet Context that acts as a ProjectServlet.
The following picture depicts the contents of
Application Directory LayoutClay 1.3.x directory structure will be laid out in the following manner: assume $CLAY_HOME==c:\clay\clay-1.3 - $CLAY_HOME/bin - $CLAY_HOME/classes - $CLAY_HOME/conf + $CLAY_HOME/docs - $CLAY_HOME/images - $CLAY_HOME/lib - $CLAY_HOME/logs + $CLAY_HOME/tomcat - $CLAY_HOME/tomcat/bin - $CLAY_HOME/tomcat/classes + $CLAY_HOME/tomcat/common - $CLAY_HOME/tomcat/common/classes - $CLAY_HOME/tomcat/common/lib - $CLAY_HOME/tomcat/conf - $CLAY_HOME/tomcat/lib - $CLAY_HOME/tomcat/logs + $CLAY_HOME/tomcat/server - $CLAY_HOME/tomcat/server/classes - $CLAY_HOME/tomcat/server/lib - $CLAY_HOME/tomcat/temp + $CLAY_HOME/tomcat/webapps/ + $CLAY_HOME/tomcat/webapps/clayapp-n + $CLAY_HOME/tomcat/webapps/clayapp-n/WEB-INF - $CLAY_HOME/tomcat/webapps/clayapp-n/WEB-INF/web.xml - $CLAY_HOME/tomcat/webapps/clayapp-n/WEB-INF/lib - $CLAY_HOME/tomcat/work + $CLAY_HOME/src + $CLAY_HOME/src/edu + $CLAY_HOME/src/edu/tcnj + $CLAY_HOME/src/edu/tcnj/cs + $CLAY_HOME/src/edu/tcnj/cs/clay - $CLAY_HOME/src/edu/tcnj/cs/clay/core - $CLAY_HOME/src/edu/tcnj/cs/clay/data - $CLAY_HOME/src/edu/tcnj/cs/clay/protocol - $CLAY_HOME/src/edu/tcnj/cs/clay/server - $CLAY_HOME/src/edu/tcnj/cs/clay/util The following picture depicts the application architecture of Clay v1.3.x.
ProtocolThe design of the protocol is essential to this project. The protocol will be based on a number of one-way SOAP envelopes between the clients and the server (ProjectServlet).
While Requests and Responses between the client and server must be (eventually) wrapped in
The content of a |