Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Anchor
    jetty-base
    jetty-base
    Step 4 - Jetty Installation & Configuration

    • The JOC Cockpit requires a Java-capable web server and comes with a Jetty server. Step 4 allows system administrators to specify whether this web server is to be installed and if so, to specify its configuration - i.e. the port(s) it uses, installation path, memory pool, etc..
    • The Install JOC ... including the Jetty checkbox specifies whether the Jetty web server should be installed.
    • Default Paths
    • While the Jetty web server delivered with the JOC Cockpit is installed in the joc_installation_directory, which was configured in the previous step - the Jetty configuration files are installed in the jetty_base directory. The Jetty Base field in the form shown in the screenshot can be used to set the jetty_base directory. 
      • The default path to the jetty_base directory on Linux systems leads to the user's home directory:
      • Log files are saved by default in:
      • The default path to the jetty_base directory and log files on Windows systems is: 
    • Note that if If the Jetty delivered with the JOC Cockpit is not to be installed and either an alternative Jetty installation or another web server is to be used, then relevant configuration files for such a server such as the shiro.ini and joc.properties files will still be written to the file system. These files can then be moved by the system administrator to a suitable location for their web server as required. See the Configuration with Alternative Web Servers section below for more information.
  • Step 5 - JOC Configuration

    • The JS7 JOC Cockpit can be installed in a cluster. So if the JOC Cockpit is installed as a cluster it is required to provide a title to the JOC. By default the title is joc, this can be modified as per the user.


    • The security level for the signing mechanism can be added at the time of JOC Cockpit installation for a security level used for the signing of deployment objects such as workflows. See the Secure Configuration Article for more information. The JS7 JOC Cockpit provides three types of signing mechanisms:
      • Low: This mechanism is easy to use as it does not require any user interaction for the signing operation to be performed. 
      • Medium: This mechanism is similar to the low signing mechanism except for the fact that the private key stored with the current user's profile is used for the signing of configuration objects.
      • High: This mechanism has the highest security level and this requires any configuration objects to be exported and to be signed individually outside of JOC Cockpit.

  • Step 6 - Database Management System

    • Choose the DBMS to be used by the JOC Cockpit for the database system.

    • The database connection settings can be either species directly or can be provided by hibernate configuration file. If the settings are specified directly then it is required to choose the database system otherwise the hibernate configuration file path can be specified after checking the option with hibernate configuration file.

    • The database system is specified in the upper selection on this form. It is recommended that the box in the centre of the form remains checked so that the script which creates and fills the necessary database tables can be executed. 

  • Step 7 - Database connection Configuration

    • Specify the parameters for the connection to the Database

    • It will be probably be obvious from the names given to the parameters in the screenshot above that the values are for a database to be used by the JS7 JOC Cockpit.

    • The database configuration for the JOC Cockpit is written to an XML file during installation and saved in the jetty_base/resources/joc folder. The default name of the database configuration file is:

      • hibernate.cfg.xml

      This file can be modified at a later date if required using a text editor. The JS7 JOC Cockpit service will then have to be restarted before changes made to this file are implemented.

    • The name and location of the database configuration file itself is specified in the joc.properties file, which can also be found in the jetty_base/resources/joc folder.

...

