Skip to end of metadata
Go to start of metadata



The following requirements have to be met before JOC Cockpit can be installed and operated:

  • A Java Runtime Environment in version 1.8 or newer is required. For details see Which Java versions is JobScheduler available for?
  • Technically the JOC Cockpit can be operated in any Unix environments, however, the JS7 - Platforms limit support for JOC Cockpit operation to Linux.
  • JOC Cockpit requires access to a database to store inventory and status information, and workflow related logs - see JS7 - Database.
    • A schema has to be created in the database prior to installation.
    • A user account has to be created that is granted full privileges for the schema.
    • If you intend to use different accounts and privilege sets for setup and for operation of JOC Cockpit then consider switching Hibernate configuration files after setup (see below) to use an account with limited privileges to select, insert, update, delete and execute permissions for schema objects.
  • Installation of JOC Cockpit requires administrative privileges in the following situations:
    • for Unix systems:
      • Root permissions are required if JOC Cockpit is to be installed together with the Jetty servlet container.
      • To install JOC Cockpit without root permissions the setup script can be executed with the -u argument, otherwise the sudo prompt will ask for the root password.
    • for Windows systems:
      • The setup requires administrative privileges.


  • Download the JOC Cockpit installer archive for your target environment from the JS7 - Download page.
    • For Unix systems:
      • A .tar.gz archive including the installer is available that can be used to run the installer.
        • js7_joc_linux.<release>.tar.gz
    • For Windows systems:
      • A .zip archive including the installer is available that can be used to run the installer.
        • js7_joc_windows.<release>.zip
  • The .tar.gz/.zip archives can be used to install JOC Cockpit with the graphical installer or to carry out headless installation.

Installation in Headless Mode


The installer is available for Windows and Unix systems.

Installer Archive

  • Extract the JOC Cockpit archive to a suitable directory such as /home/<user-account> on Unix systems or C:\user\<user-accounton Windows systems.

The extracted installer directory layout looks like this:

  • hibernate-examples (directory for DBMS connection sample files, for details see JS7 - Database)
    • hibernate-integrated-security-mssql.cfg.xml
    • hibernate-maria-mysql.cfg.xml
    • hibernate-oracle12c.cfg.xml
    • hibernate-postgres.cfg.xml
  • install-joc.txt (installation notes)
  • joc.<release>.jar (installer library for a given release)
  • joc_install.xml (installer response file)
  • license.gpl (copy of  GPLv3 (General Public License) )
  • license.html, license.txt (copy of JS7 JobScheduler Commercial License Agreement)
  •|cmd (installer script)

Database Connection

The database connection has to be ready prior to installation:

  • Create a schema and user account in your preferred database. For supported DBMS versions see JS7 - Database.
  • Specify connection information for the JOC Cockpit setup:
    • you can specify general connection information during the installation procedure or
    • you can prepare a Hibernate configuration file to store connection information.
      • Pick up one of the Hibernate example files described in the JS7 - Database article and copy the file to the installer directory, e.g. with the name hibernate.cfg.xml.
      • Apply your changes to the file as explained from the JS7 - Database article.

