Monday 24 September 2018

IBM Operational Decision Manager - ODM on Liberty

A colleague asked me for some guidance on deploying the latest version of ODM Rules, 8.9.2, to a WebSphere Liberty Profile (WLP) environment.

Whilst I didn't have the 8.9.2 version to-hand ( downloading it as I type ), I did have 8.9.1….

So here we go ….

Prepare File Systems ( as root )

mkdir /opt/ibm/ODM89
mkdir /opt/ibm/Java
chown -R wasadmin:wasadmins /opt/ibm/ODM89
chown -R wasadmin:wasadmins /opt/ibm/Java

Install Java 8

/mnt/Java8/ibm-java-jre-8.0-3.12-x86_64-archive.bin -i silent -f /mnt/ResponseFiles/installer.properties 1>console.txt 2>&1

Setup Path

vi ~/.bashrc

Append: -

JAVA_HOME=/opt/ibm/Java/jre
PATH=$PATH:$JAVA_HOME/bin


source ~/.bashrc

Validate Java

java -version

java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 8.0.5.6 - pxa6480sr5fp6-20171124_02(SR5 FP6))
IBM J9 VM (build 2.9, JRE 1.8.0 Linux amd64-64 Compressed References 20171122_371101 (JIT enabled, AOT enabled)
OpenJ9   - 8e3c85d
OMR      - 713f08e
IBM      - c041ee8)
JCL - 20171113_01 based on Oracle jdk8u151-b12


Install WLP

jar xvf /mnt/WLP/JARs/wlp-nd-all-17.0.0.4.jar

Fixup Executable Bits

chmod +x /home/wasadmin/wlp/bin/server
chmod +x /home/wasadmin/wlp/bin/securityUtility


Setup Path

vi ~/.bashrc

Amend: -

PATH=$PATH:$JAVA_HOME/bin:/home/wasadmin/wlp/bin

source ~/.bashrc

Validate WLP

server version

WebSphere Application Server 17.0.0.4 (1.0.19.201712061531) on IBM J9 VM, version pxa6480sr3fp12-20160919_01 (SR3 FP12) (en_GB)

See what's available to install

/opt/ibm/InstallationManager/eclipse/tools/imcl listAvailablePackages -repositories /mnt/ODM891/disk1/DecisionServerRules/repository.config

com.ibm.websphere.odm.ds.rules.v89_8.9.1000.20171018_1824

Install ODM

/opt/ibm/InstallationManager/eclipse/tools/imcl -input /mnt/ResponseFiles/installODM891_RES.rsp -acceptLicense

Installed com.ibm.websphere.odm.ds.rules.v89_8.9.1000.20171018_1824 to the /opt/ibm/ODM89 directory.

Validate WARs

ls -al /opt/ibm/ODM89/executionserver/applicationservers/WLP855/

...
-rw-r--r-- 1 wasadmin wasadmins 51778251 Oct 11  2017 DecisionRunner.war
-rw-r--r-- 1 wasadmin wasadmins 40265601 Oct 11  2017 DecisionService.war
-rw-r--r-- 1 wasadmin wasadmins 31412040 Oct 11  2017 res.war
-rw-r--r-- 1 wasadmin wasadmins 52279630 Oct 11  2017 testing.war

...

Validate Derby

ls -al /opt/ibm/ODM89/shared/tools/derby/lib/derby.jar

...
-rw-r--r-- 1 wasadmin wasadmins 2838580 Oct 12  2017 /opt/ibm/ODM89/shared/tools/derby/lib/derby.jar
...

Create WLP server

server create odm

Deploy Apps

cp /opt/ibm/ODM89/executionserver/applicationservers/WLP855/res.war /home/wasadmin/wlp/usr/servers/odm/apps/
cp /opt/ibm/ODM89/executionserver/applicationservers/WLP855/DecisionService.war /home/wasadmin/wlp/usr/servers/odm/apps/

Deploy Derby

mkdir /home/wasadmin/wlp/usr/shared/resources/derby
cp /opt/ibm/ODM89/shared/tools/derby/lib/derby.jar /home/wasadmin/wlp/usr/shared/resources/derby


Configure server.xml

vi /home/wasadmin/wlp/usr/servers/odm/server.xml

Amend to: -