The joc_install.xml file has to be configured with parameters such as the installation path, database connections, etc. before installation can start.

  • The joc_install.xml the file is shown in the code listing below. The extensive comments are intended to be self-explanatory. 

    Code Block
    languagexml
    titleConfiguration of the joc_install.xml file
    linenumberstrue
    collapsetrue
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!-- 
    XML configuration file for JOC
    
    If you call the installer with this XML file then 
    you accept at the same time the terms of the 
    licence agreement under GNU GPL 2.0 License 
    (see http://www.gnu.org/licenses/gpl-2.0.html)
    -->
    <AutomatedInstallation langpack="eng">
        <com.izforge.izpack.panels.UserInputPanel id="home">
            <userInput/>
        </com.izforge.izpack.panels.UserInputPanel>
        <com.izforge.izpack.panels.HTMLLicencePanel id="gpl_licence"/>
        <com.izforge.izpack.panels.TargetPanel id="target">
            
            <!-- SELECT THE INSTALLATION PATH
                 It must be absolute! 
                 For example:
                 /opt/sos-berlin.com/js7/joc on Linux
                 C:\Program Files\sos-berlin.com\js7\joc on Windows -->
            <installpath>[:choose absolute installation path of JOC:]</installpath>
            
        </com.izforge.izpack.panels.TargetPanel>
        <com.izforge.izpack.panels.UserInputPanel id="jetty">
            <userInput>
                
                <!-- JOC requires a servlet container such as Jetty. 
                     If a servlet container already installed then you can use it. 
                     Otherwise a Jetty will be installed in addition if withJettyInstall=yes.
                     You need root permissions to install JOC with Jetty. -->
                <entry key="withJettyInstall" value="yes"/>
                <entry key="jettyPort" value="4446"/>
                <!-- Specify the name of the Windows service or Linux Daemon (default: joc).
                     Only necessary for multiple instances of JOC on one server. It must be 
                     unique per server. This entry is deactivated by a comment because it
                     MUST NOT BE CHANGED DURING OVER-INSTALLATION! -->
                <!--
                <entry key="jettyServiceName" value="joc"/>
                -->
                <!-- Only necessary for Windows -->
                <entry key="jettyStopPort" value="40446"/>
                <!-- Only necessary for Unix (root permissions required) -->
                <entry key="withJocInstallAsDaemon" value="yes"/>
                <!-- To enter a JOC User (default=current User). 
                     For Unix only (root permissions required)!!! -->
                <entry key="runningUser" value=""/>
                <!-- Path to Jetty base directory 
                     For example:
                     /home/[user]/sos-berlin.com/js7/joc on Linux
                     C:\ProgramData\sos-berlin.com\js7\joc on Windows -->
                <entry key="jettyBaseDir" value=""/>
                <!-- Choose (yes or no) wether the JOC's Jetty should be (re)started at the end of the 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=""/>
                
            </userInput>
        </com.izforge.izpack.panels.UserInputPanel>
        <com.izforge.izpack.panels.UserInputPanel id="joc">
            <userInput>
                
                <!-- JOC 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 is a standby node in a cluster -->
                <entry key="isStandby" value="no"/>
                
                <!-- Security Level for the signing mechanism: possibly values are 'LOW', 'MEDIUM' and 'HIGH'
                     HIGH:
                        public PGP keys are stored for verification only
                        all signing will be done externally outside of JOC Cockpit
                     MEDIUM:
                        a private PGP key will be stored for signing
                        signing will be done automatically with the provided key
                     LOW:
                        no keys will be stored
                        signing will be done internally with default keys -->
                <entry key="securityLevel" value="LOW"/>
                
            </userInput>
        </com.izforge.izpack.panels.UserInputPanel>
        <com.izforge.izpack.panels.UserInputPanel id="database">
            <userInput>
                <!-- Reporting Database Configuration -->
                
                <!-- Database connection settings can be specified with following entries such as
                     databaseHost, databasePort, ... or by a hibernate configuration file 
                     Posible values are 'withoutHibernateFile' (default) and 'withHibernateFile'. -->
                <entry key="databaseConfigurationMethod" value="withoutHibernateFile"/>
                     
                <!-- Choose the database management system. 
                     Supported values are 'h2' for H2 (for evaluation only), 'mysql' for MySQL,
                     'oracle' for Oracle, 'mssql' for MS SQL Server, 'pgsql' for PostgreSQL.
                     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 'on' or 'off' to create the database tables.
                     If you have modified the initial data of an already existing installation, 
                     then the modifications will be undone. Data added remains unchanged. 
                     This entry should be only 'off', when you sure, that all tables are already created. -->
                <entry key="databaseCreateTables" value="on"/>
                
            </userInput>
        </com.izforge.izpack.panels.UserInputPanel>
        <com.izforge.izpack.panels.UserInputPanel id="dbconnection">
            <userInput>
                <!-- Database Configuration if databaseConfigurationMethod=withoutHibernateFile -->
                     
                <!-- Enter the name 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)
                        (ADDRESS=(PROTOCOL=TCP)(HOST=tst-db1.myco.com)(PORT=1604))
                        (ADDRESS=(PROTOCOL=TCP)(HOST=tst-db2.myco.com)(PORT=1604)))
                        (CONNECT_DATA=(SERVICE_NAME=mydb1.myco.com)(SERVER=DEDICATED)))"/>
                     The "databaseSchema" and "databasePort" entries should then be left empty. -->
                <entry key="databaseHost" value=""/>
                
                <!-- Enter the port number for the database instance. Default ports are for H2 1521, MySQL 3306, 
                     Oracle 1521, MS SQL Server 1433, postgreSQL 5432. -->
                <entry key="databasePort" value=""/>
                
                <!-- Enter the schema -->
                <entry key="databaseSchema" value=""/>
                
                <!-- Enter the user name for database access -->
                <entry key="databaseUser" value=""/>
                
                <!-- Enter the password for database access -->
                <entry key="databasePassword" value=""/>
                
            </userInput>
        </com.izforge.izpack.panels.UserInputPanel>
        <com.izforge.izpack.panels.UserInputPanel id="jdbc">
            <userInput>
                <!-- Database Configuration -->
                
                <!-- You can specify an external JDBC connector then set internalConnector = no
                     For license reasons MySQL abd MS SQL Server JDBC drivers are not provided. 
                     Alternatively you can use the mariadb JDBC Driver for MySQL which is provided. 
                     For MS SQL Server you have to specify an external JDBC connector. 
                     An Oracle ojdbc8 JDBC driver is also provided. -->
                     
                <!-- You can choose between 'yes' or 'no' for using the internal JDBC connector
                     or not -->
                <entry key="internalConnector" value="yes"/>
                     
                <!-- Select the path to JDBC Driver -->
                <entry key="connector" value=""/>
                
            </userInput>
        </com.izforge.izpack.panels.UserInputPanel>
        <com.izforge.izpack.panels.UserInputPanel id="end">
            <userInput/>
        </com.izforge.izpack.panels.UserInputPanel>
        <com.izforge.izpack.panels.InstallPanel id="install"/>
        <com.izforge.izpack.panels.ProcessPanel id="process"/>
        <com.izforge.izpack.panels.FinishPanel id="finish"/>
    </AutomatedInstallation>
    

...

Note that a functioning web server - either the Jetty provided with the JOC Cockpit or another - is required before the JOC Cockpit installation can be operated..

  • Call the JOC Cockpit login form in a web browser and enter the User Name and Password.

    After a first installation of the JOC Cockpit the default User Name and Password of root:root and Shiro Authentication will be active, if changes have not been made to the shiro.ini configuration file. Note that in the default configuration the root user is assigned the all role, which has all permissions available.

    See the Authentication and Authorization - Configuration article for information about the configuration of other user-profiles and authentication methods.

  • Note that on some systems the web service may take a minute to start and display the login form shown below.
    Image RemovedImage Added

Operation from the Command Line

...

...

You should use Ctrl & F5 as well as emptying empty the browser cache before starting the JOC Cockpit after an update.

...

Windows systems

Starting the uninstaller will open the following form on Windows systems:
Image RemovedImage Added

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

...

The uninstall script on Linux systems will not open a dialog box. Instead, an uninstall script will start the Uninstaller and remove both the program and configuration files and folders. 

...

Location of the resources/joc folder after an installation on top of a JOC Cockpit installation with Jetty 

...

In this situation the shiro.ini and joc.properties file from the earlier installation will not be overwritten.

