Cal VA
About the Site  
God Bless America
About the Holman Family Site

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 register

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 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 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 with WebSitePulse. 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 from Tomcat.

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 for Struts called Tiles written by Cedric Dumoulin. Tiles is now part of the Struts project. Another Struts 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 program Analog. With Analog I can analyze the Tomcat and Apache log files. A site 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. Cactus builds on JUnit providing testing for Servlets. As an extension to Cactus is another open source project called StrutsTestCase. 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 called JDiff. 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 you.
Jeff Palmiero provided inspiration and encouragement that I could run my own server. He also helped in the understanding IP addressing and domain registration.
Virginia Ann Holman provides netops support for the site and puts up with my hobby.
What's New
11/27 India
09/27 Africa
06/27 Barcelona
06/16 Columbia River
12/01 India
09/10 Europe
11/17 India
09/19 Europe
03/27 Dubai
01/06 Sweet Pea

New Pics
Total Eclipse
Solar Flare
Last Darkness
Diamond Ring
Eclipse in the Cl...
Dark Sky
Clouds with littl...
Red Clouds
Almost Gone
The Sun
Sliver of Sun
Tiled Windows
Fantastical Build...
Over the Top
Old Factory
Saint Jordi

    Top Top    
java struts tomcat log4j DTDns MySQL Ant Apache