OpenVMS Notes: Apache Tomcat
Apache Tomcat, Java, etc.
Apache Tomcat is a standalone Jakarta product used to serve up Java generated
content on port 8080 (by default). It is also able to serve-up HTML so it is also
correct to think of Tomcat as a webserver written in Java.
Simplified Component Overview:
- Apache HTTPd is an HTML web server that usually listens on port
80 (raw) or port 443 (SSL encrypted)
- Apache Tomcat is a standalone Jakarta product used to serve up Java
generated content on port 8080 (by default). It is also able to serve-up HTML
so it is also correct to think of Tomcat as a webserver written in Java.
- Connectors are used to provide an internal communications channel between
Apache HTTPd and Apache Tomcat. These connectors
allow Apache HTTPd to divert what contains (based upon file
extension) server-side Java via port 80 (or 443) over to Apache Tomcat.
Don't waste time fooling around with connectors until you get the Tomcat server
working properly on port 8080. In fact, don't waste your time on this until
you are preparing to move something into production.
Product Name Confusion (re: OpenVMS)
Tool (an Apache script interpreter)
daemon is a standalone product which operates
on TCP/IP ports 80 (http) and 443 (https) by default. When OpenVMS was
owned by Compaq, this product was called CSWS (Compaq
Secure Web Sever) pronounced "C-Swiss". Since HP bought (err,
merged with) Compaq, I have heard HP engineers refer to this product
as "Swiss" but the downloadable modules still have a "CSWS"
||HPE's name for Apache Tomcat (requires Java
which is not included)
||HPE's name for a module which enables Apache HTTPd to access Perl
||HPE's name of a module which provides Apache HTTPd with a PHP Interpreter
||A standalone Java-based web server product which operates on TCP/IP
port 8080 by default
(configure the connector kit to facilitate back
channels between HTTPd and Tomcat)
Confusingly, the Compaq/HP
Tomcat product for OpenVMS is named CSWS_JAVA
||Apache's umbrella name for Java projects
||Name of Tomcat's Servlet Container Technology
||Tomcat's Java-based HTTPd server
||Tomcat's JSP technology
||GNU Not VMS
(Unix command interpreter for OpenVMS which includes BASH)
||Standalone product required by Tomcat. You want the development
kit (because of the JIT compiler), not the run-time)
JAVA 5 comes up as version 1.5
|1.5 and higher
||1.4 and lower
||java development kit
||standard development kit
||java runtime edition
||run time edition
JAVA 6 comes up as version 1.6
JAVA 8 comes up as version 1.8
||Open Secure Sockets Layer "standalone product" (not used by Apache HTTPd
which has its own built-in OpenSSL routines)
So why would you ever use it? Answer: to support encryption
in client apps or standalone server apps
Required by OpenVMS 8.x
(used to validate HP patch kits)
||Standalone product (required by CSWS_PERL)
|SOAP Toolkit 1.1
||SOAP 1.0 - based upon Apache SOAP 2.31 - Apache's proof of concept
SOAP offering (now obsolete)
|SOAP Toolkit 2.0
||SOAP 1.1 - based upon Apache AXIS/Java - Apache's
first production SOAP engine (now obsolete)
||SOAP 1.2 - based upon Apache AXIS2/Java - Apache's
second production SOAP engine (served up by Tomcat)
||Web Services Integration
Toolkit (technology for accessing high level language
routines from Java-based web services)
Discovery and Integration is another Web Services
(this technology has not lived up to original expectations)
||generated SOAP. Third-party SOAP
engine supporting SOAP code based upon C/C++
(this looks like a very
promising alternative to
AXIS2/c which is
not available on OpenVMS unless you are willing to do your own build
from Apache sources)
is an interpreted "object aware" (although some say "object
oriented") scripting language co-invented by Netscape
and Sun Microsystems. The code (almost always) runs in a your browser and is visible when you
select "view source" under your browser's FILE menu.
- Java is a compiled "object oriented" language
invented my Sun Microsystems. The Java compiler produces bytecode (not machine
code) which can run on any computer provided a Java Virtual Machine (JVM) is
installed on that target machine.
- Java Applets are written in Java then compiled. The resulting
bytecode .CLASS file is run in your browser via calls to your JVM.
- Java Servlets are written
in Java then compiled. The resulting bytecode .CLASS file is run for you
by the web server (using the server's JVM) and the results are displayed
in your browser.
- Java Scriptlets
are written in a combination of Java and HTML then saved as .JSP files on
your web server. When first run, they are converted to .JAVA (Java source
code) then a just-in-time (JIT) Java compiler is invoked to generate a .CLASS
file which is then run for you on the server's JVM. This "first time"
conversion process is not repeated unless the server notices that the date
stamp of the requested .JSP file is later than the date stamp of the associated
have very little in common.
Installing Java and Apache Tomcat on OpenVMS
Alpha (circa 2010)
Small Machine Caveat
Interpreted and semi-interpreted technologies like Java and SQL can take their
toll on a server's computing power so don't expect much when running Tomcat on RISC
(Alpha) machines manufactured in the middle 1990s. CISC (VAX) machines aren't even
||1GB or higher
I initially experimented with Tomcat on a discarded AlphaServer-2100
only to discover that the Tomcat server can take between 1-2 minutes to initialize
link will help reduce this). Also, invoking a previously uncompiled "Java
Scriptlet" might take up to 30 seconds before output is returned to the browser
(but what would you expect from a computer built in 1994 with a 275 MHz clock, 128-MB
of memory and no L2 cache?). This
link suggests we shouldn't even attempt to install Tomcat on a machine this
small. This same operations ran much faster on an AlphaServer-DS20e with two CPUs
and 1 GB of RAM.
- You must install
Java for OpenVMS
before attempting to use Tomcat. Don't waste your time installing the run time
edition (RTE or JRE). Instead you should install the full
software development kit (SDK or JDK). Why? Many of the Tomcat files
are supplied in .JSP form and so need to be compiled before use. Tomcat will
do this for you on an as-needed basis provided a JAVA compiler is available
- Java versions 131 to 141 should be installed into SYS$COMMON because
certain scripts (like the Tomcat configuration script "SYS$STARTUP:APACHE$JAKARTA_CONFIG.COM")
use that directory to test for the presence of JAVA on your system.
- Java versions 142 to 160 can be installed anywhere with the latest version
of Apache Tomcat (5.5.26 which comes with CSWS_JAVA 3.1)
- You may find this document:
JAVA FAQ on Alpha
useful for clearing up some points for using JAVA with Alpha or Itanium.
Also be sure to read this document:
Optimizing Java™ Technology Software Performance on HP OpenVMS
- Next you must install
CSWS_JAVA which contains the Tomcat server as well as the connector kit
(mod_jk, mod_dk2, mod_webapp)
- Be sure to run script SYS$STARTUP:APACHE$JAKARTA_CONFIG.COM
to set the Apache user name (mine is set to "APACHE$WWW").
- If you are using a VT compliant terminal emulator then make sure
the half-dozen lines above your menu do not contain any error messages
like "Can't Find Java". If you
see this then you may need to tweak the script so it will be able to
locate your version of Java. Why?
- Sometimes this script is capable of supporting older versions
of Java except for the fact that the old code is disabled
- Sometimes a new Java kit is released before the Tomcat
scripts are updated (this happen to me with while using
CSWS_JAVA 3.0 with Java 142).
- Once set up, test the Tomcat server by pointing a browser to port 8080 like
- Run script SYS$STARTUP:APACHE$JAKARTA_CONFIG.COM again
and add connector support to Apache. I used "mod_jk2" due to some
suggestions from the net.
- connector "mod_jk" utilizes control file "workers.properties"
- connector "mod_jk2" utilizes control file "workers2.propoerties"
- connector "mod_webapp" utilizes control file "mod_webapp.conf"
Note that "APACHE$JAKARTA_CONFIG.COM" places a copy of the desired
control file in [.conf] for easy access
- Modify the appropriate worker's file to modify Apache's mapping.
- Restart Apache HTTPd so the appropriate module (e.g.. mod_?) is loaded along
with its connector control file.
- Create a Java Scriptlet (in one of the mapped directories) with the name
HelloWorld.jsp. The file should contain the following:
- Now request that file on port 80 like so:
- If everything works properly, Apache will send the request to Tomcat
via the connector.
- Tomcat will look to see if it has an up-to-date compiled version of
- If it doesn't, it will invoke a translator to produce "HelloWorld.java"
which will then be compiled to HelloWorld.class
- Tomcat with run HelloWorld.class through the JVM (Java
Virtual Machine) and the results sent back to Apache via the connector.
Installing Java and Apache Tomcat on OpenVMS
Itanium (circa 2018)
This might never be used in production but we need to develop some
client-side tools for accessing a remote service which is not yet available.
This will be our mock destination until we are ready for end-to-end testing with
the remote system.
- HPE recommends that everyone move to JAVA 8 (comes up as Java 1.8)
- However, I can't find an OpenVMS version of Tomcat (CSWS_JAVA) which
supports anything higher than JAVA 6 (comes up as Java 1.6)
- This page will show you were to download CSWS_JAVA Version 7.0-29 which
is based on Tomcat 7.0.29
but be sure to check the release note which mention OpenVMS-8.4 "patch
kit 1200" which is fairly recent. If you do not have a support agreement
then you may be forced to chose CSMS_JAVA Version 3.2
which is based on Tomcat 5.5.34
- caveat: as of 2018-01-xx there are still numerous
broken links found in the OpenVMS area of the HPE site. If you can't find
something via a google search or otherwise, then drop this URL into your
browser then be prepared to poke around:
Lots of Tomcat stuff can be found in the Apache folder.
Itanium install: 2018-01-05
- installed JAVA 6 (a.k.a. Java-1.6) and installed JAVA 8 (a.k.a.
Java-1.8) on the system disk
- yes, they can both coexist on the same platform
- Tomcat 7.0.29 expects to find JAVA 6
- before proceeding, ensure you can run this
hello world java program
- installed CSWS_JAVA Version 7.0-29 (which is based on Tomcat 7.0.29)
on my user disk where apache lives
- invoked script SYS$STARTUP:APACHE$JAKARTA_CONFIG.COM
- invoked script SYS$STARTUP:APACHE$JAKARTA_STARTUP.COM
then SYS$STARTUP:APACHE$JAKARTA_SHUTDOWN.COM but noticed a
few things were not working properly (saw some errors -AND- the TOMCAT
server was still running so I had to manually stop it). which caused
be to inspect the owner of all files in the Jakarta location. They were all
wrong so I changed ownership like so:
- set def apache$common:[jakarta]
- set file jakarta.dir /own=apache$www
- set file [.jakarta...]*.* /own=apache$www
- at this time it is probably wise to edit the file config/tomcat-users.xml then
add the following roles, usernames, and passwords
passwords will not be used in production)
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<!-- access buttons: "SERVER STATUS" and "MANAGER APP" -->
<user username="manager" password="manager" roles="manager-gui,manager-script"/>
<!-- access buttons: "HOST MANAGER" -->
<user username="admin" password="admin" roles="admin-gui,admin-script"/>
- I restarted Tomcat then accessed it from my browser via
clicked the server status button and was able to log in (Yay!)
- Now move back then click the other two buttons.
- Now it is time to install AXIS2
- my OpenVMS Notes
- Apache AXIS2
- includes: ANT, SOAP, AXIS, AXIS2, gSOAP
- GNV (Gnu Not VMS)
- includes some hacking with script "WSDL2Java.sh"
(yep, this UNIX script can work on OpenVMS systems)
Back to Home
Waterloo, Ontario, Canada.