WebLogic Property File Setup
This section shows you the configurations that you need to setup in the WebLogic property file to deploy TAFJ.
Environment Configuration
WebLogic embeds ANTLR library, which conflicts with the TAFJ ANTLR version. If you use inappropriate version, then the following exception is thrown:
(CharScanner; panic: ClassNotFoundException: com.temenos.tafj.jql.jQLToken).
Setup WebLogic Script
To setup WebLogic classpath, you need to add the following configurations in the %WEBLOGIC_HOME%\user_projects\domains\TAFJ\bin\setDomainEnv.cmd(or sh)file below the @REM IF USER_MEM_ARGS the environment variable is set, use it to override ALL MEM_ARGS values line:
@REM TAFJ Memory settings set USER_MEM_ARGS=-Xms2G -Xmx4G
@REM ADD EXTENSIONS TO CLASSPATHS @REM TAFJ Classpath set TAFJ_HOME=[TAFJ_HOME] set T24_HOME=[T24_HOME] @REM TAFJ antlr lib set EXT_PRE_CLASSPATH=%TAFJ_HOME%\lib\antlr.jar @REM TAFJ T24 CLASSPATH set TAFJ_T24_CLASSPATH=%TAFJ_HOME%\lib\log4j-api.jar;%TAFJ_HOME%\lib\log4j-core.jar;%TAFJ_HOME%\lib\T24CollectorClient.jar;%TAFJ_HOME%\lib\TemenosSecurity.jar;%TAFJ_HOME%\lib\TAFJCommon.jar;%TAFJ_HOME%\lib\TAFJCache.jar;%TAFJ_HOME%\lib\cache-api.jar;%TAFJ_HOME%\lib\TAFJCompiler.jar;%TAFJ_HOME%\lib\TAFJCore.jar;%TAFJ_HOME%\lib\TAFJClient.jar;%TAFJ_HOME%\lib\TAFJLocking.jar;%TAFJ_HOME%\lib\TAFJLogging.jar;%TAFJ_HOME%\lib\TAFJTelnetD.jar;%TAFJ_HOME%\lib\TAFJHealthCheck.jar;%TAFJ_HOME%\lib\TAFJConfiguration.jar;%TAFJ_HOME%\lib\TAFJDBImport.jar;%TAFJ_HOME%\lib\jansi.jar;%TAFJ_HOME%\lib\TAFJVersion.jar;%TAFJ_HOME%\TAFJBasic.jar;%TAFJ_HOME%\ext\tComponentFramework.jar @REM JDBC Driver not already in the CLASSPATH for weblogic version < 12.1.3 only @REM i.e Oracle 11g: set TAFJ_T24_CLASSPATH=%TAFJ_T24_CLASSPATH%;%TAFJ_HOME%\dbdrivers\oracle-11g\xmlparserv2.jar;%TAFJ_HOME%\dbdrivers\oracle-11g\xdb.jar; @REM i.e Oracle 12c: set TAFJ_T24_CLASSPATH=%TAFJ_T24_CLASSPATH%;%TAFJ_HOME%\dbdrivers\oracle-12c\xmlparserv2.jar;%TAFJ_HOME%\dbdrivers\oracle-12c\xdb6.jar; @REM i.e H2 : set TAFJ_T24_CLASSPATH=%TAFJ_T24_CLASSPATH%;%TAFJ_HOME%\dbdrivers\h2-1.3.168\h2-1.3.168.jar set TAFJ_T24_CLASSPATH=%TAFJ_T24_CLASSPATH%;%TAFJ_HOME%\dbdrivers\h2-1.3.168\h2-1.3.168.jar @REM T24 CLASSPATH set TAFJ_T24_CLASSPATH=%TAFJ_T24_CLASSPATH%;%T24_HOME%\t24lib\* set EXT_POST_CLASSPATH=%TAFJ_T24_CLASSPATH%
You can use wildcard * when you want to load all JARs contained in a folder. That is to avoid listing the 900 Temenos Transact JARs, you can set as TAFJ_T24_CLASSPATH=%TAFJ_T24_CLASSPATH%;%T24_HOME%\*
Validate that red word match deployment environment. If you are on a UNIX, Linux or zOS platform the separator file is / instead of \ and ; instead of :.
Check ojdbc6.jar version from the server/lib or oracle_common/modules. It will be different depending on your application server version.

None of the oracle JARs need to be added to the classpath as they are part of WebLogic distribution.
Weblogic version and JARs matching.
WLS 10.3.6 – 12.1.1 – 12.1.2 |
ojdbc6.jar 11.2.0.3 |
xdb.jar |
WLS 12.1.2 – 12.1.3 |
ojdbc6.jar 12.1.0.X.0 |
xdb6.jar |
Oracle source - SQL XML support.
http://docs.oracle.com/middleware/1212/wls/JDBCA/ds_12cdriver.htm#JDBCA272
http://docs.oracle.com/middleware/1213/wls/JDBCA/ds_12cdriver.htm#JDBCA272
This feature is not enabled in WebLogic by default and must be installed by adding xmlparserv2_sans_jaxp_services.jar and xdb6.jar to the application server classpath.
WebLogic is distributed with JDBC drivers and the additional JDBC SQL XML drivers must match the database version for the installed JDBC drivers, which must be equal to or greater than your installed Oracle Database version.
The JAR files can be found on the Oracle web page, or in the product directory of your database (check ${ORACLE_HOME}/jdbc/lib, ${ORACLE_HOME}/rdbms/jlib and ${ORACLE_HOME}/xdk/lib).

