This section provides a detailed description of all configuration object properties to configure Java engines. A Java engine is used to execute a Java fragment. A snippet is provided for each configuration object showing the syntax for specifying all of the configuration values.
Java engine configuration has a configuration type of
com.tibco.ep.dtm.configuration.javaengine
.
The
com.tibco.ep.dtm.configuration.javaengine
configuration type is an example of a configuration that must be
associated with a specific engine. This association is called
engine affinity. Engine affinity can be
explicitly specified using the
JavaEngine.associatedWithEngines
configuration field
(see Table 4.1, “JavaEngine object properties”). Engine
affinity is also implicitly defined by where the engine configuration is
specified.
Implicit engine affinity is set using these rules:
If engine configuration is contained in a fragment archive, the engine configuration is associated with all engines running the fragment.
If engine configuration is specified in a node deploy global
configuration section,
NodeDeploy.globalConfiguration
(see the section called “NodeDeploy”), the engine configuration is
associated with all engines running on all nodes.
name = "node-deploy-configuration" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { globalConfiguration = [ // // Associated with all engines on all nodes // “”” name = "java-engine-configuration" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.javaengine" configuration = { JavaEngine = { ... } } ””” ] nodes = { “A.X" = { ... } “B.X" = { ... } } } }
If engine configuration is specified in the node specific
configuration section of a node deploy configuration,
Node.configuration
(see the section called “Node”), the engine configuration is associated with
all engines running on that node.
name = "node-deploy-configuration" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { nodes = { “A.X" = { configuration = [ // // Associated with all engines on node A.X // “”” name = "java-engine-configuration" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.javaengine" configuration = { JavaEngine = { ... } } ””” ] } "B.X" = { ... } } } }
If engine configuration is specified in the engine specific
configuration section of a node deploy configuration,
EngineBinding.configuration
(see the section called “EngineBinding”), the engine configuration is
associated with only that engine.
name = "node-deploy-configuration" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { nodes = { “A.X" = { engines = { "settlement-engine" = { fragmentIdentifier = "settlement-engine-fragment" configuration = [ // // Associated with settlement-engine on node A.X // “”” name = "java-engine-configuration" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.javaengine" configuration = { JavaEngine = { ... } } ””” ] } } } "B.X" = { ... } } } }
Explicit engine affinity is set using the
JavaEngine.associatedWithEngines
field in
configuration. This field can contain specific engine names or a reguiar
expression identifying multiple engines.
name = "java-engine-configuration" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.javaengine" configuration = { JavaEngine = { // // Associated with settlement-engine // associatedWithEngines = [ "settlement-engine" ] ... } }
Configuration types that support engine affinity define engine specific configuration values that may not work correctly when they are associated with multiple engines on the same machine. For example, if the engine configuration defines a port number, the configuration will work for a single engine, but it will fail if multiple engines are running on the same machine. The configuration can be activated successfully on one engine, but all other engines will get a duplicate port failure. For reasons like this, it is generally best to associate configuration types that support engine affinity with a specific engine.
The Java engine configuration is audited whenever it changes state, e.g. load to active. There are detailed audits for each of the configuration objects in the Java engine configuration file. These are described in the section called “JavaEngine” and the section called “JVM”. There are also these global audits:
All Java engine configurations for a specific engine must have the same configuration name. Attempting to load a Java engine configuration for an engine with an already active configuration using a different configuration name will cause an audit failure during configuration activation.
Java engine configurations can only be loaded and activated during engine start-up. Attempting to activate a Java engine configuration that has an engine affinity with an already running engine will cause an audit failure during configuration activation.
The JavaEngine
object is the top-level
container for the Java engine configuration. Figure 4.1, “JavaEngine relationships” shows the relationships to
other configuration objects.
A detailed description of the configuration object properties is in Table 4.1, “JavaEngine object properties” and a snippet for these properties is in Example 4.1, “JavaEngine object snippet”.
Table 4.1. JavaEngine object properties
Name | Type | Description |
| String [ ] | Engines associated with this configuration. Each entry
can be a specific engine name or a regular expression that
applies to more than one engine. If present, there must be at
least one element in the array . If this field is not set the
configuration is associated with all engines. See the Javadoc
for java.util.regex.Pattern for the regular
expression syntax. Optional. No default, which causes the
configuration to be associated with all engines. See also the section called “Engine affinity” for implicit default
behavior. |
| JVM configuration object | JVM configuration object. Optional. See the section called “JVM” for default values. |
externalClassPath | String [ ] | Jar files and class hierarchies to add to the engine's class path. Paths must be absolute and in Java (forward-slash) format. Optional. No default value. |
externalNativeLibraryPath | Associate array of String arrays with the key an
operating system enumeration. The valid enumeration values are
macos_x86_64 ,
linux_x86_64 , or
windows_x86_64 . | An associative array specifying native library paths to add to an engine's library search path. Values are arrays of library paths. Paths must be absolute and be in the format appropriate for their operating system. Optional. No default. |
systemProperties | Associative array of Strings with the system property name the key value | A list of Java system properties that will be set in each engine instance. Optional. No default value. |
jvmArgs | String [ ] | A list of JVM arguments used for each engine's JVM. JVM arguments can also be specified on the deploy tool command line (see Transactional Memory Developers Guide for details). JVM arguments specified on the deploy tool command line override the same JVM argument specified in this configuration property. Optional. No default. |
Example 4.1. JavaEngine object snippet
name = "java-engine-configuration" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.javaengine" configuration = { JavaEngine = { associatedWithEngines = [ "javaengine", "otherengine[0-9]" ] jvm = { ... } externalClassPath = [ "/an/external.jar" "/another/external.jar" "/a/class/file/hierarchy/root" ] externalNativeLibraryPath = { "macos_x86_64" = [ "/an/external/native" "/another/external/native" ] "linux_x86_64" = [ "/an/external/native" "/another/external/native" ] } systemProperties = { prop1 = "val1" prop2 = "val2" prop3 = "val3" } jvmArgs = [ "-Xmx1024m" "-Xms512m" "-XX:MaxPermSize=768m" "-Xdebug" "-Xnoagent" "-Djava.compiler=NONE" "-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005" ] } }
The JVM
object defines product specific
configuration values. Figure 4.2, “JVM relationships” shows the
relationships to other configuration objects.
A detailed description of the configuration object properties is in Table 4.2, “JVM object properties” and a snippet for these properties is in Example 4.2, “JVM object snippet”.
Table 4.2. JVM object properties
Example 4.2. JVM object snippet
name = "java-engine-configuration" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.javaengine" configuration = { JavaEngine = { jvm = { minimumDispatchThreads = 10 maximumDispatchThreads = 2000 shutdownTimerSeconds = 60 timerParallelism = 1 timerResolutionMilliseconds = 1000 } } }