Installer Response File

  • The JOC Cockpit makes use of the joc_install.xml file that includes installer options such as installation directory, ports etc.
  • Customers with a commercial license should choose the relevant license option and specify the location of the license key with the installer response file.
  • The joc_install.xml file is explained with the code listing below. The comments included are intended to be self-explanatory.
    Download: joc_install.xml

    Configuration of the joc_install.xml file
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    XML configuration file for JOC Cockpit setup
    The JS7 JOC Cockpit is available with a dual license model:
    - GNU GPL v3.0 License, see
    - JS7 Commercial License, see license.txt
    The setup asks you for the desired license model,
    see below <entry key="licenseOption" .../>
    If you run the installer and do not specify a commercial license key
    then at the same time you accept the terms of the
    license agreement under the GNU GPL v3.0 License.
    <AutomatedInstallation langpack="eng">
        <com.izforge.izpack.panels.UserInputPanel id="home">
        <com.izforge.izpack.panels.UserInputPanel id="licenses">
                <!-- Select the license model (GPL or Commercial) -->
                <entry key="licenseOption" value="GPL"/>
                <!-- If you select GPL as license model than the 'licenseFile' must be empty.
                     Otherwise please enter the path to the license file if available.
                     It is also possible to add the license file later. -->
                <entry key="licenseFile" value=""/>
        <com.izforge.izpack.panels.HTMLLicencePanel id="gpl_license"/>
        <com.izforge.izpack.panels.HTMLLicencePanel id="commercial_license"/>
        <com.izforge.izpack.panels.TargetPanel id="target">
                 The path must be absolute! 
                 For example:
                 /opt/ on Unix
                 C:\Program Files\\js7\joc on Windows -->
            <installpath>[:choose absolute installation path of JOC Cockpit:]</installpath>
        <com.izforge.izpack.panels.UserInputPanel id="jetty">
                <!-- JOC Cockpit requires a servlet container such as Jetty. 
                     If a servlet container is already installed then you can use it. 
                     Otherwise a Jetty will be installed if withJettyInstall=yes.
                     You need root permissions to install JOC Cockpit with Jetty. -->
                <entry key="withJettyInstall" value="yes"/>
                <entry key="jettyPort" value="4446"/>
                <!-- Specify the name of the Windows Service or Unix Daemon (default: joc).
                     Required only for multiple instances of JOC Cockpit on the same server. 
                     The name has to be unique per server. This entry is deactivated by a comment because it
                <entry key="jettyServiceName" value="joc"/>
                <!-- Required for Windows only -->
                <entry key="jettyStopPort" value="40446"/>
                <!-- Available for Unix only (root permissions required) -->
                <entry key="withJocInstallAsDaemon" value="yes"/>
                <!-- Enter a user account for running JOC Cockpit (default=current user).
                     For Unix only (root permissions required)!!! -->
                <entry key="runningUser" value=""/>
                <!-- Path to Jetty base directory 
                     For example:
                     /home/[user]/ on Unix
                     C:\ProgramData\\js7\joc on Windows -->
                <entry key="jettyBaseDir" value=""/>
                <!-- Choose 'yes' or 'no' whether the JOC Cockpit's Jetty should be (re)started after installation -->
                <entry key="launchJetty" value="yes"/>
                <!-- Java options for Jetty -->
                <!-- Initial memory pool (-Xms) in MB -->
                <entry key="jettyOptionXms" value="128"/>
                <!-- Maximum memory pool (-Xmx) in MB -->
                <entry key="jettyOptionXmx" value="512"/>
                <!-- Thread stack size (-Xss) in KB -->
                <entry key="jettyOptionXss" value="4000"/>
                <!-- Further Java options -->
                <entry key="jettyOptions" value=""/>
        <com.izforge.izpack.panels.UserInputPanel id="joc">
                <!-- JOC Cockpit can be installed in a cluster. Please type a unique title to identify the cluster node, 
                     e.g. 'Primary' or 'Secondary' (default = hostname). Max. length is 30 characters. -->
                <entry key="jocTitle" value=""/>
                <!-- Choose 'yes' if JOC Cockpit is operated as a standby instance in a cluster -->
                <entry key="isStandby" value="no"/>
                <!-- Security Level for the deployment signing mechanism: possible values are 'LOW', 'MEDIUM' and 'HIGH':
                        RSA/ECDSA certificates are stored for verification per user,
                        signing is performed externally outside of JOC Cockpit.
                        RSA/ECDSA private keys and certificates are stored for signing per user,
                        signing is performed automatically with the user's private key.
                        a single RSA/ECDSA private key and certificate are stored with the root account,
                        signing is performed automatically with the root account's private key for all users. -->
                <entry key="securityLevel" value="LOW"/>
        <com.izforge.izpack.panels.UserInputPanel id="database">
                <!-- Reporting Database Configuration -->
                <!-- Database connection settings can be specified with subsequent entries such as
                     databaseHost, databasePort, ... or by a Hibernate configuration file.
                     or you choose the embedded H2 database (for evaluation only) without further configuration.
                     Possible values are 'withoutHibernateFile', 'withHibernateFile' and 'h2'. -->
                <entry key="databaseConfigurationMethod" value="withoutHibernateFile"/>
                <!-- Choose the database management system. 
                     Supported values are 'mysql' for MySQL, 'oracle' for Oracle, 
                     'mssql' for Microsoft SQL Server, 'pgsql' for PostgreSQL.
                     Used only if databaseConfigurationMethod=withoutHibernateFile -->
                <entry key="databaseDbms" value="mysql"/>
                <!-- Path to a Hibernate configuration file if databaseConfigurationMethod=withHibernateFile -->
                <entry key="hibernateConfFile" value=""/>
                <!-- You can choose between 'byInstaller', 'byJoc' or 'off' to create the database objects.
                     Data of an already existing installation remain unchanged. 
                     This entry should be 'off' only when you are certain that all objects have already been created.
                     'byJoc' creates or updates database object the next time JOC Cockpit is started. 'byInstaller' is recommended.
                     If databaseConfigurationMethod=h2 then the objects will be created when JOC Cockpit starts and 
                     this value will be ignored -->
                <entry key="databaseCreateTables" value="byInstaller"/>
        <com.izforge.izpack.panels.UserInputPanel id="dbconnection">
                <!-- Database configuration if databaseConfigurationMethod=withoutHibernateFile -->
                <!-- Enter the hostname or ip address of the database host.
                     This entry can also be used to configure the URL(s) for Oracle RAC databases.
                     For example:
                     <entry key="databaseHost" value="(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=OFF)(FAILOVER=ON)
                     The "databaseSchema" and "databasePort" entries should be left empty. -->
                <entry key="databaseHost" value=""/>
                <!-- Enter the port number for the database instance. Default ports are for MySQL 3306, 
                     Oracle 1521, Microsoft SQL Server 1433, PostgreSQL 5432. -->
                <entry key="databasePort" value=""/>
                <!-- Enter the database schema -->
                <entry key="databaseSchema" value=""/>
                <!-- Enter the user account for database access -->
                <entry key="databaseUser" value=""/>
                <!-- Enter the password for database access -->
                <entry key="databasePassword" value=""/>
        <com.izforge.izpack.panels.UserInputPanel id="jdbc">
                <!-- Database configuration if databaseConfigurationMethod != h2 -->
                <!-- You can specify an external JDBC Driver, in this case set internalConnector=no
                     For license reasons MySQL and Microsoft SQL Server JDBC drivers are not included. 
                     Alternatively you can use the MariaDB JDBC Driver for MySQL that is included. 
                     For Microsoft SQL Server you have to specify an external JDBC Driver. 
                     An Oracle ojdbc8 JDBC driver is included. -->
                <!-- You can choose between 'yes' or 'no' for using the internal JDBC Driver -->
                <entry key="internalConnector" value="yes"/>
                <!-- Select the path to the JDBC Driver file (*.jar) -->
                <entry key="connector" value=""/>
        <com.izforge.izpack.panels.UserInputPanel id="end">
        <com.izforge.izpack.panels.InstallPanel id="install"/>
        <com.izforge.izpack.panels.ProcessPanel id="process"/>
        <com.izforge.izpack.panels.FinishPanel id="finish"/>