Since PB201607 the logging API being used is Log4j 2.
To keep using former Log4j 1.2 version with existing TAFJTrace configuration, simply replace in the classpath setup log4j-api.jar and log4j-core.jar with log4j 12 jar from %TAFJ_HOME%\3rdParty\logging\log4j12\log4j.jar.
That is
@REM TAFJ T24 CLASSPATH set TAFJ_T24_CLASSPATH==%TAFJ_HOME%\lib\log4j.jar;%TAFJ_HOME%\lib\T24CollectorClient.jar;%TAFJ_HOME%\lib\TemenosSecurity.jar;%TAFJ_HOME%\lib\TAFJCommon.jar;%TAFJ_HOME%\lib\TAFJCache.jar;%TAFJ_HOME%\lib\cache-api.jar;%TAFJ_HOME%\lib\TAFJCompiler.jar;%TAFJ_HOME%\lib\TAFJCore.jar;%TAFJ_HOME%\lib\TAFJClient.jar;%TAFJ_HOME%\lib\TAFJLocking.jar;%TAFJ_HOME%\lib\TAFJLogging.jar;%TAFJ_HOME%\lib\TAFJTelnetD.jar;%TAFJ_HOME%\lib\TAFJHealthCheck.jar;%TAFJ_HOME%\lib\TAFJConfiguration.jar;%TAFJ_HOME%\lib\TAFJDBImport.jar;%TAFJ_HOME%\lib\jansi.jar;%TAFJ_HOME%\lib\TAFJVersion.jar;%TAFJ_HOME%\TAFJBasic.jar;%TAFJ_HOME%\ext\tComponentFramework.jar
You will also need to provide as a server JVM argument the logging api to use.
-Dtemenos.log.api=LOG4J

TAFJ can also be configured to use SLF4J instead of the default log4j 2 provided configuration.
As WebLogic is also embedding its own SLF4J distribution and default binding to java util logging API, to avoid TAFJ logs to be directed to java util logging, weblogic classpath has to be modified to use provided SLF4J version and the desired SLF4J to back-end bridge. That is to use SLF4J + Log4j 1.2.
@REM TAFJ slf4j and binding to be set only in case of SLF4J is to be used set EXT_PRE_CLASSPATH=%EXT_PRE_CLASSPATH%;%TAFJ_HOME%\lib\slf4j-api.jar; %TAFJ_HOME%\lib\slf4j-log4j12.jar; @REM TAFJ T24 CLASSPATH set TAFJ_T24_CLASSPATH=%TAFJ_HOME%\lib\log4j.jar;%TAFJ_HOME%\lib\T24CollectorClient.jar; %TAFJ_HOME%\lib\TemenosSecurity.jar;%TAFJ_HOME%\lib\TAFJCommon.jar;%TAFJ_HOME%\lib\TAFJCache.jar;%TAFJ_HOME%\lib\cache-api.jar;%TAFJ_HOME%\lib\TAFJCompiler.jar;%TAFJ_HOME%\lib\TAFJCore.jar;%TAFJ_HOME%\lib\TAFJClient.jar;%TAFJ_HOME%\lib\TAFJLocking.jar;%TAFJ_HOME%\lib\TAFJLogging.jar;%TAFJ_HOME%\lib\TAFJTelnetD.jar;%TAFJ_HOME%\lib\TAFJVersion.jar;%TAFJ_HOME%\ext\TAFJBasic.jar;%TAFJ_HOME%\ext\tComponentFramework.jar
You will also need to provide as a server JVM argument the logging api to use.
-Dtemenos.log.api=SLF4J and the logging back-end to use
-Dtemenos.log.backend=LOG4J
UAT / Production Memory Setting
Set USER_MEM_ARGS=-Xms256m -Xmx1024m -XX:MaxPermSize=256m
For a UAT and production environment, you must refine this setting depending on your expected number of sessions and tSA. A session or tSA memory impact vary depending on the job done, it will be at least 20MB and could be up to 60MB.
When planning to run for example 80 interactive sessions and 40 tSA on a server, you can dimension the max memory for sessions by applying:
120 sessions * average 50MB = 6G max heap size.
You will have -Xmx6G
A good practice could be to set initial heap size to same value -Xms6G
If you are interested to monitor that more precisely, you could use a monitoring tool like Visual VM.
Take a heapdump when running the expected jobs, isolate the jSession objects and compute the retained size.
This is for one session.
This for 16 sessions.
You could also simply use TAFJ technical monitor to follow the memory evolution graph over the time and refine your setup.

Error | Solution |
---|---|
Java.lang.OutOfMemoryError: Java heap space |
Increase -Xmx max heap size parameter |
Java.lang.OutOfMemoryError: PermGen space |
Increase -XX:MaxPermSize max perm gen parameter |

Snapshot of the heap to analyse the content when getting a OOM error.
XX:+HeapDumpOnOutOfMemoryError
XX:HeapDumpPath=/some/path/
Garbage collection logs, detailed information about Garbage Collection, could be applied as there is a low overhead, display the amount of memory released
-XX:+PrintGC or -verbose:gc
Print messages at garbage collection, simple logging mode, i.e.
[GC 370562K->208870K(964096K), 0.0138438 secs]
[Full GC 174246K->81336K(853504K), 0.7733941 secs]
-XX:+PrintGCDetails
Same as above but print more details at garbage collection, differs depending on GC algorithm.
-Xloggc:<file> equivalent to -XX:+PrintGC -XX:+PrintGCTimeStamps
Log GC verbose output to specified file with time and date information
In this topic