<?xml version="1.0" encoding="UTF-8"?>
<server description="new server">

    <featureManager>
        <feature>servlet-3.1</feature>
        <feature>jsp-2.3</feature>
        <feature>jdbc-4.1</feature>
        <feature>appSecurity-2.0</feature>
        <feature>concurrent-1.0</feature>
    </featureManager>

    <httpEndpoint id="defaultHttpEndpoint"
                  host="*"
                  httpPort="10080"
                  httpsPort="10443" />

    <jdbcDriver id="DerbyJdbcDriver" libraryRef="DerbyLib"/>
    <library id="DerbyLib" filesetRef="DerbyFileset"/>
    <fileset id="DerbyFileset" dir="${shared.resource.dir}/derby" includes="derby.jar"/>
    <dataSource id="derbyEmbedded" isolationLevel="TRANSACTION_READ_COMMITTED" jndiName="jdbc/resdatasource" jdbcDriverRef="DerbyJdbcDriver">
        <properties.derby.embedded
            databaseName="${shared.config.dir}/derby/resdb"
            createDatabase="create"
            user="resdbUser"
            password="resdbUser"
        />
    </dataSource>

    <basicRegistry id="basic" realm="customRealm">
        <user name="resAdmin" password="resAdmin"/>
        <user name="resDeploy" password="resDeploy"/>
        <user name="resMonitor" password="resMonitor"/>
        <group name="resAdministrators">
                    <member name="resAdmin"/>
        </group>
        <group name="resDeployers">
                    <member name="resDeploy"/>
        </group>
        <group name="resMonitors">
                    <member name="resMonitor"/>
        </group>
    </basicRegistry>

    <application type="war" id="res" name="res" location="${server.config.dir}/apps/res.war">
           <application-bnd>
               <security-role name="resAdministrators">
                       <group name="resAdministrators"/>
               </security-role>
               <security-role name="resDeployers">
                       <group name="resDeployers"/>
               </security-role>
               <security-role name="resMonitors">
                       <group name="resMonitors"/>
               </security-role>
           </application-bnd>
    </application>

    <application type="war" id="DecisionService"
      name="DecisionService"
      location="${server.config.dir}/apps/DecisionService.war">
    </application>

    <applicationManager autoExpand="true"/>

    <featureManager>
           <feature>ssl-1.0</feature>
    </featureManager>
    <keyStore id="defaultKeyStore" password="{xor}Lz4sLChvLTs=" />

</server>

Create SSL Certificate

/home/wasadmin/wlp/bin/securityUtility createSSLCertificate --server=odm --password=passw0rd --validity=365

...
Creating keystore /home/wasadmin/wlp/usr/servers/odm/resources/security/key.jks

Created SSL certificate for server odm. The certificate is created with CN=workflow.uk.ibm.com,OU=odm,O=ibm,C=us as the SubjectDN.

Add the following lines to the server.xml to enable SSL:

    <featureManager>
        <feature>ssl-1.0</feature>
    </featureManager>
    <keyStore id="defaultKeyStore" password="{xor}Lz4sLChvLTs=" />

...

Start WLP

server start odm

...
Starting server odm.
Server odm started with process ID 78434.

...

Monitor Logs

cat /home/wasadmin/wlp/usr/servers/odm/logs/console.log

...
Launching odm (WebSphere Application Server 17.0.0.4/wlp-1.0.19.201712061531) on IBM J9 VM, version pxa6480sr3fp12-20160919_01 (SR3 FP12) (en_GB)
[AUDIT   ] CWWKE0001I: The server odm has been launched.
[AUDIT   ] CWWKZ0058I: Monitoring dropins for applications.
[AUDIT   ] CWWKT0016I: Web application available (default_host): http://workflow.uk.ibm.com:10080/DecisionService/
[AUDIT   ] CWWKZ0001I: Application DecisionService started in 1.179 seconds.
[AUDIT   ] CWWKT0016I: Web application available (default_host): http://workflow.uk.ibm.com:10080/res/
[AUDIT   ] CWWKZ0001I: Application res started in 3.248 seconds.
[AUDIT   ] CWWKF0012I: The server installed the following features: [jsp-2.3, concurrent-1.0, servlet-3.1, ssl-1.0, jndi-1.0, distributedMap-1.0, appSecurity-2.0, jdbc-4.1, el-3.0].
[AUDIT   ] CWWKF0011I: The server odm is ready to run a smarter planet.
[ERROR   ] Initialization failed
The persistence check failed. Diagnostic report:
DAO Class Name = ilog.rules.res.persistence.impl.jdbc.IlrGenericRepositoryDAO
Database Product Name = Apache Derby
Database Product Version = 10.10.2.0 - (1582446)
Driver Name = Apache Derby Embedded JDBC Driver
Driver Product Version = 10.10.2.0 - (1582446)
Ruleset enabled view test passed = False
RuleApp properties table test passed = False
RuleApps table test passed = False
Ruleset properties table test passed = False
Ruleset resources table test passed = False
Rulesets table test passed = False
Is Transaction Supported = True
JDBC URL = jdbc:derby:/home/wasadmin/wlp/usr/shared/config//derby/resdb
Username = resdbUser.

