# Tomcat 10.1.x on Windows

Apache Tomcat is an open-source implementation of the Java Servlet, JavaServer Pages (JSP), and WebSocket technologies. It is widely used to deploy Java-based web applications. This document provides a detailed, step-by-step process for installing and configuring both single-instance and multi-instance Tomcat setups on a Windows machine for OvalEdge deployment.

### Pre-requisites

Before proceeding with the installation, ensure the following requirements are met:

* Windows OS (Windows 10 or later recommended)
* Administrator privileges
* Java 17 installed and configured
* Ensure the JAVA\_HOME environment variable is set
* Refer to the [Java Installation Guide](https://docs.ovaledge.com/deployment-and-maintenance/installation/java-17.x-on-windows-machine) if Java is not configured

## Single Tomcat Installation

* **Prepare Directory Structure**

  Create a base folder, e.g., `C:\ovaledge`, to store all required files.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2Fc867N0Qa2W7X1MkAdN5p%2Fimage.png?alt=media&#x26;token=3e59e065-3461-4c0c-b33a-5846605a21af" alt=""><figcaption></figcaption></figure>
* Inside this folder, create subfolders:

  * `temp`
  * `extprop`
  * `Third_party_jars`

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FlnGXtapO4RN9ymKwIZhh%2Fimage.png?alt=media&#x26;token=cc1cb545-0012-45b4-b59e-cf26631ad088" alt=""><figcaption></figcaption></figure>
* **Place Required Files**
  * **Configuration Files**: Place `oasis.properties` and `log4j.properties` inside the `extprop` folder (provided by GCS team).

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FHViWJy4ZDyOFCLvKk4Jo%2Fimage.png?alt=media&#x26;token=9bed1edb-1254-4412-b93e-4f5f8f1c301f" alt=""><figcaption></figcaption></figure>
  * **JAR Files**: Place required third-party JARs in the `Third_party_jars` folder.

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2Fc7J4rOJDJrwEnSSHR5Kr%2Fimage.png?alt=media&#x26;token=28efcdc2-1634-438b-9666-dadf0437787e" alt=""><figcaption></figcaption></figure>
* **Download and Extract Tomcat**
  * Download [Apache Tomcat ](https://ovaledge.s3.us-west-1.amazonaws.com/scripts/hardened_tomcat/apache-tomcat-10.1.40-windows-x64.zip)(ZIP package).
  * Extract contents under `C:\ovaledge`.

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F26NAR6xzG2buAl2FjMug%2Fimage.png?alt=media&#x26;token=3784bac8-9fee-4691-80b7-8c2cfadca446" alt=""><figcaption></figcaption></figure>
* **Deploy WAR File**
  * Navigate to the `webapps` folder inside the Tomcat directory.
  * Place the `ovaledge.war` file (provided by GCS team).

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FKIAwAtXGzVpxZlH9Jbfd%2Fimage.png?alt=media&#x26;token=1dd0ed2a-770b-4216-a5b5-729fe8d3b27a" alt=""><figcaption></figcaption></figure>
* **Install Tomcat as a Windows Service**
  * Navigate to the `bin` folder inside Tomcat and open Command Prompt.

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FTUOUQcYVgovO7QjuTWuH%2Fimage.png?alt=media&#x26;token=a0d56850-c296-433a-b570-c60b02cadcea" alt=""><figcaption></figcaption></figure>
  * Run the command:

    ```bash
    service.bat install tomcat
    ```

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FoCFT0iIZ5oUv2zUixFvz%2Fimage.png?alt=media&#x26;token=18d1f807-ddea-4626-b2ff-ffa4031ebb17" alt=""><figcaption></figcaption></figure>
* **Configure Java Options for Tomcat**
  * Open Tomcat service properties:

    ```bash
    tomcat10w.exe //ES//tomcat
    ```

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FJ3gQvWVMldldguk1qFjs%2Fimage.png?alt=media&#x26;token=5722c2e9-3f18-4334-9c71-7cad526ea25f" alt=""><figcaption></figcaption></figure>
  * Go to the **Java** tab and add:

    ```
    -DOVALEDGE_SECURITY_TYPE=db
    -Dext.properties.dir=file:C:\ovaledge\extprop\
    -Dlog4j.configuration=file:C:\ovaledge\extprop\log4j.properties
    -DOVALEDGE_ENCRYPT_DECRYPT_KEY=client_input
    --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED
    --add-opens=jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED
    --add-opens=java.base/java.net=ALL-UNNAMED
    ```
  * Confirm with GCS/DevOps team:
    * `ext.properties.dir` path
    * `log4j.configuration` path
    * Encryption key value
    * Java heap settings (per VM specification)\
      ![](https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FHcsLIvOUVpXUA5mcmDxU%2Fimage.png?alt=media\&token=be0818a6-665a-4149-b5d7-ce3f26128078)
* **Update `oasis.properties`**
  * Configure:
    * Database connection details
    * Elasticsearch configuration (if applicable)
    * Path to third-party JAR files

      <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FvFzfzGq7r48GSOPDR9EI%2Fimage.png?alt=media&#x26;token=6088350b-d4cf-47e9-abeb-2f46a9e81a6a" alt=""><figcaption></figcaption></figure>

      <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FJikcIN9270dDv3v71476%2Fimage.png?alt=media&#x26;token=371991ab-8ae3-4dbb-9ba9-ed35a4ce61d7" alt=""><figcaption></figcaption></figure>

      \
      ![](https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FdiLG1CdgW6FVYfnrT6pv%2Fimage.png?alt=media\&token=4a8b534b-d8a9-434d-a8f1-e067ad8a884f)
* **Start Tomcat Service**
  * Open **Services** from Windows Start menu.
  * Locate and start the Tomcat service.

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FtK08Y4t64jou6PtE5QYc%2Fimage.png?alt=media&#x26;token=2f212f35-64b4-43bd-9834-a8f67b1fdf5f" alt=""><figcaption></figcaption></figure>

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FTFjtNq62h2C8TokFdMff%2Fimage.png?alt=media&#x26;token=d07c9b9e-3f46-4985-ac88-2fb239e7412f" alt=""><figcaption></figcaption></figure>
  * In Properties:
    * Set **Startup type** → *Automatic (Delayed Start)*\
      ![](https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FGWE7J3FuFkQjaQzbQjpb%2Fimage.png?alt=media\&token=3ed4ed53-a217-451a-91f1-bb9751db43f5)
    * Update **Log On** credentials as required and click **OK**.\
      ![](https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FLKIvfAiFnvjZm3whT6Ye%2Fimage.png?alt=media\&token=7e788e95-48b4-46c7-b815-c571d52a6740)

## Multi-Tomcat Installation (UI + Job)

For multi-instance setups, two Tomcats are configured:

* Two Tomcats are configured:
  * `tomcatui` → User Interface (UI)
  * `tomcatjob` → Job Processing
* **Repeat Initial Setup**
  * Follow **Single Tomcat Installation steps** until WAR deployment.
* **Duplicate Tomcat Directory**
  * Create two copies of the Tomcat directory.
  * Rename:

    * One to `tomcatui`
    * One to `tomcatjob`

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FIFKDKXVbqhgmzmYgmJsz%2Fimage.png?alt=media&#x26;token=f1d36ed1-9bf8-48df-bb04-99d154adc7ed" alt=""><figcaption></figcaption></figure>
* **Update Ports for `tomcatjob`**
  * Navigate to `tomcatjob\conf\server.xml`.
  * Modify:
    * Shutdown port → `8005` → `8006`

      <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FvImbmsCAanKc6zrlPBFP%2Fimage.png?alt=media&#x26;token=ae0b4ce3-6164-42f0-a42b-56bf5471f1c8" alt=""><figcaption></figcaption></figure>

      <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FN2U8pbOvWmlR9pmHGX8K%2Fimage.png?alt=media&#x26;token=994b8e32-aab6-45fd-a3a8-d235e88af290" alt=""><figcaption></figcaption></figure>

      <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FVH7ac0lv8nskrB72qNQr%2Fimage.png?alt=media&#x26;token=eeca966b-a98f-49c2-8f91-ca4df38e5c8a" alt=""><figcaption></figcaption></figure>
    * HTTP port → `8080` → `8081`&#x20;

      <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2Fwv1SDlkC87ciSF0IoxTj%2Fimage.png?alt=media&#x26;token=2d624a95-0593-48cc-be1a-1087f44d129c" alt=""><figcaption></figcaption></figure>

      <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F7HOdx5J0Nb9BSj6JKYeT%2Fimage.png?alt=media&#x26;token=949ca0f7-614b-485e-82bd-9a37e987f770" alt=""><figcaption></figcaption></figure>
* **Install and Configure `tomcatui` Service**
  * Navigate to `tomcatui\bin` and open Command Prompt:

    ```bash
    service.bat install tomcatui
    ```

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F74nSgA2nU4V6uo4yJI7P%2Fimage.png?alt=media&#x26;token=b71dc44d-50e7-481b-bd7d-7f7fa8dcdb13" alt=""><figcaption></figcaption></figure>

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FbsvYlA4XhWDCyls0IInt%2Fimage.png?alt=media&#x26;token=6dd9b1a6-699a-482b-ac5a-9833c06c8240" alt=""><figcaption></figcaption></figure>

    ```bash
    tomcat10w.exe //ES//tomcatui
    ```

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FQGJXMKah0bElaVm0flEp%2Fimage.png?alt=media&#x26;token=a1115ab3-b40e-434f-b302-535ff7a8705b" alt=""><figcaption></figcaption></figure>
  * In the Java tab, add:\
    ![](https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FQ9VhyW5optSy2MltPrmm%2Fimage.png?alt=media\&token=bda5331f-c3cb-4b57-a03a-b7239b4ba2e7)

    ```
    -DOVALEDGE_SECURITY_TYPE=db
    -Dpod.type=ovaledge-ui-deployment
    -Dext.properties.dir=file:C:\ovaledge\extprop\
    -Dlog4j.configuration=file:C:\ovaledge\extprop\log4j.properties
    -DOVALEDGE_ENCRYPT_DECRYPT_KEY=client_input
    --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED
    --add-opens=jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED
    --add-opens=java.base/java.net=ALL-UNNAMED
    ```
* **Install and Configure `tomcatjob` Service**
  * Navigate to `tomcatjob\bin` and open Command Prompt:

    ```bash
    service.bat install tomcatjob
    ```

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FgDHKJXSBIuVFqZ2vteO5%2Fimage.png?alt=media&#x26;token=b203427c-6565-4ed5-baae-4976dfa1729a" alt=""><figcaption></figcaption></figure>

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2Fn68LQIAwQ86CW4zEgBMJ%2Fimage.png?alt=media&#x26;token=cf0fcac2-e87e-41e5-8842-8c81d36dcb54" alt=""><figcaption></figcaption></figure>

    ```
    tomcat10w.exe //ES//tomcatjob
    ```

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FWmYAvBHjU2rg62H7PIvi%2Fimage.png?alt=media&#x26;token=0d63a455-3e16-4034-84a6-d70e7c37f3bd" alt=""><figcaption></figcaption></figure>
  * In the Java tab, add:

    ```
    -DOVALEDGE_SECURITY_TYPE=db
    -Dpod.type=ovaledge-job-deployment
    -Dext.properties.dir=file:C:\ovaledge\extprop\
    -Dlog4j.configuration=file:C:\ovaledge\extprop\log4j.properties
    -DOVALEDGE_ENCRYPT_DECRYPT_KEY=client_input
    --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED
    --add-opens=jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED
    --add-opens=java.base/java.net=ALL-UNNAMED
    ```
* **Final Configuration and Startup**
  * Ensure `oasis.properties` is properly updated.
  * Start `tomcatui` and `tomcatjob` services from Services panel.

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FfaaYrUEFwPmk0SPFL2jo%2Fimage.png?alt=media&#x26;token=d953cdbd-87b7-4589-a764-a983c0e966ec" alt=""><figcaption></figcaption></figure>
  * Set **Startup type** to *Automatic (Delayed Start)* for both.

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FdsfEszHDySZpRrl4TUCt%2Fimage.png?alt=media&#x26;token=064436a4-0420-4381-9567-9c7dad3cc7ba" alt=""><figcaption></figcaption></figure>

    \
    ![](https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FL9x7DdBd0Z28VRO6YglF%2Fimage.png?alt=media\&token=7af41692-ac69-4d1a-b95d-3ccadc2bc359)
  * Update **Log On** settings with proper credentials and restart services.\
    ![](https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FO9mlkgKjosGvnLd7Ewps%2Fimage.png?alt=media\&token=c6e403f9-983d-4eb5-b87b-7872f73d2b7a)

***

Copyright © 2025, OvalEdge LLC, Peachtree Corners, GA, USA.
