Working with the Jakarta NT Service

By Gal Shachor <>

The Jakarta NT service is an executable that wraps the Tomcat servlet container and executes it in the background as an NT service. To install it you will need to:

  1. Get a hold on the NT executable (jk_nt_service.exe)
  2. Customize a properties file that provides the service with Tomcat information (
  3. Install jk_nt_service by running it with the -i flag.
  4. Start tomcat as a service.
  5. Note: If the log file location in your file points to the logs directory, and the logs directory doesn't yet exist, manually create it before starting the service.
  6. Stop Tomcat as a service.

Special note: The Tomcat service is using AJPV12 to perform clean shutdown and you should make sure that an AJPV12 connector is defined in your server.xml. In the absence of a configured AJPV12 port the Tomcat service will kill Tomcat abruptly (that is murder it) without giving it a chance to clean up.

Notice for JDK 1.3 users:  There is a known problem in JDK 1.3 that affects Java applications being run as Windows NT services.  The bug causes the service to terminate when the currently logged in user logs out.  The simplest way to work around this problem is to use JDK 1.2.  If your application requires JDK 1.3 features then you may want to look into javaserv or JavaService.  Users have reported success with both of these packages but there may be others that work as well.

To remove the installed service, execute jk_nt_service -R <name of service>

Advance Setup

  1. Modify the Tomcat NT service properties. By default the service will run in manual mode and under the local system user account. To modify this, open the NT services applet, highlight your service and press startup. A popup window is opened and you will be able to customize the service to your satisfaction.
  2. Modify the classpath. The classpath is determined by the wrapper.class_path properties, to modify it just add/remove/modify wrapper.class_path lines. The complete classpath is calculated by concatenating all the wrapper.class_path lines and putting ";" between them.
  3. Execute several Tomcat instances. Say that you want one Tomcat to run for "production" and one for development, you can do that. All you will need to do is to install the Tomcat service twice and under two different names (and with different file and server.xml files).
  4. Modify the command line used to start Tomcat. The Tomcat service is taking all it's command line configuration from! To customize the command line, edit the property wrapper.cmd_line and make sure that it makes a legal Java command line.


Please send feedback, bug report or any additional information to <>