...

cat /home/wasadmin/wlp/usr/servers/odm/logs/console.log

...
Launching odm (WebSphere Application Server 17.0.0.4/wlp-1.0.19.201712061531) on IBM J9 VM, version pxa6480sr3fp12-20160919_01 (SR3 FP12) (en_GB)
[AUDIT   ] CWWKE0001I: The server odm has been launched.
[AUDIT   ] CWWKZ0058I: Monitoring dropins for applications.
[AUDIT   ] CWWKT0016I: Web application available (default_host): http://workflow.uk.ibm.com:10080/DecisionService/
[AUDIT   ] CWWKZ0001I: Application DecisionService started in 1.179 seconds.
[AUDIT   ] CWWKT0016I: Web application available (default_host): http://workflow.uk.ibm.com:10080/res/
[AUDIT   ] CWWKZ0001I: Application res started in 3.248 seconds.
[AUDIT   ] CWWKF0012I: The server installed the following features: [jsp-2.3, concurrent-1.0, servlet-3.1, ssl-1.0, jndi-1.0, distributedMap-1.0, appSecurity-2.0, jdbc-4.1, el-3.0].
[AUDIT   ] CWWKF0011I: The server odm is ready to run a smarter planet.
[ERROR   ] Initialization failed
The persistence check failed. Diagnostic report:
DAO Class Name = ilog.rules.res.persistence.impl.jdbc.IlrGenericRepositoryDAO
Database Product Name = Apache Derby
Database Product Version = 10.10.2.0 - (1582446)
Driver Name = Apache Derby Embedded JDBC Driver
Driver Product Version = 10.10.2.0 - (1582446)
Ruleset enabled view test passed = False
RuleApp properties table test passed = False
RuleApps table test passed = False
Ruleset properties table test passed = False
Ruleset resources table test passed = False
Rulesets table test passed = False
Is Transaction Supported = True
JDBC URL = jdbc:derby:/home/wasadmin/wlp/usr/shared/config//derby/resdb
Username = resdbUser.
[wasadmin@workflow ~]$ cat /home/wasadmin/wlp/usr/servers/odm/logs/messages.log
********************************************************************************
product = WebSphere Application Server 17.0.0.4 (wlp-1.0.19.201712061531)
wlp.install.dir = /home/wasadmin/wlp/
java.home = /opt/ibm/Java/jre
java.version = 1.8.0
java.runtime = Java(TM) SE Runtime Environment (pxa6480sr3fp12-20160919_01 (SR3 FP12))
os = Linux (3.10.0-862.11.6.el7.x86_64; amd64) (en_GB)
process = 78712@workflow.uk.ibm.com
********************************************************************************
[23/09/18 09:35:58:406 BST] 00000001 com.ibm.ws.kernel.launch.internal.FrameworkManager           A CWWKE0001I: The server odm has been launched.
[23/09/18 09:35:59:255 BST] 00000001 com.ibm.ws.kernel.launch.internal.FrameworkManager           I CWWKE0002I: The kernel started after 1.007 seconds
[23/09/18 09:35:59:295 BST] 00000023 com.ibm.ws.kernel.feature.internal.FeatureManager            I CWWKF0007I: Feature update started.
[23/09/18 09:35:59:710 BST] 0000001a com.ibm.ws.security.ready.internal.SecurityReadyServiceImpl  I CWWKS0007I: The security service is starting...
[23/09/18 09:35:59:973 BST] 00000027 com.ibm.ws.tcpchannel.internal.TCPChannel                    I CWWKO0219I: TCP Channel defaultHttpEndpoint has been started and is now listening for requests on host *  (IPv6) port 10080.
[23/09/18 09:35:59:979 BST] 0000001a com.ibm.ws.app.manager.internal.monitor.DropinMonitor        A CWWKZ0058I: Monitoring dropins for applications.
[23/09/18 09:36:00:196 BST] 0000002f com.ibm.ws.tcpchannel.internal.TCPChannel                    I CWWKO0219I: TCP Channel defaultHttpEndpoint-ssl has been started and is now listening for requests on host *  (IPv6) port 10443.
[23/09/18 09:36:00:214 BST] 0000001a ibm.ws.security.authentication.internal.jaas.JAASServiceImpl I CWWKS1123I: The collective authentication plugin with class name NullCollectiveAuthenticationPlugin has been activated.
[23/09/18 09:36:00:451 BST] 0000002d com.ibm.ws.security.ready.internal.SecurityReadyServiceImpl  I CWWKS0008I: The security service is ready.
[23/09/18 09:36:00:454 BST] 0000002d com.ibm.ws.security.token.ltpa.internal.LTPAKeyCreateTask    I CWWKS4105I: LTPA configuration is ready after 0.278 seconds.
[23/09/18 09:36:00:535 BST] 0000001a com.ibm.ws.cache.ServerCache                                 I DYNA1001I: WebSphere Dynamic Cache instance named baseCache initialized successfully.
[23/09/18 09:36:00:536 BST] 0000001a com.ibm.ws.cache.ServerCache                                 I DYNA1071I: The cache provider default is being used.
[23/09/18 09:36:00:536 BST] 0000001a com.ibm.ws.cache.CacheServiceImpl                            I DYNA1056I: Dynamic Cache (object cache) initialized successfully.
[23/09/18 09:36:00:615 BST] 0000002b com.ibm.ws.app.manager.AppMessageHelper                      I CWWKZ0018I: Starting application DecisionService.
[23/09/18 09:36:00:615 BST] 0000002c com.ibm.ws.app.manager.AppMessageHelper                      I CWWKZ0018I: Starting application res.
[23/09/18 09:36:01:770 BST] 0000002b com.ibm.ws.session.WASSessionCore                            I SESN8501I: The session manager did not find a persistent storage location; HttpSession objects will be stored in the local application server's memory.
[23/09/18 09:36:01:784 BST] 0000002b com.ibm.ws.webcontainer.osgi.webapp.WebGroup                 I SRVE0169I: Loading Web Module: DecisionService.
[23/09/18 09:36:01:787 BST] 0000002b com.ibm.ws.webcontainer                                      I SRVE0250I: Web Module DecisionService has been bound to default_host.
[23/09/18 09:36:01:788 BST] 0000002b com.ibm.ws.http.internal.VirtualHostImpl                     A CWWKT0016I: Web application available (default_host): http://workflow.uk.ibm.com:10080/DecisionService/
[23/09/18 09:36:01:794 BST] 0000002b com.ibm.ws.app.manager.AppMessageHelper                      A CWWKZ0001I: Application DecisionService started in 1.179 seconds.
[23/09/18 09:36:02:003 BST] 00000025 com.ibm.ws.webcontainer.osgi.mbeans.PluginGenerator          I SRVE9103I: A configuration file for a web server plugin was automatically generated for this server at /home/wasadmin/wlp/usr/servers/odm/logs/state/plugin-cfg.xml.
[23/09/18 09:36:02:006 BST] 0000002f com.ibm.ws.session.WASSessionCore                            I SESN0176I: A new session context will be created for application key default_host/DecisionService
[23/09/18 09:36:02:035 BST] 0000002f com.ibm.ws.util                                              I SESN0172I: The session manager is using the Java default SecureRandom implementation for session ID generation.
[23/09/18 09:36:02:287 BST] 0000002f com.ibm.ws.cache.CacheServiceImpl                            I DYNA1056I: Dynamic Cache (object cache) initialized successfully.
[23/09/18 09:36:02:356 BST] 0000002f com.ibm.rules.res.htds                                       I The operating system is Linux amd64 3.10.0-862.11.6.el7.x86_64.
[23/09/18 09:36:02:357 BST] 0000002f com.ibm.rules.res.htds                                       I The JVM is IBM Corporation IBM J9 VM 2.8.
[23/09/18 09:36:02:357 BST] 0000002f com.ibm.rules.res.htds                                       I The class path is /home/wasadmin/wlp/bin/tools/ws-server.jar:/home/wasadmin/wlp/bin/tools/ws-javaagent.jar:/home/wasadmin/wlp/bin/tools/ws-javaagent.jar.
[23/09/18 09:36:02:357 BST] 0000002f com.ibm.rules.res.htds                                       I Logging started. Decision service version: Decision Server 8.9.1.0 2017-10-11 14:45:02
[23/09/18 09:36:02:633 BST] 0000002f com.ibm.rules.res.execution                                  I Logging started Decision Server XU - 8.9.1.0 - 2017-10-11 14:32:25.
[23/09/18 09:36:02:634 BST] 0000002f com.ibm.rules.res.execution                                  I The JDK logging level is set to: INFO.
[23/09/18 09:36:02:634 BST] 0000002f com.ibm.rules.res.execution                                  I The operating system is Linux amd64 3.10.0-862.11.6.el7.x86_64.
[23/09/18 09:36:02:634 BST] 0000002f com.ibm.rules.res.execution                                  I The JVM is IBM Corporation IBM J9 VM 2.8.
[23/09/18 09:36:02:635 BST] 0000002f com.ibm.rules.res.execution                                  I The class path is /home/wasadmin/wlp/bin/tools/ws-server.jar:/home/wasadmin/wlp/bin/tools/ws-javaagent.jar:/home/wasadmin/wlp/bin/tools/ws-javaagent.jar.
[23/09/18 09:36:02:733 BST] 0000002f com.ibm.rules.res.execution                                  I Found user settings in file : ra.xml.
[23/09/18 09:36:02:733 BST] 0000002f com.ibm.rules.res.execution                                  I Loading execution unit (XU) settings from the file descriptor.
[23/09/18 09:36:02:778 BST] 0000002f com.ibm.rules.res.execution                                  I The XU logger uses JDK logging: true.
[23/09/18 09:36:02:779 BST] 0000002f com.ibm.rules.res.execution                                  I Sets the XU configuration property rulesetCacheProperties to ruleset.cache.maintenance.period=300.
[23/09/18 09:36:02:779 BST] 0000002f com.ibm.rules.res.execution                                  I Sets the XU configuration property persistenceType to datasource.
[23/09/18 09:36:02:780 BST] 0000002f com.ibm.rules.res.execution                                  I Sets the XU configuration property caCacheProps to {}.
[23/09/18 09:36:02:780 BST] 0000002f com.ibm.rules.res.execution                                  I Sets the XU configuration property defaultConnectionManagerProperties to {}.
[23/09/18 09:36:02:781 BST] 0000002f com.ibm.rules.res.execution                                  I Sets the XU configuration property asynchronousRulesetParsing to true.
[23/09/18 09:36:02:781 BST] 0000002f com.ibm.rules.res.execution                                  I Sets the XU configuration property rulesetUsageMonitorEnabled to true.
[23/09/18 09:36:02:785 BST] 0000002f com.ibm.rules.res.execution                                  I Sets the XU configuration property profilingEnabled to true.
[23/09/18 09:36:02:788 BST] 0000002f com.ibm.rules.res.execution                                  I Sets the XU configuration property persistenceProperties to {XOM_PERSISTENCE_JNDI_NAME=jdbc/resdatasource, XOM_PERSISTENCE_TYPE=datasource, JNDI_NAME=jdbc/resdatasource}.
[23/09/18 09:36:02:789 BST] 0000002f com.ibm.rules.res.execution                                  I Sets the XU configuration property traceLevel to FINE.
[23/09/18 09:36:02:790 BST] 0000002f com.ibm.rules.res.execution                                  I Sets the XU configuration property systemOutLoggingEnabled to false.
[23/09/18 09:36:02:790 BST] 0000002f com.ibm.rules.res.execution                                  I Sets the XU configuration property memoryProfilerIncludedPackageNames to com.ibm.rules.,java.,ilog.,com.ibm.rules.org.objectweb.asm.,org.apache.bcel.,javax.xml.parsers.,javax.xml.namespace.,javax.xml.transform..
[23/09/18 09:36:02:791 BST] 0000002f com.ibm.rules.res.execution                                  I Sets the XU configuration property traceAutoFlush to false.
[23/09/18 09:36:02:792 BST] 0000002f com.ibm.rules.res.execution                                  I Sets the XU configuration property rulesetFactoryProperties to .
[23/09/18 09:36:02:794 BST] 0000002f com.ibm.rules.res.execution                                  I Sets the XU configuration property plugins to {protocol=jmx,xuName=xuHTDS,pluginClass=Management},{pluginClass=HTDS}.
[23/09/18 09:36:02:795 BST] 0000002f com.ibm.rules.res.execution                                  I Creates the XU plug-in with properties {protocol=jmx, xuName=xuHTDS, pluginClass=Management}.
[23/09/18 09:36:02:815 BST] 0000002f com.ibm.rules.res.execution                                  I Creates the XU plug-in with properties {pluginClass=HTDS}.
[23/09/18 09:36:02:826 BST] 0000002f com.ibm.rules.res.execution                                  I Starts the XU plug-in com.ibm.rules.res.xu.management.XUManagementPlugin@271bf2ea.
[23/09/18 09:36:02:829 BST] 0000002f com.ibm.rules.res.execution.xu.plugin.management             I GBRXU4002I: Starts the MBean plug-in.
[23/09/18 09:36:02:879 BST] 0000002f com.ibm.rules.res.execution                                  I Starts the XU plug-in com.ibm.rules.htds.plugin.cci.internal.DLGeneratorPlugin@abf668bc.
[23/09/18 09:36:02:942 BST] 0000002f com.ibm.ws.jca.cm.ConnectorService                           I J2CA8050I: An authentication alias should be used instead of defining a user name and password on dataSource[derbyEmbedded].
[23/09/18 09:36:03:136 BST] 0000002f com.ibm.ws.recoverylog.spi.RecoveryDirectorImpl              I CWRLS0010I: Performing recovery processing for local WebSphere server (odm).
[23/09/18 09:36:03:182 BST] 00000034 com.ibm.ws.recoverylog.spi.LogHandle                         I CWRLS0007I: No existing recovery log files found in /home/wasadmin/wlp/usr/servers/odm/tranlog//tranlog. Cold starting the recovery log.
[23/09/18 09:36:03:183 BST] 00000034 com.ibm.ws.recoverylog.spi.LogFileHandle                     I CWRLS0006I: Creating new recovery log file /home/wasadmin/wlp/usr/servers/odm/tranlog//tranlog/log1.
[23/09/18 09:36:03:188 BST] 00000034 com.ibm.ws.recoverylog.spi.LogFileHandle                     I CWRLS0006I: Creating new recovery log file /home/wasadmin/wlp/usr/servers/odm/tranlog//tranlog/log2.
[23/09/18 09:36:03:333 BST] 00000034 com.ibm.ws.recoverylog.spi.LogHandle                         I CWRLS0007I: No existing recovery log files found in /home/wasadmin/wlp/usr/servers/odm/tranlog//partnerlog. Cold starting the recovery log.
[23/09/18 09:36:03:333 BST] 00000034 com.ibm.ws.recoverylog.spi.LogFileHandle                     I CWRLS0006I: Creating new recovery log file /home/wasadmin/wlp/usr/servers/odm/tranlog//partnerlog/log1.
[23/09/18 09:36:03:336 BST] 00000034 com.ibm.ws.recoverylog.spi.LogFileHandle                     I CWRLS0006I: Creating new recovery log file /home/wasadmin/wlp/usr/servers/odm/tranlog//partnerlog/log2.
[23/09/18 09:36:03:424 BST] 00000034 com.ibm.tx.jta.impl.RecoveryManager                          I WTRN0135I: Transaction service recovering no transactions.
[23/09/18 09:36:03:426 BST] 0000002f com.ibm.ws.recoverylog.spi.RecoveryDirectorImpl              I CWRLS0012I: All persistent services have been directed to perform recovery processing for this WebSphere server (odm).
[23/09/18 09:36:03:863 BST] 0000002c com.ibm.ws.webcontainer.osgi.webapp.WebGroup                 I SRVE0169I: Loading Web Module: Rule Execution Server Console.
[23/09/18 09:36:03:863 BST] 0000002c com.ibm.ws.webcontainer                                      I SRVE0250I: Web Module Rule Execution Server Console has been bound to default_host.
[23/09/18 09:36:03:863 BST] 0000002c com.ibm.ws.http.internal.VirtualHostImpl                     A CWWKT0016I: Web application available (default_host): http://workflow.uk.ibm.com:10080/res/
[23/09/18 09:36:03:863 BST] 0000002c com.ibm.ws.app.manager.AppMessageHelper                      A CWWKZ0001I: Application res started in 3.248 seconds.
[23/09/18 09:36:03:867 BST] 00000023 com.ibm.ws.kernel.feature.internal.FeatureManager            A CWWKF0012I: The server installed the following features: [jsp-2.3, concurrent-1.0, servlet-3.1, ssl-1.0, jndi-1.0, distributedMap-1.0, appSecurity-2.0, jdbc-4.1, el-3.0].
[23/09/18 09:36:03:868 BST] 00000023 com.ibm.ws.kernel.feature.internal.FeatureManager            I CWWKF0008I: Feature update completed in 4.612 seconds.
[23/09/18 09:36:03:868 BST] 00000023 com.ibm.ws.kernel.feature.internal.FeatureManager            A CWWKF0011I: The server odm is ready to run a smarter planet.
[23/09/18 09:36:03:880 BST] 00000027 com.ibm.ws.webcontainer.osgi.mbeans.PluginGenerator          I SRVE9103I: A configuration file for a web server plugin was automatically generated for this server at /home/wasadmin/wlp/usr/servers/odm/logs/state/plugin-cfg.xml.
[23/09/18 09:36:04:509 BST] 0000002e com.ibm.ws.session.WASSessionCore                            I SESN0176I: A new session context will be created for application key default_host/res
[23/09/18 09:36:04:510 BST] 0000002e com.ibm.ws.util                                              I SESN0172I: The session manager is using the Java default SecureRandom implementation for session ID generation.
[23/09/18 09:36:04:566 BST] 0000002f com.ibm.ws.rsadapter.impl.DatabaseHelper                     I DSRA8203I: Database product name : Apache Derby
[23/09/18 09:36:04:567 BST] 0000002f com.ibm.ws.rsadapter.impl.DatabaseHelper                     I DSRA8204I: Database product version : 10.10.2.0 - (1582446)
[23/09/18 09:36:04:567 BST] 0000002f com.ibm.ws.rsadapter.impl.DatabaseHelper                     I DSRA8205I: JDBC driver name  : Apache Derby Embedded JDBC Driver
[23/09/18 09:36:04:567 BST] 0000002f com.ibm.ws.rsadapter.impl.DatabaseHelper                     I DSRA8206I: JDBC driver version  : 10.10.2.0 - (1582446)
[23/09/18 09:36:05:289 BST] 0000002e com.ibm.rules.res.console                                    I The operating system is Linux amd64 3.10.0-862.11.6.el7.x86_64.
[23/09/18 09:36:05:290 BST] 0000002e com.ibm.rules.res.console                                    I The JVM is IBM Corporation IBM J9 VM 2.8.
[23/09/18 09:36:05:290 BST] 0000002e com.ibm.rules.res.console                                    I The class path is /home/wasadmin/wlp/bin/tools/ws-server.jar:/home/wasadmin/wlp/bin/tools/ws-javaagent.jar:/home/wasadmin/wlp/bin/tools/ws-javaagent.jar.
[23/09/18 09:36:05:290 BST] 0000002e com.ibm.rules.res.console                                    I Logging started. Rule Execution Server console version: Decision Server
[23/09/18 09:36:05:290 BST] 0000002e com.ibm.rules.res.console                                    I Properties used for initialization:
allowIframe = true
autoCreateSchema = false
calendarType = gregorian
defaultDWConfiguration = factoryClassname=ilog.rules.res.persistence.impl.jdbc.IlrDatasourceTraceDAOFactory;JNDI_NAME=jdbc/resdatasource
distributed.mode = true
filePersistenceDirectory = res_data
fileXomPersistenceDirectory = res_xom
ilog.rules.res.HELP_CONTEXT = http://www.ibm.com/support/knowledgecenter/SSQP76_8.9.1
ilog.rules.res.HELP_INDEX = http://www.ibm.com/support/knowledgecenter/SSQP76_8.9.1/com.ibm.odm.dserver.rules.res.console/cshelp_resconsole.xml
ilog.rules.res.HELP_TOPIC = com.ibm.odm.dserver.rules.res.console
ilog.rules.res.HTDS_CONTEXT = /DecisionService
ilog.rules.res.XOM_IN_RULEAPP_ARCHIVE = false
ilog.rules.res.trace.DECISIONWAREHOUSE_CONFIGURATIONS = defaultDWConfiguration
javax.faces.STATE_SAVING_METHOD = server
management.protocol = jmx
management.tcpip.port = 1883
management.tcpip.timeout = 20
onDocker = false
org.apache.myfaces.ADD_RESOURCE_CLASS = org.apache.myfaces.renderkit.html.util.DefaultAddResource
org.apache.myfaces.ALLOW_JAVASCRIPT = true
org.apache.myfaces.AUTO_SCROLL = true
org.apache.myfaces.CHECK_EXTENSIONS_FILTER = false
org.apache.myfaces.COMPRESS_STATE_IN_SESSION = false
org.apache.myfaces.DETECT_JAVASCRIPT = false
org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION = 10
org.apache.myfaces.PRETTY_HTML = true
org.apache.myfaces.READONLY_AS_DISABLED_FOR_SELECTS = true
org.apache.myfaces.RESOURCE_VIRTUAL_PATH = /faces/myFacesExtensionResource
org.apache.myfaces.SERIALIZE_STATE_IN_SESSION = false
org.apache.myfaces.VALIDATE = false
org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL = true
persistenceType = datasource
resconsole-logging-config-filename = resconsole-logging.properties
server-info-max-length = 100
xomPersistenceType = datasource
[23/09/18 09:36:05:365 BST] 0000002e com.ibm.rules.res.persistence                                I XOM repository set in database persistence mode: Apache Derby 10.10.2.0 - (1582446)
[23/09/18 09:36:05:390 BST] 0000002e com.ibm.rules.res.console                                    I Reading Decision Warehouse configurations from web.xml
[23/09/18 09:36:05:399 BST] 0000002e com.ibm.rules.res.console                                    I The Decision Warehouse configuration defaultDWConfiguration was loaded.
[23/09/18 09:36:05:403 BST] 0000002e com.ibm.rules.res.console                                    I The trace DAO factory was initialized: ilog.rules.res.persistence.impl.jdbc.IlrDatasourceTraceDAOFactory
[23/09/18 09:36:05:765 BST] 0000002e com.ibm.rules.res.console                                    E Initialization failed
ilog.rules.res.console.IlrConsoleException: The persistence check failed. Diagnostic report:
DAO Class Name = ilog.rules.res.persistence.impl.jdbc.IlrGenericRepositoryDAO
Database Product Name = Apache Derby
Database Product Version = 10.10.2.0 - (1582446)
Driver Name = Apache Derby Embedded JDBC Driver
Driver Product Version = 10.10.2.0 - (1582446)
Ruleset enabled view test passed = False
RuleApp properties table test passed = False
RuleApps table test passed = False
Ruleset properties table test passed = False
Ruleset resources table test passed = False
Rulesets table test passed = False
Is Transaction Supported = True
JDBC URL = jdbc:derby:/home/wasadmin/wlp/usr/shared/config//derby/resdb
Username = resdbUser.
at ilog.rules.res.console.util.IlrModelManager.init(IlrModelManager.java:187)
at ilog.rules.res.console.util.IlrConsoleInitializer.consoleInitialized(IlrConsoleInitializer.java:126)
at ilog.rules.res.console.util.IlrConsoleInitializer.consoleInitialized(IlrConsoleInitializer.java:109)
at ilog.rules.res.console.IlrServletContextListener.contextInitialized(IlrServletContextListener.java:26)
at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:2384)
at com.ibm.ws.webcontainer31.osgi.webapp.WebApp31.notifyServletContextCreated(WebApp31.java:514)
at com.ibm.ws.webcontainer.webapp.WebApp.initialize(WebApp.java:1012)
at com.ibm.ws.webcontainer.webapp.WebApp.initialize(WebApp.java:6574)
at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost.startWebApp(DynamicVirtualHost.java:467)
at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost.startWebApplication(DynamicVirtualHost.java:462)
at com.ibm.ws.webcontainer.osgi.WebContainer.startWebApplication(WebContainer.java:1132)
at com.ibm.ws.webcontainer.osgi.WebContainer.access$000(WebContainer.java:108)
at com.ibm.ws.webcontainer.osgi.WebContainer$3.run(WebContainer.java:944)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:522)
at java.util.concurrent.FutureTask.run(FutureTask.java:277)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1153)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.lang.Thread.run(Thread.java:785)