Running the Installer

Headless installation is performed by opening a terminal or command window and navigating to the folder containing the|cmd file.

  • Performing headless installation of JOC Cockpit on Unix systems with root permissions

    Starting headless installation of the JOC Cockpit on Unix systems with root permissions
    /home/<user-account>/joc.<release> ./ joc_install.xml
  • Performing headless installation of JOC Cockpit on Unix systems without root permissions

    Starting headless installation of the JOC Cockpit on Unix systems without root permissions
    /home/<user-account>/joc.<release> ./ -u joc_install.xml
  • Performing headless installation of JOC Cockpit on Windows systems

    Starting headless installation of the JOC Cockpit on Windows systems
    C:\users\<user-account>\joc.<release> setup.cmd joc_install.xml

Directory Layout

If the Jetty servlet container included with JOC Cockpit is installed then files will be added by default

  • for Unix to the
    • installation directory: /opt/
    • configuration directory: /var/
  • for Windows to the
    • installation directory:  Program Files\\js7\joc
    • configuration directory: ProgramData\\js7\joc

The following listing explains the directory layout after installation of JOC Cockpit:

  • /opt (Unix) Program Files (Windows)
      • js7
        • joc (installation directory)
          • jetty_base (symbolic link to configuration directory)
          • install (directory with Jetty installer scripts and *.sql files to populate the database)
            • install_jetty_base.cmd
            • update_jetty_base.cmd
          • jetty (directory for Jetty binary files and scripts)
          • jetty_base (symbolic link to configuration directory)
          • service (directory for operation as a Windows Service)
          • Uninstaller (Uninstaller directory, the empty directory remains in place after uninstall)
            • .jocinstallinformation (installation response file, remains in place after uninstall)
            • joc_install.xml (installer response file, remains in place after uninstall)
            • uninstaller.jar
  • /var (Unix)ProgramData (Windows)
      • js7
        • joc
          • jetty_base (configuration directory)
            • joc_home (symbolic link to installation directory)
            • start.ini (Jetty servlet container configuration file, remains in place after uninstall)
            • archive (directory for JOC Cockpit versions before applying patches, remains in place after uninstall)
            • lib (directory for Java libraries, remains in place after uninstall)
            • logs (directory for log files files, remains in place after uninstall)
            • patches (directory for patch files (*.zip), remains in place after uninstall)
            • resources (directory for configuration files, remains in place after uninstall)
              • joc (directory for configuration files, remains in place after uninstallinstall)
                • hibernate.cfg.xml (Hibernate configuration file for database access, remains in place after uninstall if modified)
                • (JOC Cockpit configuration file, remains in place after uninstall)
                • log4j2.xml (log configuration file, remains in place after uninstall if modified)
                • (Shiro configuration file reporting the currently active configuration, remains in place after uninstall)
                • shiro.ini-example (Shiro example configuration file)
                • lib (optional directory for JDBC Drivers and licensed binary code)
                • license (optional directory for license certificate files, remains in place after uninstall)
                • xsd (directory for XSD schema files, remains in place after uninstall)
            • temp (directory for temporary files, remains in place after uninstall)
            • webapps (directory for JOC Cockpit files that are extracted from the deployed joc.war file)

