Page History
...
- If a MySQL DBMS is being used by the JobScheduler, then the MySQL
wait_timeout
setting that rules the max. the lifetime of idle connections should be checked and if necessary extended.- The default
wait_timeout
for MySQL is relatively short and the JOC Cockpit cannot keep the connection busy over longer periods of time without user interaction - for example, overnight. - See the JOC Cockpit - Troubleshooting - Database Connection to MySQL unavailable after idle timeout article for instructions about how to change the MySQL DBMS
wait_timeout
setting.
- The default
- Find more hints on possible installation problems from the JOC Cockpit - Troubleshooting section.
...
The JOC Cockpit is available for Linux and Windows operating systems and the same setup can be used for installation on 64-bit and on 32-bit systems. See the Which platforms is JobScheduler available for and what platform support is provided? article for more information.
...
- On Windows systems:
- The setup will ask for Elevated Permissions
- On Unix systems:
- Root permissions are required when the JOC Cockpit is to be installed together with Jetty if the Jetty server is to run as a demon (i.e. the Jetty Server and JOC Cockpit are to be automatically started after a reboot of the machine).
- To install the JOC Cockpit without root permissions, the start script should be called with a
-u
the argument, otherwise the sudo prompt will ask for a password.
- To install the JOC Cockpit without root permissions, the start script should be called with a
- Root permissions are required when the JOC Cockpit is to be installed together with Jetty if the Jetty server is to run as a demon (i.e. the Jetty Server and JOC Cockpit are to be automatically started after a reboot of the machine).
...
Step 4 - Jetty Installation & ConfigurationAnchor jetty-base jetty-base - 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:
- e.g.
/home/sos/sos-berlin.com/js7/joc
- e.g.
- Log files are saved by default in:
/var/log/sos-berlin.com//js7/joc
on Linux systems.
- The default path to the jetty_base directory and log files on Windows systems is:
C:\ProgramData\sos-berlin.com\js7\joc
.
- The default path to the jetty_base directory on Linux systems leads to the user's home directory:
- 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
andjoc.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.
- 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.
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 thejetty_base/resources/joc
folder.
Step 8 - Specify the JDBC Driver for the Database Connection
- Specify if a JDBC driver provided with the installation should be used for the Database Connection or whether an external driver is required.
The information shown in this form depends on the DBMS previously selected:- The jTDS JDBC
®
the driver delivered with the JOC Cockpit is only shown as an option when Sybase® or Microsoft SQL Server® DBMSs have been specified. - If you have specified a MySql® DBMS then you will get a checkbox for specifying whether you want to use the MariaDB® JDBC® driver provided with the JobScheduler.
- If you do not check the jTDS JDBC® or the MariaDB JDBC drivers then you must enter your own JDBC® driver in the form shown below.
- The jTDS JDBC
Configuring the JDBC Driver-URL for Oracle RAC databases
The JDBC driver URL for Oracle RAC databases should be entered in the Host field of the database connection form. For example:
Code Block jdbc:oracle:thin:@(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)))
In addition, the Schema and Port fields should be left empty.
- Specify if a JDBC driver provided with the installation should be used for the Database Connection or whether an external driver is required.
Step 9 - Processing the Installation
This step shows the progress of the first part of the installation procedure.
Changes to the installation configuration can no longer be made once this step has started.
Instead, configuration files such as those in thejetty_base/resources/joc
folder can folder can be modified manually and then the JOC Cockpit restarted.
Step 12 - External Processes
This step shows the progress of the second part of the installation procedure.
The information shown in this step will be written to the installation log file, which can be found in the
jetty_base/logs
folder
Step 13 - Completion
The last step of the installation shows a summary of the installation (success/error) and paths to relevant information.
Note that if a problem occurs during installation a warning message will be shown here and a link to the installation log file will be provided.
Operation
- Go to the Initial Operation section of this article for information about opening the JOC Cockpit Interface.
...
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 assigned 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.
...
If the checkbox is not selected then , configuration files will be left in both the JOC Cockpit installation folder and in the Jetty web server installation folder (if installed with the JOC Cockpit).
...
The JOC Cockpit installation procedure contains the option of installing and using the Jetty Web Server that is included in with the JOC Cockpit installation archive. This option was configured in Step 4 of the installation procedure described above. An alternative web server that is capable of handling Java web applications, such as Tomcat or another web server, can also be used.
...
If the JOC Cockpit is being installed without the included Jetty but on top of an installation that has included the JOC Cockpit Jetty then the resources\joc
the folder will not be moved from its location. This means that the "new" resources
the folder will be found after the new installation as follows (if the original installation was carried out in the default directory):
...
The "old" hibernate.cfg.xml
the database configuration file will be read during the installation and the settings suggested as default values. The file itself will be deleted and a new onw one saved in the joc_home
directory.
...
The following listings should make clear the changes that occur in the JOC Cockpit file structure during installation and deinstallationde-installation.
Windows Systems
Default File Structure if Jetty is Installed
...
If the Jetty web server provided with the JOC Cockpit is not installed and no previous configuration files are found in the Program Files
\sos-berlin.com\joc
the directory then files will be added by default only in the Program Files
\sos-berlin.com\joc
directories.
If configuration files are found in Program Files
\sos-berlin.com\joc
the directory then files will be added in the ProgramData\sos-berlin.com\joc
and Program Files
\sos-berlin.com\joc
directories as described above.
...
Clustering and Redundancy
Multiple instances of the JOC Cockpit, with With each instance running on its own server, multiple instances of the JOC Cockpit can either be installed as an active cluster or redundantly. In both cases, installation of the JOC Cockpit instances follows the standard procedure described above. The configuration of the JOC Cockpit instances then follows the instructions provided in the Authentication and Authorization - Configuration article.
...
JOC Cockpit Configuration
...
The main configuration information for the JOC Cockpit can be found after installation in the joc.properties
file.
This file is not changed during an update of the JOC Cockpit.
The default location of this file after the installation is the resources/joc
folder.
Detailed descriptions of each parameter are included in the file and are intended to be self-explanatory.
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
################################################################################
### If JOC Cockpit is used in a cluster then type a title to identify which 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.
log4j.configuration = log4j2.xml
################################################################################
### Path to hibernate configuration file of JOC's database.
### Path can be absolute or relative to this file.
hibernate_configuration_file = hibernate.cfg.xml
################################################################################
### The time (in seconds) to establish the connection with the
### remote host. Default = 2
controller_connection_timeout = 2
################################################################################
### The time (in seconds) waiting for data after the connection
### was established; maximum time of inactivity between two data packets.
### Default = 5
controller_socket_timeout = 5
################################################################################
### Should hostname verification be carried out for https certificate.
### Default true
https_with_hostname_verification = true
################################################################################
### Location, type and password of the truststore which contains the server
### certificates of each JS7 Controller for HTTPS connections. Path can be
### absolute or relative to this file.
#truststore_path = ../../etc/joc.jks
#truststore_type = PKCS12
#truststore_password = secret
################################################################################
### Location, type and passwords of the keystore which contains the client
### certificate for HTTPS connections to the JS7 Controllers. Path can be
### absolute or relative to this file.
#keystore_path = ../../etc/joc.jks
#keystore_type = PKCS12
#keystore_password = secret
#key_password = secret
################################################################################
### Settings for a custom logo file on the login 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 = |
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
This file is used for configuration details that are independent from the JOC Cockpit installation, see chapter The
joc.configuration.properties
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 server SOS JIRA columns key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution serverId 6dc67751-9d67-34cd-985b-194a8cdc9602 key JOC-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
oraccount@domain
or by use of thesamAccountName
or the respective LDAP attribute configured by the JOC Cockpit administrator. Jira server SOS JIRA columns key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution serverId 6dc67751-9d67-34cd-985b-194a8cdc9602 key JOC-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 language xml title Example Listing of jobscheduler.hibernate.cfg.xml linenumbers true collapse true <?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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?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> |
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 thejoc_home\service
directory.
includes certain configuration items which can be used to configure JOC Cockpit. Details about how to configure JOC Cockpit the article JS7 - JOC Cockpit Configuration Items can be followed.
Anchor | ||||
---|---|---|---|---|
|
...