[23/09/18 09:36:05:818 BST] 0000002e com.ibm.ws.webcontainer.servlet                              I SRVE0242I: [res] [/res] [FacesServlet]: Initialization successful.
...

Access RES

https://workflow.uk.ibm.com:10443/res/login.jsf

(1) Need to authenticate as resAdmin
(2) Need to run through "Installation Settings Wizard" to set up database
(3) Deploy Rule App e.g. HelloWorldRuleApp_19012016.jar
(4) Use HTDS to test Rule App via REST
(5) Monitor logs for output

cat /home/wasadmin/wlp/usr/servers/odm/logs/console.log

...
Hello Dave Hay!
...

cat /home/wasadmin/wlp/usr/servers/odm/logs/messages.log

...
[23/09/18 09:40:02:220 BST] 00000051 SystemOut                                                    O Hello Dave Hay!
...

URL for HTDS: -

https://workflow.uk.ibm.com:10443/DecisionService/run.jsp?path=/HelloWorldRuleApp/1.0/HelloWorld&trace=false&type=WADL&kind=native

I'll update this once I get my hands on 8.9.2 ……

2 comments:

Tony said...

Hi,

This is really a nice blog having lot of useful information however setting up VM for developer is very difficult. I would appreciate if you share the link to download the VM.

Thanks in advance

Dave Hay said...

Hi Tony

Thanks for the comment. The VM contains licensed software, so I'm unable to share it externally.

Building a VM shouldn't be that difficult, especially as many vendors offer "virtual appliances", with pre-built Linux distributions.

Equally, if you so wish, you can run the ODM workload within a Docker container, making life even more easy.

Cheers, Dave

Visual Studio Code - Wow 🙀

Why did I not know that I can merely hit [cmd] [p]  to bring up a search box allowing me to search my project e.g. a repo cloned from GitHub...