Directory Layout if the Jetty Servlet Container is not Installed

If the Jetty servlet container included with JOC Cockpit is not installed and no previous configuration files are found in the Program Files\\js7\joc directory then by default files will be added to the Program Files\\js7\joc directories only.

If configuration files are found in Program Files\\js7\joc directory then files will be added to the ProgramData\\js7joc and Program Files\\js7\joc directories as explained above.



  • Stop the JS7 JOC Cockpit instance.

Running the Update

  • The update of the JS7 JOC Cockpit is performed from the same download archive as used for a fresh installation.
  • Use the joc_install.xml file created during the installation. The default location of the joc_install.xml file from a previous installation is:
    • C:\Program Files\\js7\joc\ for Windows
    • /opt/ for Unix systems

  • Perform the same step to run the installer as explained above.

Installation Log Files

The JOC Cockpit configuration and installation log information is written to a new log file each time an installation or update is carried out. These log files can be found in the logs sub-directory of the jetty_base directory.

  • Installation log files use names according to the pattern Install_V<release>_<date-time>_....log where <release> is the release number and <date-time> refers to the point in time of installation.
  • For further information about logging see JS7 - Logging.

Installation using alternative Servlet Containers

The JOC Cockpit installation procedure includes the option of installing the Jetty servlet container provided in the JOC Cockpit installer archive. An alternative servlet container capable of handling Java web applications, such as Tomcat, can be used, however, support by SOS is limited to the JOC Cockpit application and does not include support for individually installed servlet containers.