...

  • ProgramData
    • sos-berlin.com
      • js7
        • joc
            joc_home (symlink
            • jetty_base
              • archive (directory with files, remains after uninstall)
              • lib (directory with files, remains after uninstall)
              • logs (directory with files, remains after uninstall)
              • patches (directory with files, remains after uninstall)
              • resources (remains after uninstall and (empty) after full uninstall)
                  joc
                    • joc (directory with files, remains after uninstall)
                      • license (directory with files,
                    jobscheduler.hibernate.cfg.xml (
                      • remains after uninstall
                    if modified
                      • )
                    joc.properties (
                      • xsd (directory with files, remains after uninstall)
                    log4j.properties 
                      • hibernate.cfg.xml (remains after uninstall if modified)
                    reporting.hibernate.cfg.xml 
                      • joc.properties (remains after uninstall)
                      • log4j2.xml (remains after uninstall if modified)
                      • shiro.ini.active (remains after uninstall)
                      • shiro.ini-example (only added if shiro.ini file is found)
                • temp (directory with files, remains after uninstall)
                • webapps
                • start.ini (file, remains after uninstall)


        • Program Files
          • sos-berlin.com
            • js7
              • joc
                • install (directory with files)
                  • install_jetty_base.cmd
                  • update_jetty_base.cmd
                • jetty (directory with files)
                • jetty_base (symlink)
                • service
                • Uninstaller (directory, the empty remains after uninstall and full uninstall)
                  • uninstall.cmd
                  • uninstaller.jar
                • .jocinstallinformation (file, remains after uninstall)
                • joc_install.
                xml 
                • xml (file, remains after uninstall)
        Default File Structure if Jetty is not Installed

        ...

        • Program Files
          • sos-berlin.com
            • js7
              • joc
                • install
                  • install_jetty_base.cmd
                  • shortcut.vbs
                  sleep.exe
                  • joc_install_tables.cmd
                  • update_jetty_base.cmd
                • logs
                  • Install_ ... .log (files will remain after uninstall)
                • resources
                  • joc
                      jobscheduler.
                      • hibernate.cfg.
                      xml 
                      • xml (remains after uninstall if modified)
                      • joc.properties (remains after uninstall)
                      • joc.properties-example (only added
                      if joc
                      • if joc.properties file is found at installation start)
                      log4j
                      • log4j2.
                      properties 
                      • xml (remains after uninstall if modified)
                    • jobscheduler.hibernate.cfg.xml (remains after uninstall if modified)
                      • shiro.ini (remains after uninstall)
                      • shiro.ini-example (only added if shiro.ini file is found at installation start)
                  • service
                    • amd64
                    (directory)
                    ia64
                    • (directory)
                    • manager (directory)
                    • x86 (directory)
                    • install_jetty_windows_service.cmd
                    • LICENSE.txt
                    • NOTICE.txt
                    • RELEASE-NOTES.txt
                    • set_java_home_for_jetty_windows_service.cmd
                    • start_jetty_windows_service.cmd
                    • uninstall_jetty_windows_service.cmd
                  • Uninstaller (the empty directory remains after uninstall)
                    • jobscheduler.ico
                    • uninstall.cmd
                    • uninstaller.jar
                  • webapps
                    • joc.war
                  • .jocinstallinformation (file, remains after uninstall)
                  • joc_install.xml (file, remains after uninstall)

          Clustering and Redundancy

          ...

          The default location of this file after the installation is the resources/joc folder.

          ...

          Code Block
          languagetext
          titleExample Listing of the joc.properties File
          linenumberstrue
          collapsetrue
          ################################################################################
          ### If PathJOC toCockpit log4jis configurationused file.in Patha cancluster bethen absolutetype ora relative
          ###title to identify thiswhich file.
           
          log4j.configuration = log4j.properties
          
          ################################################################################
          ### Path to hibernate configuration file of JOC's reporting database. 
          ### Path can node
          ### is currently used. Further type an ordering (Primary <= 0, Standby > 0) for
          ### the display order in JOC's dashboard
          
          title                        = js7joc
          ordering                     = 0
          
          
          ################################################################################
          ### Path to log4j configuration file. Path can be absolute or relative
          ### to this file.
           
          hibernate_configuration_filelog4j.configuration          = reporting.hibernate.cfglog4j2.xml
          
          
          ################################################################################
          ### Path to hibernate configuration file of a JobSchedulerJOC's database. 
          ### Path can be absolute or relative to this file.
          
          ### The key must have the format 'hibernate_configuration_file_<jobschedulerId>'
          ### for a specific JobScheduler (cluster) 
          ### or 'hibernate_configuration_scheduler_default_file'
          ### for all JobSchedulers which don't have a specific setting.
           
          hibernate_configuration_scheduler_default_file = jobscheduler.hibernate_configuration_file = hibernate.cfg.xml
          
          
          ################################################################################
          ### The time (in millisecondsseconds) to establish the connection with the 
          ### remote host. Default = 2
          
          jobschedulercontroller_connection_timeout = 2
          
          
          ################################################################################
          ### The time (in millisecondsseconds) waiting for data after the connection
          ### was established; maximum time of inactivity between two data packets.
          ### Default = 5
          
          jobschedulercontroller_socket_timeout = 5
          
          
          ################################################################################
          ### Should hostname verification be carried out for https certificate. 
          ### Default falsetrue
           
          https_with_hostname_verification = falsetrue
          
          
          ################################################################################
          ### Location, type and password of the configurationtruststore filewhich with e.g. url mapping, etc.
          ###contains the server
          ### certificates of each JS7 Controller for HTTPS connections. Path can be 
          ### absolute or relative to this file.
          
          # configuration#truststore_filepath = joc.configuration.properties../../etc/joc.jks
          #truststore_type = PKCS12
          #truststore_password = secret
          
          
          ################################################################################
          ### Location, type and passwordpasswords of the Java truststorekeystore which contains the client 
          ### certificate certificatesfor ofHTTPS eachJobSchedulerconnections Masterto forthe HTTPSJS7 connectionsControllers. Path can be  
          ### absolute or relative to this file.
          
          # truststore#keystore_path = ../../etc/joc.jks
          # truststore#keystore_type = PKCS12
          # truststore#keystore_password = secret
          #key_password = secret
          
          
          ################################################################################
          ### RequestsSettings tofor alla webcustom serviceslogo whichfile modifyon JobSchedulerthe objectslogin such as 
          ### "start order", "stop job" etc. can contain a comment to describe the reason.
          ### This flag controls if the comment is required or not. Default false
          
          force_comments_for_audit_log = false
          
          ################################################################################
          ### Settings for a custom logo file on the login page 
          ### page 
          ### The logo file has to be located in ./jetty_base/webapps/root/ext/images
          ### Possible units for width are according to
          ### https://www.w3schools.com/cssref/css_units.asp (default px)
          ### Possible values for the position are "top" or "bottom" (default=bottom).
          
          custom_logo_name     = 
          custom_logo_height   = 
          custom_logo_position = 
          
          ################################################################################
          ### A default profile should be available that includes any profile settings 
          ### that are applied by default to new users.
          
          default_profile_account = root
          
          ################################################################################
          ### Pre-defined comments used for example in the 'reasons' describing actions in 
          ### the audit log.
          
          comments = System maintenance; \
           Repeat execution; \
           Business requirement; \
           Restart failed execution; \
           Re-instantiate stopped object; \
           Temporary stop; \
           Change of JobScheduler object; \
           Rerun with parameter changes; \
           Change of external dependency; \
           Application deployment and upgrade

          Explanations

          Explanations

          • https_with_hostname_verification
            • This setting should be considered carefully. Effectively it forces the host name in an HTTPS connection to a JobScheduler Master to be verified from the host's certificate. This guarantees that the certificate has been created for the respective host (FQDN). 

            • With this setting being assigned the value false no host name verification takes place and the HTTPS connection is vulnerable to man-in-the-middle attacks.
          • configuration_file
          • truststore_path, truststore_type, truststore_password
            • A trust store is used if an HTTPS connection between clients, e.g. user browsers, and JOC Cockpit is used. For details see the JOC Cockpit - HTTPS Authentication article.

          • force_comments_for_audit_log
            • Comments can be added whenever an operation is performed that modifies a JobScheduler object, e.g. if a job or job chain is started.

            • Basically a user can choose in his profile to add comments which pops up a dialog box to select or enter a comment. If this profile setting is not active then a number of operations, such as starting a job, are performed immediately without additional dialog.
            • With the force_comments_for_audit_log setting in place all users are forced to add a comment when modifying a JobScheduler object - independent of their profile settings.
          • custom_logo_name, custom_logo_height, custom_logo_position
            • The custom logo is displayed on the login page.

            • Jira
              serverSOS JIRA
              columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
              serverId6dc67751-9d67-34cd-985b-194a8cdc9602
              keyJOC-473
          • default_profile_account
            • The user profile of the account specified for this setting provides the default values for the profiles of new users.
            • An account is specified exactly as the user would type for login. If LDAP Configuration is in place then the domain account is specified, optionally including the domain, e.g. domain\account or account@domain or by use of the samAccountName or the respective LDAP attribute configured by the JOC Cockpit administrator
          • https_with_hostname_verification
            • This setting should be considered carefully. Effectively it forces the host name in an HTTPS connection to a JobScheduler Master to be verified from the host's certificate. This guarantees that the certificate has been created for the respective host (FQDN). 

            • With this setting being assigned the value false no host name verification takes place and the HTTPS connection is vulnerable to man-in-the-middle attacks.
          • configuration_file
          • truststore_path, truststore_type, truststore_password
            • A trust store is used if an HTTPS connection between clients, e.g. user browsers, and JOC Cockpit is used. For details see the JOC Cockpit - HTTPS Authentication article.

          • force_comments_for_audit_log
            • Comments can be added whenever an operation is performed that modifies a JobScheduler object, e.g. if a job or job chain is started.

            • Basically a user can choose in his profile to add comments which pops up a dialog box to select or enter a comment. If this profile setting is not active then a number of operations, such as starting a job, are performed immediately without additional dialog.
            • With the force_comments_for_audit_log setting in place all users are forced to add a comment when modifying a JobScheduler object - independent of their profile settings.
          • custom_logo_name, custom_logo_height, custom_logo_position
            • The custom logo is displayed on the login page.
            • Jira
              serverSOS JIRA
              columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
              serverId6dc67751-9d67-34cd-985b-194a8cdc9602
              keyJOC-473
          • default_profile_account
            • The user profile of the account specified for this setting provides the default values for the profiles of new users.
            • An account is specified exactly as the user would type for login. If LDAP Configuration is in place then the domain account is specified, optionally including the domain, e.g. domain\account or account@domain or by use of the samAccountName or the respective LDAP attribute configured by the JOC Cockpit administrator.
            • Jira
              serverSOS JIRA
              columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
              serverId6dc67751-9d67-34cd-985b-194a8cdc9602
              keyJOC-477
          • comments
            • Add/modify/replace items to the list of comments in any language. 
            • Each comment ends with a semicolon. If comments are to follow then the line for the current comment ends with a backslash.

          ...

          This file is used for configuration details that are independent from a JOC Cockpit installation.

          This file is not changed during an update of the JOC Cockpit.

          The default location of this file after installation is the resources/joc folder.

          Detailed descriptions of each parameter are included in the file and are intended to be self-explanatory.

          ...

          languagetext
          titleExample Listing of the joc.configuration.properties File
          linenumberstrue
          collapsetrue
            • 477
          • comments
            • Add/modify/replace items to the list of comments in any language. 
            • Each comment ends with a semicolon. If comments are to follow then the line for the current comment ends with a backslash.

          Database Configuration Files

          Once the JOC Cockpit has been installed, the configuration for each database connection will be stored in a hibernate configuration file as follows:

          • Database Connection:
            • /resources/joc/hibernate.cfg.xml
          • The following listing shows a typical hibernate database configuration file (here for the JobScheduler database connection)

            Code Block
            languagexml
            titleExample Listing of jobscheduler.hibernate.cfg.xml
            linenumberstrue
            collapsetrue
            <?xml version="1.0" encoding="UTF-8"?>
            <hibernate-configuration>
                <session-factory>
                    <property name="hibernate.connection.driver_class">org.mariadb.jdbc.Driver</property>
                    <property name="hibernate.connection.password">jobscheduler</property>
                    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/js7?serverTimezone=UTC</property>
                    <property name="hibernate.connection.username">jobscheduler</property>
                    <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
                    <property name="hibernate.show_sql">false</property>
                    <property name="hibernate.format_sql">true</property>
                    <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
            

          ...

          •         

          ...

          • <property name="javax.persistence.validation.mode">none</property>
                    <!-- Hikari Connection Pool -->
                    <property name="hibernate.connection.provider_class">org.hibernate.hikaricp.internal.HikariCPConnectionProvider</property>
                    <property name="hibernate.hikari.maximumPoolSize">10</property>
                </session-factory>
            </hibernate-configuration>

          The locations of this file is specified in the joc.properties file.

          Log Configuration File

          The logging configuration for the JOC Cockpit is saved during installation to a log4j2.xml file, which can be found in the resources/joc folder.

          The following listing shows the default log configuration for the JOC Cockpit: 

          Code Block
          languagetext
          titleExample Listing of jobscheduler.hibernate.cfg.xml
          linenumberstrue
          collapsetrue
          <?xml version="1.0" encoding="UTF-8"?>
          <Configuration status="WARN">
          	<Properties>
          		<Property name="TimeZone">Asia/Calcutta</Property>
          		<Property name="RetainDays">30d</Property>
          		<Property name="MaxSizeOfRolledOverFiles">5 GB</Property>
          		<Property name="MaxSizePerFile">100 MB</Property>
          
          		<!-- Log level of the Root Logger. -->
          		<Property name="RootLogLevel">INFO</Property>
          		<!-- Configurations for 2nd debug log files (OFF|DEBUG|TRACE)
          			 If one of these values is set to DEBUG or TRACE then the above
          			 RootLogLevel has to have the same value.
          		-->
          		<Property name="JocLogLevel">OFF</Property>
          		<Property name="ServiceClusterLogLevel">OFF</Property>
          		<Property name="ServiceHistoryLogLevel">OFF</Property>
          		<Property name="ServiceDailyPlanLogLevel">OFF</Property>
          		<Property name="ServiceCleanupLogLevel">OFF</Property>
          		<Property name="ServiceMonitorLogLevel">OFF</Property>
          		<Property name="AuthLogLevel">OFF</Property>
          		<Property name="ConnectionPoolLogLevel">OFF</Property>
          	</Properties>
          
          	<Appenders>
          		<!-- Appender for audit log -->
          		<RollingFile name="AuditLogAppender"
          			fileName="${sys:user.dir}/logs/audit.log"
          			filePattern="${sys:user.dir}/logs/audit-%d{yyyy-MM}-%i.log.gz"
          			createOnDemand="true">
          			<PatternLayout
          				pattern="%d{ISO8601}{${TimeZone}} %-5p %m%throwable{short}%n"
          				charset="UTF-8"/>
          			<Policies>
          				<TimeBasedTriggeringPolicy/>
          				<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          			</Policies>
          			<DefaultRolloverStrategy fileIndex="nomax"/>
          		</RollingFile>
          
          		<!-- Appender for connection pool log -->
          		<RollingFile name="ConnectionPoolDebugAppender"
          			fileName="${sys:user.dir}/logs/connection-pool-debug.log"
          			filePattern="${sys:user.dir}/logs/connection-pool-debug-%d{yyyy-MM-dd}-%i.log.gz"
          			createOnDemand="true">
          			<PatternLayout
          				pattern="%d{ISO8601}{${TimeZone}} %-5p %-20t %m%n"
          				charset="UTF-8"/>
          			<Policies>
          				<TimeBasedTriggeringPolicy/>
          				<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          			</Policies>
          			<DefaultRolloverStrategy fileIndex="nomax">
          				<Delete basePath="${sys:user.dir}/logs">
          					<IfFileName regex=".*(joc|service|connection|authentication)-.+\.log\.gz"/>
          					<IfAny>
          						<IfLastModified age="${RetainDays}" />
          						<IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/>
          					</IfAny>
          				</Delete>
          			</DefaultRolloverStrategy>
          		</RollingFile>
          
          		<!-- Appender with short error messages -->
          		<RollingFile name="JOCAppenderWithShortErrMessage"
          			fileName="${sys:user.dir}/logs/joc.log"
          			filePattern="${sys:user.dir}/logs/joc-%d{yyyy-MM-dd}-%i.log.gz"
          			createOnDemand="true">
          			<PatternLayout
          				pattern="%d{ISO8601}{${TimeZone}} %-5p %-20.20t %-44.70c{1.} - %m%throwable{short}%n"
          				charset="UTF-8"/>
          			<Policies>
          				<TimeBasedTriggeringPolicy/>
          				<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          			</Policies>
          			<DefaultRolloverStrategy fileIndex="nomax">
          				<Delete basePath="${sys:user.dir}/logs">
          					<IfFileName regex=".*(joc|service|connection|authentication)-.+\.log\.gz"/>
          					<IfAny>
          						<IfLastModified age="${RetainDays}" />
          						<IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/>
          					</IfAny>
          				</Delete>
          			</DefaultRolloverStrategy>
          		</RollingFile>
          
          		<!-- Main joc log -->
          		<RollingFile name="JOCAppender"
          			fileName="${sys:user.dir}/logs/joc.log"
          			filePattern="${sys:user.dir}/logs/joc-%d{yyyy-MM-dd}-%i.log.gz"
          			createOnDemand="true">
          			<PatternLayout
          				pattern="%d{ISO8601}{${TimeZone}} %-5p %-20.20t %-44.70c{1.} - %m%n"
          				charset="UTF-8"/>
          			<Policies>
          				<TimeBasedTriggeringPolicy/>
          				<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          			</Policies>
          			<DefaultRolloverStrategy fileIndex="nomax">
          				<Delete basePath="${sys:user.dir}/logs">
          					<IfFileName regex=".*(joc|service|connection|authentication)-.+\.log\.gz"/>
          					<IfAny>
          						<IfLastModified age="${RetainDays}" />
          						<IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/>
          					</IfAny>
          				</Delete>
          			</DefaultRolloverStrategy>
          		</RollingFile>
          
          		<!-- Debug joc log -->
          		<RollingFile name="JOCDebugAppender"
          			fileName="${sys:user.dir}/logs/joc-debug.log"
          			filePattern="${sys:user.dir}/logs/joc-debug-%d{yyyy-MM-dd}-%i.log.gz"
          			createOnDemand="true">
          			<ThresholdFilter level="${JocLogLevel}" onMatch="ACCEPT" onMismatch="DENY"/>
          			<PatternLayout
          				pattern="%d{ISO8601}{${TimeZone}} %-5p %-20.20t %-44.70c{1.} - %m%n"
          				charset="UTF-8"/>
          			<Policies>
          				<TimeBasedTriggeringPolicy/>
          				<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          			</Policies>
          			<DefaultRolloverStrategy fileIndex="nomax">
          				<Delete basePath="${sys:user.dir}/logs">
          					<IfFileName regex=".*(joc|service|connection|authentication)-.+\.log\.gz"/>
          					<IfAny>
          						<IfLastModified age="${RetainDays}" />
          						<IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/>
          					</IfAny>
          				</Delete>
          			</DefaultRolloverStrategy>
          		</RollingFile>
          
          		<!-- services main log -->
          		<RollingFile name="ServiceClusterAppender"
          			fileName="${sys:user.dir}/logs/service-cluster.log"
          			filePattern="${sys:user.dir}/logs/service-cluster-%d{yyyy-MM-dd}-%i.log.gz"
          			createOnDemand="true">
          			<PatternLayout
          				pattern="%d{ISO8601}{${TimeZone}} %-5p %-20t %-34c{1.} - %m%n"
          				charset="UTF-8"/>
          			<Policies>
          				<TimeBasedTriggeringPolicy/>
          				<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          			</Policies>
          			<DefaultRolloverStrategy fileIndex="nomax">
          				<Delete basePath="${sys:user.dir}/logs">
          					<IfFileName regex=".*(joc|service|connection|authentication)-.+\.log\.gz"/>
          					<IfAny>
          						<IfLastModified age="${RetainDays}" />
          						<IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/>
          					</IfAny>
          				</Delete>
          			</DefaultRolloverStrategy>
          		</RollingFile>
          
          		<RollingFile name="ServiceHistoryAppender"
          			fileName="${sys:user.dir}/logs/service-history.log"
          			filePattern="${sys:user.dir}/logs/service-history-%d{yyyy-MM-dd}-%i.log.gz"
          			createOnDemand="true">
          			<PatternLayout
          				pattern="%d{ISO8601}{${TimeZone}} %-5p %-20t %-34c{1.} - %m%n"
          				charset="UTF-8"/>
          			<Policies>
          				<TimeBasedTriggeringPolicy/>
          				<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          			</Policies>
          			<DefaultRolloverStrategy fileIndex="nomax">
          				<Delete basePath="${sys:user.dir}/logs">
          					<IfFileName regex=".*(joc|service|connection|authentication)-.+\.log\.gz"/>
          					<IfAny>
          						<IfLastModified age="${RetainDays}" />
          						<IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/>
          					</IfAny>
          				</Delete>
          			</DefaultRolloverStrategy>
          		</RollingFile>
          
          		<RollingFile name="ServiceDailyPlanAppender"
          			fileName="${sys:user.dir}/logs/service-dailyplan.log"
          			filePattern="${sys:user.dir}/logs/service-dailyplan-%d{yyyy-MM-dd}-%i.log.gz"
          			createOnDemand="true">
          			<PatternLayout
          				pattern="%d{ISO8601}{${TimeZone}} %-5p %-20t %-34c{1.} - %m%n"
          				charset="UTF-8"/>
          			<Policies>
          				<TimeBasedTriggeringPolicy/>
          				<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          			</Policies>
          			<DefaultRolloverStrategy fileIndex="nomax">
          				<Delete basePath="${sys:user.dir}/logs">
          					<IfFileName regex=".*(joc|service|connection|authentication)-.+\.log\.gz"/>
          					<IfAny>
          						<IfLastModified age="${RetainDays}" />
          						<IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/>
          					</IfAny>
          				</Delete>
          			</DefaultRolloverStrategy>
          		</RollingFile>
          
          		<RollingFile name="ServiceCleanupAppender"
          			fileName="${sys:user.dir}/logs/service-cleanup.log"
          			filePattern="${sys:user.dir}/logs/service-cleanup-%d{yyyy-MM-dd}-%i.log.gz"
          			createOnDemand="true">
          			<PatternLayout
          				pattern="%d{ISO8601}{${TimeZone}} %-5p %-20t %-34c{1.} - %m%n"
          				charset="UTF-8"/>
          			<Policies>
          				<TimeBasedTriggeringPolicy/>
          				<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          			</Policies>
          			<DefaultRolloverStrategy fileIndex="nomax">
          				<Delete basePath="${sys:user.dir}/logs">
          					<IfFileName regex=".*(joc|service|connection|authentication)-.+\.log\.gz"/>
          					<IfAny>
          						<IfLastModified age="${RetainDays}" />
          						<IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/>
          					</IfAny>
          				</Delete>
          			</DefaultRolloverStrategy>
          		</RollingFile>
          
          		<RollingFile name="ServiceMonitorAppender"
          			fileName="${sys:user.dir}/logs/service-monitor.log"
          			filePattern="${sys:user.dir}/logs/service-monitor-%d{yyyy-MM-dd}-%i.log.gz"
          			createOnDemand="true">
          			<PatternLayout
          				pattern="%d{ISO8601}{${TimeZone}} %-5p %-20t %-34c{1.} - %m%n"
          				charset="UTF-8"/>
          			<Policies>
          				<TimeBasedTriggeringPolicy/>
          				<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          			</Policies>
          			<DefaultRolloverStrategy fileIndex="nomax">
          				<Delete basePath="${sys:user.dir}/logs">
          					<IfFileName regex=".*(joc|service|connection|authentication)-.+\.log\.gz"/>
          					<IfAny>
          						<IfLastModified age="${RetainDays}" />
          						<IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/>
          					</IfAny>
          				</Delete>
          			</DefaultRolloverStrategy>
          		</RollingFile>
          
          		<!-- services debug log -->
          		<RollingFile name="ServiceClusterDebugAppender"
          			fileName="${sys:user.dir}/logs/service-cluster-debug.log"
          			filePattern="${sys:user.dir}/logs/service-cluster-debug-%d{yyyy-MM-dd}-%i.log.gz"
          			createOnDemand="true">
          			<ThresholdFilter level="${ServiceClusterLogLevel}" onMatch="ACCEPT" onMismatch="DENY"/>
          			<PatternLayout
          				pattern="%d{ISO8601}{${TimeZone}} %-5p %-20t %-34c{1.} - %m%n"
          				charset="UTF-8"/>
          			<Policies>
          				<TimeBasedTriggeringPolicy/>
          				<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          			</Policies>
          			<DefaultRolloverStrategy fileIndex="nomax">
          				<Delete basePath="${sys:user.dir}/logs">
          					<IfFileName regex=".*(joc|service|connection|authentication)-.+\.log\.gz"/>
          					<IfAny>
          						<IfLastModified age="${RetainDays}" />
          						<IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/>
          					</IfAny>
          				</Delete>
          			</DefaultRolloverStrategy>
          		</RollingFile>
          
          		<RollingFile name="ServiceHistoryDebugAppender"
          			fileName="${sys:user.dir}/logs/service-history-debug.log"
          			filePattern="${sys:user.dir}/logs/service-history-debug-%d{yyyy-MM-dd}-%i.log.gz"
          			createOnDemand="true">
          			<ThresholdFilter level="${ServiceHistoryLogLevel}" onMatch="ACCEPT" onMismatch="DENY"/>
          			<PatternLayout
          				pattern="%d{ISO8601}{${TimeZone}} %-5p %-20t %-34c{1.} - %m%n"
          				charset="UTF-8"/>
          			<Policies>
          				<TimeBasedTriggeringPolicy/>
          				<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          			</Policies>
          			<DefaultRolloverStrategy fileIndex="nomax">
          				<Delete basePath="${sys:user.dir}/logs">
          					<IfFileName regex=".*(joc|service|connection|authentication)-.+\.log\.gz"/>
          					<IfAny>
          						<IfLastModified age="${RetainDays}" />
          						<IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/>
          					</IfAny>
          				</Delete>
          			</DefaultRolloverStrategy>
          		</RollingFile>
          
          		<RollingFile name="ServiceDailyPlanDebugAppender"
          			fileName="${sys:user.dir}/logs/service-dailyplan-debug.log"
          			filePattern="${sys:user.dir}/logs/service-dailyplan-debug-%d{yyyy-MM-dd}-%i.log.gz"
          			createOnDemand="true">
          			<ThresholdFilter level="${ServiceDailyPlanLogLevel}" onMatch="ACCEPT" onMismatch="DENY"/>
          			<PatternLayout
          				pattern="%d{ISO8601}{${TimeZone}} %-5p %-20t %-34c{1.} - %m%n"
          				charset="UTF-8"/>
          			<Policies>
          				<TimeBasedTriggeringPolicy/>
          				<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          			</Policies>
          			<DefaultRolloverStrategy fileIndex="nomax">
          				<Delete basePath="${sys:user.dir}/logs">
          					<IfFileName regex=".*(joc|service|connection|authentication)-.+\.log\.gz"/>
          					<IfAny>
          						<IfLastModified age="${RetainDays}" />
          						<IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/>
          					</IfAny>
          				</Delete>
          			</DefaultRolloverStrategy>
          		</RollingFile>
          
          		<RollingFile name="ServiceCleanupDebugAppender"
          			fileName="${sys:user.dir}/logs/service-cleanup-debug.log"
          			filePattern="${sys:user.dir}/logs/service-cleanup-debug-%d{yyyy-MM-dd}-%i.log.gz"
          			createOnDemand="true">
          			<ThresholdFilter level="${ServiceCleanupLogLevel}" onMatch="ACCEPT" onMismatch="DENY"/>
          			<PatternLayout
          				pattern="%d{ISO8601}{${TimeZone}} %-5p %-20t %-34c{1.} - %m%n"
          				charset="UTF-8"/>
          			<Policies>
          				<TimeBasedTriggeringPolicy/>
          				<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          			</Policies>
          			<DefaultRolloverStrategy fileIndex="nomax">
          				<Delete basePath="${sys:user.dir}/logs">
          					<IfFileName regex=".*(joc|service|connection|authentication)-.+\.log\.gz"/>
          					<IfAny>
          						<IfLastModified age="${RetainDays}" />
          						<IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/>
          					</IfAny>
          				</Delete>
          			</DefaultRolloverStrategy>
          		</RollingFile>
          
          		<RollingFile name="ServiceMonitorDebugAppender"
          			fileName="${sys:user.dir}/logs/service-monitor-debug.log"
          			filePattern="${sys:user.dir}/logs/service-monitor-debug-%d{yyyy-MM-dd}-%i.log.gz"
          			createOnDemand="true">
          			<ThresholdFilter level="${ServiceMonitorLogLevel}" onMatch="ACCEPT" onMismatch="DENY"/>
          			<PatternLayout
          				pattern="%d{ISO8601}{${TimeZone}} %-5p %-20t %-34c{1.} - %m%n"
          				charset="UTF-8"/>
          			<Policies>
          				<TimeBasedTriggeringPolicy/>
          				<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          			</Policies>
          			<DefaultRolloverStrategy fileIndex="nomax">
          				<Delete basePath="${sys:user.dir}/logs">
          					<IfFileName regex=".*(joc|service|connection|authentication)-.+\.log\.gz"/>
          					<IfAny>
          						<IfLastModified age="${RetainDays}" />
          						<IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/>
          					</IfAny>
          				</Delete>
          			</DefaultRolloverStrategy>
          		</RollingFile>
          
          		<Routing name="ServicesDebugRouting">
          			<Routes pattern="$${ctx:clusterService}">
          				<!-- Appender for services with a thread context 'ctx:clusterService' such as 'cluster', 'history' -->
          				<Route key="service-cluster" ref="ServiceClusterDebugAppender"/>
          				<Route key="service-history" ref="ServiceHistoryDebugAppender"/>
          				<Route key="service-dailyplan" ref="ServiceDailyPlanDebugAppender"/>
          				<Route key="service-cleanup" ref="ServiceCleanupDebugAppender"/>
          				<Route key="service-monitor" ref="ServiceMonitorDebugAppender"/>
          				<!-- Appender for all web services without a thread context 'ctx:clusterService' -->
          				<Route key="$${ctx:clusterService}" ref="JOCDebugAppender"/>
          			</Routes>
          		</Routing>
          		<Async name="ServicesDebugAppender">
          			<AppenderRef ref="ServicesDebugRouting" />
          		</Async>
          
          		<Routing name="ServicesInfoRouting">
          			<Routes pattern="$${ctx:clusterService}">
          				<!-- Appender for services with a thread context 'ctx:clusterService' such as 'cluster', 'history' -->
          				<Route key="service-cluster" ref="ServiceClusterAppender"/>
          				<Route key="service-history" ref="ServiceHistoryAppender"/>
          				<Route key="service-dailyplan" ref="ServiceDailyPlanAppender"/>
          				<Route key="service-cleanup" ref="ServiceCleanupAppender"/>
          				<Route key="service-monitor" ref="ServiceMonitorAppender"/>
          				<!-- Appender for all web services without a thread context 'ctx:clusterService' -->
          				<Route key="$${ctx:clusterService}" ref="JOCAppender"/>
          			</Routes>
          		</Routing>
          		<Async name="ServicesInfoAppender">
          			<AppenderRef ref="ServicesInfoRouting" />
          		</Async>
          
          		<Routing name="ServicesErrorRouting">
          			<Routes pattern="$${ctx:clusterService}">
          				<!-- Appender for services with a thread context 'ctx:clusterService' such as 'cluster', 'history' -->
          				<Route key="service-cluster" ref="JOCAppender"/>
          				<Route key="service-history" ref="JOCAppender"/>
          				<Route key="service-dailyplan" ref="JOCAppender"/>
          				<Route key="service-cleanup" ref="JOCAppender"/>
          				<Route key="service-monitor" ref="JOCAppender"/>
          				<!-- Appender for all web services without a thread context 'ctx:clusterService' -->
          				<Route key="$${ctx:clusterService}">
          					<Null name="ServicesNullAppender" />
          				</Route>
          			</Routes>
          		</Routing>
          		<Async name="ServicesErrorAppender">
          			<AppenderRef ref="ServicesErrorRouting" />
          		</Async>
          
          		<!-- Appender for authentication -->
          		<Routing name="ContextDebugRouting">
          			<Routes pattern="$${ctx:context}">
          				<Route>
          					<RollingFile name="ContextRolling-${ctx:context}"
          						fileName="${sys:user.dir}/logs/${ctx:context}-debug.log"
          						filePattern="${sys:user.dir}/logs/${ctx:context}-debug-%d{yyyy-MM-dd}-%i.log.gz"
          						createOnDemand="true">
          						<PatternLayout
          							pattern="%d{ISO8601}{${TimeZone}} %-5p %-20t %-34c{1} - %m%n"
          							charset="UTF-8"/>
          						<Policies>
          							<OnStartupTriggeringPolicy />
          							<SizeBasedTriggeringPolicy size="${MaxSizePerFile}"/>
          						</Policies>
          						<DefaultRolloverStrategy fileIndex="nomax">
          							<Delete basePath="${sys:user.dir}/logs">
          								<IfFileName regex=".*(joc|service|connection|authentication)-.+\.log\.gz"/>
          								<IfAny>
          									<IfLastModified age="${RetainDays}" />
          									<IfAccumulatedFileSize exceeds="${MaxSizeOfRolledOverFiles}"/>
          								</IfAny>
          							</Delete>
          						</DefaultRolloverStrategy>
          					</RollingFile>
          				</Route>
          				<Route key="$${ctx:context}">
          					<Null name="ContextNullAppender" />
          				</Route>
          			</Routes>
          		</Routing>
          		<Async name="AuthDebugAppender">
          			<AppenderRef ref="ContextDebugRouting" />
          		</Async>
          
          	</Appenders>
          
          	<Loggers>
          		<!-- Root logger; all other loggers inherit from this logger. -->
          		<Root level="${RootLogLevel}">
          			<AppenderRef ref="ServicesErrorAppender" level="WARN"/>
          			<AppenderRef ref="ServicesInfoAppender" level="INFO"/>
          			<AppenderRef ref="ServicesDebugAppender" level="TRACE"/>
          			<AppenderRef ref="AuthDebugAppender" level="${AuthLogLevel}"/>
          		</Root>
          
          		<!-- Logger for audit log -->
          		<Logger name="JOCAuditLog" additivity="false" level="INFO">
          			<AppenderRef ref="AuditLogAppender"/>
          		</Logger>
          		<!-- Logger for connection pool -->
          		<Logger name="ConnectionPool" additivity="false" level="${ConnectionPoolLogLevel}">
          			<AppenderRef ref="ConnectionPoolDebugAppender"/>
          		</Logger>
          
          		<!-- Proxy Logs -->
          		<!-- Logger name="js7" level="info"/ -->
          		<Logger name="js7.base.io.https.Https" level="WARN"/>
          		<Logger name="js7.proxy.JournaledProxy" level="ERROR"/>
          		<!-- Logger name="akka" level="info"/ -->
          		<Logger name="akka.event.slf4j" level="WARN"/>
          		<Logger name="akka.actor" level="INFO" additivity="false">
          			<AppenderRef ref="JOCAppenderWithShortErrMessage" />
          		</Logger>
          
          		<!-- Apache and Apache Shiro Logs -->
          		<Logger name="org.apache.shiro.session.mgt" level="WARN" />
          		<Logger name="org.apache.shiro.realm.text.IniRealm" level="ERROR"/>
          
          		<!-- JSON Validator -->
          		<Logger name="com.networknt.schema" level="INFO" />
          
          		<!-- log level 'trace' for sql bindings -->
          		<Logger name="org.hibernate.type.descriptor.sql" level="TRACE"/>
          		<!-- log level 'debug' for sql statements -->
          		<Logger name="org.hibernate.SQL" level="INFO"/>
          		<Logger name="org.hibernate.persister.entity.AbstractEntityPersister" level="DEBUG"/>
          		<Logger name="org.hibernate.loader.entity.plan.EntityLoader" level="DEBUG"/>
          		<Logger name="org.hibernate.orm.deprecation" level="OFF" />
          
          		<Logger name="java.util.prefs" level="OFF" />
          
          	</Loggers>
          </Configuration>

          Explanations

          • jobscheduler_url_<host>_<port>
            • This setting is used if a JobScheduler Master is operated, e.g. in a Docker environment, without DNS support and requires URL mapping.
            • On startup of JobScheduler Master it will propagate its hostname and port to the Reporting Database.
            • If this hostname is not publicly known in the network, e.g has not been added to the DNS, then JOC Cockpit cannot address the JobScheduler Master.
            • This setting allows to map the URL reported by the Master to the Reporting Database to a URL that is accessible by JOC Cockpit, e.g. a URL that includes an IP address.

          Database Configuration Files

          Once the JOC Cockpit has been installed, the configuration for each database connection will be stored in a hibernate configuration file as follows:

          • JobScheduler Database Connection:
            • /resources/joc/jobscheduler.hibernate.cfg.xml
          • Reporting Database Connection:
            • /resources/joc/reporting.hibernate.cfg.xml
          • The following listing shows a typical hibernate database configuration file (here for the JobScheduler database connection)

            Code Block
            languagexml
            titleExample Listing of jobscheduler.hibernate.cfg.xml
            linenumberstrue
            collapsetrue
            <?xml version="1.0" encoding="UTF-8"?>
            <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                                     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
            <hibernate-configuration>
             <session-factory>
              <property name="hibernate.connection.driver_class">org.mariadb.jdbc.Driver</property>
              <property name="hibernate.connection.password">js_11_pass</property>
              <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/js_11_db</property>
              <property name="hibernate.connection.username">js_11_user</property>
              <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
              <property name="hibernate.show_sql">false</property>
              <property name="hibernate.format_sql">true</property>
              <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
              <property name="javax.persistence.validation.mode">none</property>
              <property name="hibernate.c3p0.minPoolSize">1</property>
              <property name="hibernate.c3p0.maxPoolSize">1</property>
              <property name="hibernate.c3p0.initialPoolSize">1</property>
              <property name="hibernate.c3p0.acquireIncrement">1</property>
              <property name="hibernate.c3p0.maxIdleTime">14400</property>
              <property name="hibernate.c3p0.maxConnectionAge">14400</property>
              <property name="hibernate.c3p0.idleConnectionTestPeriod">16200</property>
             </session-factory>
            </hibernate-configuration>

          The locations of these files is specified in the joc.properties file.

          Log Configuration File

          The logging configuration for the JOC Cockpit is saved during installation to a log4j.properties file, which can be found in the the resources/joc folder.

          The following listing shows the default log configuration for the JOC Cockpit: 

          Code Block
          languagetext
          titleExample Listing of jobscheduler.hibernate.cfg.xml
          linenumberstrue
          collapsetrue
          log4j.reset=true
          log4j.rootLogger=info, stdout
          #for debugging JOC set the following logger to 'debug'
          log4j.logger.com.sos = info
          log4j.logger.org.hibernate.SQL = info
          #logger for audit log
          log4j.logger.JOCAuditLog=info, audit
          log4j.additivity.JOCAuditLog = false
          
          log4j.logger.org.apache.shiro = info
          log4j.logger.org.hibernate.hql = error
          log4j.logger.org.hibernate.event = error
          log4j.logger.org.hibernate.cfg = error
          log4j.logger.org.hibernate.type = error
          log4j.logger.org.hibernate.id = error
          log4j.logger.org.hibernate.orm.deprecation = error
          log4j.logger.org.apache.http = error
          log4j.logger.org.apache.commons = error
          log4j.logger.org.apache.shiro.session.mgt = error
          log4j.appender.stdout = org.apache.log4j.ConsoleAppender
          log4j.appender.stdout.layout = org.apache.log4j.EnhancedPatternLayout
          log4j.appender.stdout.layout.ConversionPattern = %d{ISO8601}{Europe/Berlin} %-5p %-16.16t %-44.70c{1.} - %m%n%throwable{6}
          log4j.appender.audit = org.apache.log4j.FileAppender
          log4j.appender.audit.layout = org.apache.log4j.EnhancedPatternLayout
          log4j.appender.audit.layout.ConversionPattern = %d{ISO8601}{Europe/Berlin} %-5p %m%n%throwable{short}
          #filename of audit log
          log4j.appender.audit.File = ${jetty.base}/logs/JOCAuditLog.log

          The most likely configuration change users are likely to make would be to:

          • the log levels, which are set in lines 3 - 5, and 
          • the Audit Log file name, which is set in the last line.

          Java Options for Jetty

          The Java option values for Jetty are stored after installation:

          • on Linux systems in the directory:
            • /etc/default/joc if the installer was executed by the root account.
            • /home/<user>/jocrc if the installer was executed by a user account (./setup.sh -u <user>).
            • On startup, JOC Cockpit will check the /home/<user>/jocrc file and only if this cannot be found it will check the /etc/default/joc file.
          • on Windows systems in the Registry under:
            • HKLM\SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\sos_joc\Parameters\Java
          • Java Memory options can also be configured by opening the sos_jocw.exe which can be found in the joc_home\service directory.

          Image RemovedImage Added

          Anchor
          resources
          resources
          Further Resources

          ...