This site was originally deployed on the servers hosted by West Point.
This is a link to the original site
as it is on the West Point Alumni site. The service performed by West Point is
great and is a solid site that provided years of reliable hosting for our site. However I became frustrated that I could not do
database applications or use Java to make the site more interactive. The West Point service only allows HTML and some CGI.
So in 2001 I launched on a quest to build a site on my own server. This site is the result.
First I needed a server so I purchased a computer loaded with Windows 2000.
The choice of operating system was made based on the operating system I was used to at work.
The site still runs on Windows 2000 - need to get a new computer.
Next I needed a domain name for that I am using Network Solutions to
Originally I did not have a dedicated IP address for the site and had to use DtDNS. Below are the orginial
instructions on using a dynamic IP address:
Now I needed a way to maintain the DNS service so that calandva.com would always point to my
computer. Normally that is not a problem but I am using a cable service for Internet
access so my IP address could change at any time.
I turned to DtDNS this service allows Verisign
to think that calandva.com is pointed to their IPs and
then DtDNS allows me to enter the
IP of my server. If the site is down (I have made a few errors) I can
set DtDNS to
display a 'page down' page. To update DtDNS when
the cable/phone company resets my IP I needed a program to recognize the change and
send an update to DtDNS -
Direct Update does exactly that.
For a small fee Direct Update checks the
IP continuously and if the IP changes it automatically
updates DtDNS and then emails me
that there was a change. It is a great program.
Speaking of downtime -- to monitor the site I signed up
This service has several levels but at the most basic (and free) service, I receive
an email whenever the site is down and then again when the site is back up.
The polling happens every hour and on their site you can see statistics on your site's availability.
And it is free!! They have more robust services for a small fee.
Now we were on the web - so I need to develop a site. I took the original HTML frame based site and
wanted to rewrite it based on Java/JSP and non-Frame. The result is a site built on a number of
technologies most of which are open source from
the Jakarta project.
I chose Tomcat as the
application server initially running it in standalone mode - without a web server. Since then I am
hosting several web sites - so I needed a web server,
turning to Jakarta again, I selected
the Apache Web Server.
The hard part was hooking them together. I ended up using
the Tomcat jk2
connector reading all content out of the webapp directory
For the application infrastructure I based the selection on technologies I was trying on the job.
My development manager at the time, Steve Melzer, was a proponent of Struts and since I was looking for a JSP based application it fit my needs - plus I learned about the technology we were using on our production sites.
Struts is a
framework for JSP applications that greatly accelerates development because it provides a Model
View Controller framework you just plug into your classes and JSPs. All the hard work in creating
infrastructure is already done by
the Struts community.
Several additional open source projects are used to improve the site. Key to quickly
changing the site is a companion product
called Tiles written by Cedric
Dumoulin. Tiles is now part of the Struts project.
add-on is the Validator
library that adds field level validation to the forms on the site by David Winterfeldt. This
library is now part of the Jakarta Commons project.
To provide logging I use Log4J.
Log4J is writing out debug
info if the site has problems and info messages allowing me to keep up with what you are doing.
In building the site a tool called Ant is
used for source management, documentation creation, compiling and deploying the site.
For a database I turned to another open source product -
MySQL. It has been great -
the feature I enjoy the most is the ease of copying databases from my development
workstation to the 'production' server. For database connection pooling I use
Tomcat. It was surprisingly
easy to set up with good documentation on
the Tomcat site.
For log file analysis I am using another free
With Analog I can
analyze the Tomcat and
Apache log files.
analysis is run each day.
For testing I use more open source projects:
Cactus and JUnit.
JUnit is great for unit testing Java classes -
on this site there are not many java beans but they are automatically tested when the site is deployed.
Deployment halts if there is an error.
on JUnit providing testing for Servlets.
As an extension to Cactus is another open source project
This is a testing package that allows for struts specific testing.
So you would think that was enough on the testing front - not quite as I got into application
testing I needed a way to test the database and reload the database for that another open source
product - dbUnit. This project allows
loading a database from an XML file - real cool. To ensure the code is tested I actually purchased
a product called Clover This product
watches the code as you test recording each source line when they execute. Once your tests are
finished Clover shows the
test coverage by class.
Some of the output is available on the Documentation link of the site.
For website link testing I am using a commercial product
called LinkScan. This is a great tool
for checking out your links and even scanning a page for HTML errors.
To check changes from one version to the next I use an open source product
This tool compares the javadoc (java documentation) from one version to the next. Easily
allowing you to see the various changes to the java code running the site.
For mail services I set up a James server.
Another Apache project James allows me to send emails
from my servers and not depend on my ISP. Of course that is also how spammers work so Bell South -
my current ISP - blocks the ports used for mail. So you need to use other ports - but that means
the normal ports are not used so someone needs to route all normal email to and have them bounce the
mail to abnormal ports. I am using DSNExit. They
have a great set of documentation on what you need to do to route around the ISP. They also support
dynamic IP addresses like DtDNS and
Direct Update can update both sites for