If the Jetty servlet container included with JOC Cockpit is not to be installed, then the installer will check if a jetty_base symlink from a previous installation is found in the jetty_home directory. Particularly relevant for system administrators is the file (containing authentication and authorization settings) and the file (containing JOC Cockpit installation settings).

  • If configuration files are found then they will not be overwritten or removed.
  • Default configuration files will be written to the file system in the joc_home directory.
  • System administrators can move the configuration files to the appropriate directory of their servlet container as required.

Location of the resources/joc directory after a fresh installation

With a fresh installation the installer will not find an existing Jetty servlet container and will store the resources directory for the joc application by default in the following locations:

  • for Unix systems:
    • /opt/
  • for Windows systems:
    • C:\Program Files\\js7\joc\resources\joc

Location of the resources/joc directory after update

If JOC Cockpit is updated without the Jetty servlet container but on top of an existing installation that includes the Jetty servlet container then the resources\joc directory will not be moved from its location. Practically this means that the "new" resources directory after the update will be found with the following directories (assuming that default directories were specified during the original installation):

  • for Unix systems:
    • /opt/
  • for Windows systems:
    • C:\Program Files\\js7\joc\resources\joc

In this situation

  • the shiro.ini and files from an earlier installation will not be overwritten.
  • an existing hibernate.cfg.xml database configuration file will be considered during update and the settings will be suggested as default values. This file will be deleted and a new version of the file will be stored in the joc_home directory.
  • an update of JOC Cockpit will not overwrite any existing configuration files. However new versions of the and shiro.ini files with the names and shiro.ini-example will be stored in the resources\joc folder, alongside the original files.


The JOC Cockpit can be uninstalled using the uninstall.cmd and scripts available from the following locations:

  • For Unix systems:
    • /opt/
  • For Windows systems:
    • C:\Program Files\\js7\joc\Uninstaller

Unix Systems

The uninstall script on Unix systems runs in headless mode. The uninstall script will start the Uninstaller and remove both the installation directory, configuration directory and its sub-folders. 

Windows Systems

Starting the uninstaller will display the following window on Windows systems:

Selecting the "Force the deletion of C:\Program Files\ ...." checkbox will cause the uninstall script to remove both the program and configuration files and folders.

If the checkbox is not selected, configuration files will be left in both the JOC Cockpit installation folder and the Jetty servlet container installation folder (if installed with the JOC Cockpit).

Automated Startup and Shutdown

For Unix systems startup and shutdown configurations apply that are executed by the root account e.g. from /etc/init.d scripts and by use of systemd.

  • The JOC Cockpit will start for the user account that is specified during installation. The JOC Cockpit start script will switch to this account independently from the fact that the start script is executed e.g.  by the root account.
  • For use with systemd find a sample service file from ./bin/joc.service-example file.

For Windows systems operation of JOC Cockpit by a Windows Service is recommended as these services can be configured to start/stop automatically on server startup and shutdown.

  • Consider to assign a service account to the JOC Cockpit service with the Windows Service Panel.
  • Consider to allow the JOC Cockpit service to be automatically started on server startup.

Initial Operation

Having completed the installation or update of the JS7 JOC Cockpit you can start the JOC Cockpit either manually or from its Unix daemon/Windows Service, see JS7 - JOC Cockpit Command Line Operation.

A number of JOC Cockpit instances can be operated as a passive cluster with the first JOC Cockpit instance started acting as the primary cluster member and any additional JOC Cockpit instances acting as standby cluster members. The role of the primary cluster member is decided by the order by which JOC Cockpit instances are started.

  • Note that operating a JOC Cockpit cluster for high availability requires a commercial license, see JS7 - Licensing.
  • The installation of JOC Cockpit Cluster instances follows the standard operating procedures explained above. There is no difference in installation for the roles of primary cluster member and standby cluster members. 
  • Note the following information about initial cluster operation:

Further References

  • No labels
Write a comment…