Quantcast
Channel: A Portal to a Portal
Viewing all 1851 articles
Browse latest View live

WebSphere Application Server and the Case of the Bad File Store

$
0
0
We saw an interesting situation today, with a client's IBM WebSphere Application Server (WAS) 8.5.5.13 environment.

Whereas most clients, in my recent experience, tend to use a relational database such as DB2, Oracle or SQL Server, to host the Service Integration Bus (SIB) Messaging Engine (ME) datastore, this particular client was using the local Linux box's file-system.

When the cluster hosting the SIB came up, a message similar to this: -

CWSIS1561E:The messaging engine's unique id does not match that found in the filestore. ME_UUID=A85B64156006973D, ME_UUID(FS)=AAF19AC8C805638A

was posted in SystemOut.log.

Having checked the SIB/ME configuration, I could see that we had three file-system-based artefacts: -

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/msglog/Log
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/msgstore/PermanentStore
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/tempmsgstore/TemporaryStore

which translates as: -

Log File
Permanent Store File
Temporary Store File

as per this: -



Thankfully, this developerWorks Answers post provided the insight: -


CWSIS1561E errors are usually caused by deleting the messaging engine, without deleting its filestore, then recreating the messaging engine with the same name. To fix the issue, you will have to delete the existing filestore files for the messaging engine and restart the JVM. A new filestore will be created during the messaging engine startup.

Note1: You must treat the log file, the temporary store file, and the permanent store file as one unit; that is, delete operation must be performed on all three files.

Note2:By performing the suggested action, all the messages in the filestore will be lost.

To be on the safe side, we backed up the existing files ( all of which were there, with the correct ownership and permissions ), and then deleted the subdirectories: -

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/msglog/
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/msgstore/
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/tempmsgstore/

and bounced WAS.

Job done :-)

This also provided some useful context: -




BPMConfig - Validation of a Deployment Environment

$
0
0
So this is a new one to me ….

In the context of changing WAS / BPM passwords, and then validating the changes, the IBM Knowledge Center has this to say: -



Having documented the password change process for my client, I thought I'd give the validation a try 

/opt/ibm/WebSphere/AppServer/bin/BPMConfig.sh -validate -profile Dmgr02 -de De1 -outputDir /tmp/val

The output was: -

ls -R -al /tmp/val/

/tmp/val/:
total 4
drwxr-xr-x   3 wasadmin wasadmins   17 Oct  4 09:04 .
drwxrwxrwt. 19 root     root      4096 Oct  4 09:34 ..
drwxr-xr-x   3 wasadmin wasadmins   54 Oct  4 09:04 html

/tmp/val/html:
total 36
drwxr-xr-x 3 wasadmin wasadmins    54 Oct  4 09:04 .
drwxr-xr-x 3 wasadmin wasadmins    17 Oct  4 09:04 ..
-rw-r--r-- 1 wasadmin wasadmins 34573 Oct  4 09:04 configValidationReport_De1.html
drwxr-xr-x 3 wasadmin wasadmins    51 Oct  4 09:04 css

/tmp/val/html/css:
total 12
drwxr-xr-x 3 wasadmin wasadmins   51 Oct  4 09:04 .
drwxr-xr-x 3 wasadmin wasadmins   54 Oct  4 09:04 ..
drwxr-xr-x 2 wasadmin wasadmins 4096 Oct  4 09:04 images
-rw-r--r-- 1 wasadmin wasadmins 1966 Oct  4 09:04 style.css
-rw-r--r-- 1 wasadmin wasadmins  849 Oct  4 09:04 table.css

/tmp/val/html/css/images:
total 40
drwxr-xr-x 2 wasadmin wasadmins 4096 Oct  4 09:04 .
drwxr-xr-x 3 wasadmin wasadmins   51 Oct  4 09:04 ..
-rw-r--r-- 1 wasadmin wasadmins  155 Oct  4 09:04 error.gif
-rw-r--r-- 1 wasadmin wasadmins  157 Oct  4 09:04 ibm-logo-white.gif
-rw-r--r-- 1 wasadmin wasadmins  142 Oct  4 09:04 part_start.gif
-rw-r--r-- 1 wasadmin wasadmins  146 Oct  4 09:04 part_stop.gif
-rw-r--r-- 1 wasadmin wasadmins  145 Oct  4 09:04 running.gif
-rw-r--r-- 1 wasadmin wasadmins  146 Oct  4 09:04 stop.gif
-rw-r--r-- 1 wasadmin wasadmins  297 Oct  4 09:04 success.gif
-rw-r--r-- 1 wasadmin wasadmins  149 Oct  4 09:04 unknown.gif
-rw-r--r-- 1 wasadmin wasadmins  158 Oct  4 09:04 warning.gif

and the HTML page looked like this: -


Nice !

Upgrading from IBM 8.6 to IBM BAW 18.0.0.1 - Disk is crucial

$
0
0
I saw this: -

...
[08/10/18 11:54:56:571 BST] 00000001 BPMConfig     E com.ibm.bpm.config.BPMConfig main ADMA5002E: Application binaries cannot be saved in /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/wstemp/anonymous1538995571224/workspace/cells/PCCell1/applications/navigatorEAR_AppCluster.ear/navigatorEAR_AppCluster.ear: org.eclipse.jst.j2ee.commonarchivecore.internal.exception.SaveFailureException: navigator.war
                                 com.ibm.bpm.config.util.ConfigException: ADMA5002E: Application binaries cannot be saved in /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/wstemp/anonymous1538995571224/workspace/cells/PCCell1/applications/navigatorEAR_AppCluster.ear/navigatorEAR_AppCluster.ear: org.eclipse.jst.j2ee.commonarchivecore.internal.exception.SaveFailureException: navigator.war
        at com.ibm.bpm.config.util.jmx.AppManagementNotificationListener.appEventReceived(AppManagementNotificationListener.java:117)
        at com.ibm.ws.management.application.SchedulerImpl.propagateTaskEvent(SchedulerImpl.java:245)
        at com.ibm.ws.management.application.task.BackupAppTask.install(BackupAppTask.java:195)
        at com.ibm.ws.management.application.task.BackupAppTask.performTask(BackupAppTask.java:92)
        at com.ibm.ws.management.application.SchedulerImpl.run(SchedulerImpl.java:315)
        at java.lang.Thread.run(Thread.java:811)


whilst upgrading from IBM Business Process Manager 8.6 CF2013.03 to IBM Business Automation Workflow 18.0.01, as per this: -


Something made me think that it MIGHT be disk-space related, given the exception.

Checking free disk space: -

df -kmh

Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   48G   44G  3.8G  93% /
devtmpfs               3.8G     0  3.8G   0% /dev
tmpfs                  3.9G   60K  3.9G   1% /dev/shm
tmpfs                  3.9G   12M  3.8G   1% /run
tmpfs                  3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1              497M  210M  288M  43% /boot
tmpfs                  781M     0  781M   0% /run/user/1004
vmhgfs-fuse            477G  405G   73G  85% /mnt
tmpfs                  781M     0  781M   0% /run/user/0


kinda reinforced that suspicion.

So I checked the logs further: -

fgrep -R device /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/logs

and found: -=

...
/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/logs/DBUpgrade_Mon-Oct-08-11.40.36-BST-2018_0.log:INSERT INTO SYNCCONFIGURATION ( ID, ATTRIBUTES ) VALUES ('com.ibm.ecm.sync.WebAppListener.deviceCleanupInitialDelay', 'name=Initial deplay for the database clean up task;descr=Initial deplay for the database clean up task (in days);attributes=1')
/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/logs/DBUpgrade_Mon-Oct-08-11.40.36-BST-2018_0.log:INSERT INTO SYNCCONFIGURATION ( ID, ATTRIBUTES ) VALUES ('com.ibm.ecm.sync.WebAppListener.deviceCleanupPeriod', 'name=Device clean up cycle time;descr=Device clean up cycle time (in days);attributes=7')
/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/logs/DBUpgrade_Mon-Oct-08-11.40.36-BST-2018_0.log:INSERT INTO SYNCCONFIGURATION ( ID, ATTRIBUTES ) VALUES ('com.ibm.ecm.sync.tools.cleanup.CleanupTask.deviceExpiration','name=Device expiration;descr=device expiration (in days);attributes=90')
/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/logs/ffdc_20181008-114610/ffdc.1987123897687396422.txt:Caused by: java.io.IOException: No space left on device
/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/logs/ffdc_20181008-114610/ffdc.1987123897687396422.txt:   java.lang.Throwable::detailMessage:No space left on device

...

which kinda confirmed things.

Off to add more disk ……

Restoring WebSphere Application Server Profiles - NullPointerExceptions

$
0
0
So, for some reason, I was having a crisis of confidence  / memory.

I was trying/failing to restore a WebSphere Application Server (WAS) profile, using the following command: -

/opt/ibm/WebSphere/AppServer/bin/manageprofiles.sh -restoreProfile -backupFile /home/wasadmin/wasbackups/BPM86_Dmgr01.zip 

which failed with: -

...
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:508)
at com.ibm.wsspi.bootstrap.WSLauncher.launchMain(WSLauncher.java:234)
at com.ibm.wsspi.bootstrap.WSLauncher.main(WSLauncher.java:96)
at com.ibm.wsspi.bootstrap.WSLauncher.run(WSLauncher.java:77)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:508)
at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:587)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:198)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:508)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:340)
at org.eclipse.core.launcher.Main.basicRun(Main.java:282)
at org.eclipse.core.launcher.Main.run(Main.java:981)
at com.ibm.wsspi.bootstrap.WSPreLauncher.launchEclipse(WSPreLauncher.java:407)
at com.ibm.wsspi.bootstrap.WSPreLauncher.main(WSPreLauncher.java:170)
Caused by: java.lang.NullPointerException: entry
at java.util.zip.ZipFile.getInputStream(ZipFile.java:404)
at com.ibm.ws.profile.utils.FileUtils.getInputStreamFromZipFile(FileUtils.java:364)
at com.ibm.wsspi.profile.WSProfile.restore(WSProfile.java:2097)
at com.ibm.wsspi.profile.WSProfile.restore(WSProfile.java:2069)
at com.ibm.ws.profile.cli.WSProfileCLIRestoreProfileInvoker.executeWSProfileAccordingToMode(WSProfileCLIRestoreProfileInvoker.java:106)
at com.ibm.ws.profile.cli.WSProfileCLIModeInvoker.invokeWSProfile(WSProfileCLIModeInvoker.java:462)
at com.ibm.ws.profile.WSProfileJob.run(WSProfileJob.java:94)
at com.ibm.ws.profile.utils.WSProfileUtils.executeAllJobs(WSProfileUtils.java:793)
at com.ibm.wsspi.profile.WSProfileCLI.invokeWSProfile(WSProfileCLI.java:228)
at com.ibm.wsspi.profile.WSProfileCLI.main(WSProfileCLI.java:62)
... 26 more
...

view /opt/ibm/WebSphere/AppServer/logs/manageprofiles/restoreProfile.log 

...
  <record>
    <date>2018-10-09T12:31:06</date>
    <millis>1539084666088</millis>
    <sequence>24</sequence>
    <logger>com.ibm.ws.profile.cli.WSProfileCLIModeInvoker</logger>
    <level>WARNING</level>
    <class>com.ibm.ws.profile.cli.WSProfileCLIModeInvoker</class>
    <method>getArgumentValue</method>
    <thread>1</thread>
    <message>Could not resolve templatePath from command line</message>
  </record>


It took me a while of faffing around ….. including creating new profiles ….

And then I realised where I was going wrong ….

Given that I had backed up the profiles: -

mkdir wasbackups
cd wasbackups/
/opt/ibm/WebSphere/AppServer/profiles/AppSrv01/bin/backupConfig.sh BPM86_AppSrv01.zip
/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/bin/backupConfig.sh BPM86_Dmgr01.zip

perhaps it'd have made more sense to use …. restoreConfig.sh instead.

Guess what …..

/opt/ibm/WebSphere/AppServer/bin/restoreConfig.sh /home/wasadmin/wasbackups/BPM86_Dmgr01.zip 

ADMU0116I: Tool information is being logged in file
           /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/logs/restoreConfig.log
ADMU0128I: Starting tool with the Dmgr01 profile
ADMU0505I: Servers found in configuration:
ADMU0506I: Server name: dmgr
ADMU2010I: Stopping all server processes for node Dmgr
ADMU0512I: Server dmgr cannot be reached. It appears to be stopped.
ADMU5502I: The directory /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/config
           already exists; renaming to
           /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/config.old
ADMU5504I: Restore location successfully renamed
ADMU5505I: Restoring file /home/wasadmin/wasbackups/BPM86_Dmgr01.zip to
           location /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/config
...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ADMU5506I: 3,179 files successfully restored
ADMU6001I: Begin App Preparation -
ADMU6009I: Processing complete.
ADMU6002I: Begin Asset Preparation -
ADMU6009I: Processing complete.

IBM Operational Decision Manager 8.10 - Arriving in December

$
0
0
This: -


and this: -


Due in early December, this is going to be supported on a wider range of platforms, including IBM Cloud Private ( Docker/Kubernetes orchestration platform ) and WebSphere Liberty Profile.

It'll also include an improved version of Decision Composer, 







etc.

IBM Master Data Management and IBM BPM - Process Server, rather than Process Center

$
0
0
Having spent the past few months installing / configuring the Master Data Management (MDM) Data Stewardship Center (DSC) with IBM Business Process Manager (BPM), I realised that I've only ever worked with Process Center.

Therefore, the default installation script: -

./InstallGovernanceApplication.sh install_configure_governance_apps

only works for a Process Center, in part because the script imports Process Application snapshots as .TWX files, via the underlying sub-script: -

./InstallGovernanceApplication.sh run_import_process_application

which doesn't work for a Process Server, where one has to install off-line packages ( .ZIP files ).

This is an issue where one has an offline Process Server, which isn't connected to Process Center.

As ever, there is an alternate path ….

In essence, one runs a process (!) on the Process Center environment ( where DSC has previously been installed/configured ), namely: -

./InstallGovernanceApplication.sh get_installable_packages_offline_server

which "dumps" the exported packages ( .ZIP ) here: -

ls -al /opt/ibm/MDMDSG/mdmg/offlinePackages/

total 327388
drwxr-xr-x. 2 wasadmin wasadmins     4096 Oct 10 15:53 .
drwxr-xr-x. 8 wasadmin wasadmins     4096 Sep 18 15:32 ..
-rw-r--r--  1 wasadmin wasadmins 42576778 Oct 10 14:52 MDMDASH.zip
-rw-r--r--  1 wasadmin wasadmins 44511046 Oct 10 14:52 MDMFD.zip
-rw-r--r--  1 wasadmin wasadmins 50974139 Oct 10 14:52 MDMHDQ.zip
-rw-r--r--  1 wasadmin wasadmins 50445365 Oct 10 14:51 MDMPM.zip
-rw-r--r--  1 wasadmin wasadmins 51503903 Oct 10 14:51 MDMSDP.zip
-rw-r--r--  1 wasadmin wasadmins 45311643 Oct 10 14:51 MDMSDV.zip
-rw-r--r--  1 wasadmin wasadmins 49904581 Oct 10 14:52 VST.zip

( having previously created an offline Process Server instance within Process Center - the name is relatively irrelevant - I called mine Boris - and then added the name to MDMBPMIntegration.properties )

offlineServerName=Boris

Having moved these to the Process Server box ( and extracted them to /opt/ibm/MDMDSG/mdmg/offlinePackages/ ), I updated the properties file: -

vi /opt/ibm/MDMDSG/mdmg/install/properties/MDMBPMIntegration.properties

setting the PS_ parameters.

Once done, I then ran a subtly different task from before: -

./InstallGovernanceApplication.sh install_configure_governance_apps_offline_server

and waited.

Now I have a bunch of new Snapshots: -


and the DSC: -


Nice!

IBM BPM - Tinkering with Groups via REST

$
0
0
I’m digging into an issue with the IBM Master Data Management (MDM) Data Stewardship Center (DSC), where a button ( Add ) doesn’t appear for my user, DSUser1: -




even though the user is a member of the correct DataStewardGroup: -





As part of the investigation, I wanted to look at the groups and teams available to IBM BPM.

There’s a rather useful REST API for this, accessible via the BPM REST API Tester: -




also accessible via cURL : -

curl -k -u wasadmin:passw0rd -o /tmp/groups.txt --request GET --url https://lt.uk.ibm.com:9446/rest/bpm/wle/v1/groups?includeDeleted=false&parts=all

Knowing the group name ( DataStewardGroup ), I then used the REST API to get at that: -

curl -k -u wasadmin:passw0rd --request GET --url https://lt.uk.ibm.com:9446/rest/bpm/wle/v1/group/DataStewardGroup?includeDeleted=false&parts=all

which returns a single member - DSUser1 : -



I then dug into the BPM teams, as opposed to the groups: -




and the snapshot ID: -




Armed with the Team ID ( 24.fccd301e-1a55-4873-b69f-05c43b251545 ), Snapshot ID ( 2064.f96be189-3d91-4b8e-b485-21af8e0af5ce ) and Branch ID ( 2063.d1ecb65f-8778-4ddc-8c4f-b94ef28781c9 ), I was then able to dig into the details of the DataStewardTeam: -

https://lt.uk.ibm.com:9446/rest/bpm/wle/v1/team/24.fccd301e-1a55-4873-b69f-05c43b251545?snapshotId=2064.f96be189-3d91-4b8e-b485-21af8e0af5ce&branchId=2063.d1ecb65f-8778-4ddc-8c4f-b94ef28781c9




all of which seems to confirm that DSUser1 is a member of the DataStewardGroup which is mapped to the DataStewardTeam

So why doesn’t the Add button appear ?

Ah, well, keep on digging ….

Some follow-up reading: -



macOS Time Machine - Backing up over the LAN

$
0
0
Some interesting experimentation, whilst tinkering with a full Time Machine backup of my MacBook Pro, via Ethernet, to a Synology DiskStation DS414.

The actual client/server network connectivity is using Server Message Block (SMB) as the former Apple Filing System (AFS) has been deprecated.

As this was a FULL backup, the time to completion, even over 1,000 Mb/s Ethernet was going to take a while …..

These two articles were of much use: -



both of which taught me to turn off throttling, via the command: -

sudo sysctl debug.lowpri_throttle_enabled=0

plus this: -


which showed me how to TEMPORARILY turn off SSL/TLS packet signing.

Note the warning: -

If you turn off packet signing, you lower the security of the SMB connection. Turn off packet signing only if both the client and server are on a secure network.

Here be dragons ….

I did also confirm that the DS414 *DID* have Gigabit Ethernet enabled: -


and that my Mac's Ethernet card was similarly performant: -



Fun times !

IBM Business Automation Workflow (BAW) 18.0.0.1 - Fun with Context Roots and Deployment Environments

$
0
0
During a recent build of a BAW 18.0.0.1 environment, I saw this: -

CWMCB0195E: The source file of the copy operation does not exist (/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/config/cells/PCCell1/applications/CaseBuilder_AppCluster.ear/deployments/CaseBuilder_AppCluster/CaseBuilder.war/WEB-INF/cbConfig.properties).
The 'BPMConfig.sh -create -de /home/wasadmin/BAW18001_Advanced-PC-ThreeClusters-DB2.properties' command failed. For more information, see the log file /opt/ibm/WebSphere/AppServer/logs/config/BPMConfig_20181017-171418.log.


whilst creating the Deployment Environment using the BPMConfig script: -

/opt/ibm/WebSphere/AppServer/bin/BPMConfig.sh -create -de ~/BAW18001_Advanced-PC-ThreeClusters-DB2.properties

The difference between this and many other builds was that I'd over-ridden the Context Root for the various BAW applications within the DE properties file - BAW18001_Advanced-PC-ThreeClusters-DB2.properties - via this line: -

bpm.de.contextRootPrefix=/corporate/secure

Typically this is left as-is meaning that the applications have the default Context Root e.g.





etc.

whereas I wanted to amend these to: -


Thankfully this has been addressed by an iFix for BAW: -

JR59780

Having downloaded this from IBM Fix Central, I checked the content of the fix: -

/opt/ibm/InstallationManager/eclipse/tools/imcl listAvailableFixes com.ibm.bpm.ADV.v85_8.6.10018001.20180628_0740 -repositories /mnt/BAW18001/Fixpack/8.6.10018001-WS-BPM-IFJR59780.zip

8.6.10018001-WS-BPM-IFJR59780_8.6.10018001.20180911_0132

and then installed it: -

/opt/ibm/InstallationManager/eclipse/tools/imcl install 8.6.10018001-WS-BPM-IFJR59780_8.6.10018001.20180911_0132 -repositories /mnt/BAW18001/Fixpack/8.6.10018001-WS-BPM-IFJR59780.zip -installationDirectory /opt/ibm/WebSphere/AppServer/

Installed 8.6.10018001-WS-BPM-IFJR59780_8.6.10018001.20180911_0132 to the /opt/ibm/WebSphere/AppServer directory.

Once this was applied, we're good to go :-)

PS For the record, BAW is a combination of IBM Business Process Manager (BPM) 8.6, plus various Enterprise Content Management (ECM) capabilities, including Filenet Content Platform Engine (CPE) and IBM Content Navigator (ICN).

Also, for the record, this is what I now have installed: -

/opt/ibm/InstallationManager/eclipse/tools/imcl listInstalledPackages

com.ibm.cic.agent_1.8.9001.20180709_1302
com.ibm.bpm.ADV.v85_8.6.10018001.20180628_0740
com.ibm.websphere.ND.v85_8.5.5014.20180802_1018
8.6.10018001-WS-BPM-IFJR59569_8.6.10018001.20180829_1311
8.6.10018001-WS-BPM-IFJR59780_8.6.10018001.20180911_0132
8.6.10018001-WS-BPM-IFJR59939_8.6.10018001.20180905_0257
8.6.10018001-WS-BPMPCPD-IFPD59569_8.6.10018001.20180829_1322


LDAP - ldapsearch and SSL - what fun

$
0
0
Having set up a new Microsoft Active Directory 2012 domain controller, I was testing the LDAP connectivity using the ldapsearch command before adding WebSphere Application Server (WAS) into the mix.

I ran this command: -

ldapsearch -h windows2012.uk.ibm.com -p 636 -b dc=uk,dc=ibm,dc=com -D cn=wasbind,dc=uk,dc=ibm,dc=com -w Ch1mn3y5! cn=wasbind

which resulted in this helpful response: -

ldap_result: Can't contact LDAP server (-1)

In order to double-check the connectivity, I ran a few basic tests: -

Trying 192.168.153.130...
Connected to windows2012.uk.ibm.com.
Escape character is '^]'.


openssl s_client -connect windows2012.uk.ibm.com:636</dev/null

...
Protocol  : TLSv1.2
Cipher    : ECDHE-RSA-AES256-SHA384

...

Given that I'm using SSL/TLS, I tested ldapsearch using a non-SSL connection just to check ….

ldapsearch -h windows2012.uk.ibm.com -p 389 -b dc=uk,dc=ibm,dc=com -D CN=wasbind,CN=Users,DC=uk,DC=ibm,DC=com -w Ch1mn3y5! cn=wasbind

# wasbind, Users, uk.ibm.com
dn: CN=wasbind,CN=Users,DC=uk,DC=ibm,DC=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: wasbind
givenName: wasbind


so the problem is SSL/TLS ….

I'd also noted that I was using the old syntax for ldapsearch in the way that I was specifying the hostname and port.

Both the -h and -p switches have been deprecated in favour of the -H switch: -

man ldapsearch

       -H ldapuri
              Specify URI(s) referring to the ldap server(s); a list of URI, separated by whitespace or commas is expected; only the protocol/host/port fields are allowed.  As an  exception,
              if  no  host/port  is  specified, but a DN is, the DN is used to look up the corresponding host(s) using the DNS SRV records, according to RFC 2782.  The DN must be a non-empty
              sequence of AVAs whose attribute type is "dc" (domain component), and must be escaped according to RFC 2396.

       -h ldaphost
              Specify an alternate host on which the ldap server is running.  Deprecated in favor of -H.

       -p ldapport
              Specify an alternate TCP port where the ldap server is listening.  Deprecated in favor of -H.

...

So I tried the new syntax: -

ldapsearch -H ldaps://windows2012.uk.ibm.com:636 -b dc=uk,dc=ibm,dc=com -D cn=wasbind,cn=users,dc=uk,dc=ibm,dc=com -w Ch1mn3y5! cn=wasbind

which returned the same thing: -

ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

so I added a bit of the old debug: -

ldapsearch -Z -H ldaps://windows2012.uk.ibm.com:636 -b dc=uk,dc=ibm,dc=com -D cn=wasbind,cn=users,dc=uk,dc=ibm,dc=com -w Ch1mn3y5! cn=wasbind

which was more insightful: -

ldap_start_tls: Can't contact LDAP server (-1)
additional info: SSLHandshake() failed: misc. bad certificate (-9825)
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)


This led me here: -



I tried this: -

export LDAPTLS_REQCERT=never

and then: -

ldapsearch -Z -H ldaps://windows2012.uk.ibm.com:636 -b dc=uk,dc=ibm,dc=com -D cn=wasbind,cn=users,dc=uk,dc=ibm,dc=com -w Ch1mn3y5! cn=wasbind

# wasbind, Users, uk.ibm.com
dn: CN=wasbind,CN=Users,DC=uk,DC=ibm,DC=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: wasbind
givenName: wasbind
distinguishedName: CN=wasbind,CN=Users,DC=uk,DC=ibm,DC=com


Hurrah!

Single Sign-On - Tinkering with Microsoft Active Directory Federation Services, SAML and WebSphere Application Server

$
0
0
A brief bit of context ….

A colleague was asking some questions about WAS and ADFS and SAML, so I wanted to create a basic test environment to get my head around some of the new ( to me ) concepts.

I already had a Windows Server 2012 VM and another Red Hat Enterprise Linux (RHEL) VM.

The latter was already configured / installed with: -
  • IBM WebSphere Application Server (WAS) Network Deployment (ND) 8.5.5.14
  • IBM Business Automation Workflow (BAW) 18.0.0.1
so I was mostly good to go in the WAS/application world.

On the Windows 2012 VM, I installed / configured: -
  • Active Directory Domain Services (AD)
  • Active Directory Federation Services (ADFS)
  • Internet Information Server
So I had a wee bit of effort to setup AD and ADFS, and also to configure IIS.

For the record, IIS isn't required for the SAML setup etc. BUT it's a useful way to generate a self-signed certificate, which can be exported, with public AND private key, as a PFX file, ready to be be imported into ADFS.

As ever, this is an ongoing work-in-progress.

Having got the AD and ADFS stuff mainly setup, I then ran through the following: -

Test ADFS Login

https://windows2012.uk.ibm.com/adfs/ls/idpinitiatedSignOn.aspx

This allowed me to verify that I could authenticate to ADFS using Windows credentials.

Start Deployment Manager

/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/bin/startManager.sh

Start Node Agent

/opt/ibm/WebSphere/AppServer/profiles/AppSrv01/bin/startNode.sh

Add AD Signer to WAS

To allow WAS and AD to communicate via LDAPS ( LDAP over an SSL/TLS connection )

/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/bin/wsadmin.sh -lang jython -username wasadmin -password passw0rd -f /mnt/Scripts/addADSignerToWAS.jy

Federate AD into WAS

/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/bin/wsadmin.sh -lang jython -username wasadmin -password passw0rd -f /mnt/Scripts/federateAD.jy

Stop Deployment Manager

/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/bin/stopManager.sh -username wasadmin -password passw0rd

Stop Node Agent

/opt/ibm/WebSphere/AppServer/profiles/AppSrv01/bin/stopNode.sh -username wasadmin -password passw0rd

Start Deployment Manager

/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/bin/startManager.sh

Start Node Agent

/opt/ibm/WebSphere/AppServer/profiles/AppSrv01/bin/startNode.sh

Retrieve MetaData

This pulls the ADFS info from the AD box

wget --no-check-certificate https://windows2012.uk.ibm.com/FederationMetadata/2007-06/FederationMetadata.xml

Install ACS Sample App into SupCluster

This app is used to perform the SAML token decryption / extraction
Note that I'm installing this into the BAW (BPM) SupCluster, which does NOT run the main BAW workload - Process Server, SCA BPEL etc.

/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/bin/wsadmin.sh -lang jython -username wasadmin -password passw0rd -f /opt/ibm/WebSphere/AppServer/bin/installSamlACS.py install SupCluster

Start WSAdmin Client

/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/bin/wsadmin.sh -lang jython -username wasadmin -password passw0rd

Add SAML TAI

This creates the SAML TAI configuration - we'll populate this further shortly

AdminTask.addSAMLTAISSO('-enable true -acsUrl https://workflow.uk.ibm.com:9445/samlsps/acs')

Save and Sync

AdminConfig.save()
AdminNodeManagement.syncActiveNodes()


Export SP Metadata from WAS

We need this metadata to complete the ADFS configuration

AdminTask.exportSAMLSpMetadata('-spMetadataFileName /home/wasadmin/WASSAMLMetadata.xml -ssoId 1')

Import IdP Metadata into WAS

This is what we previously pulled from the ADFS box

AdminTask.importSAMLIdpMetadata('-idpMetadataFileName /home/wasadmin/FederationMetadata.xml -idpId 1 -ssoId 1 -signingCertAlias idp1')

Save and Sync

AdminConfig.save()
AdminNodeManagement.syncActiveNodes()


Quit

exit

Set TAI Properties

I'm doing this manually, but will script it later

Name:sso_1.sp.acsUrl
Value:https://workflow.uk.ibm.com:9445/samlsps/acs

Name:sso_1.sp.idMap
Value:idAssertion

Name:sso_1.idp_1.EntityID
Value:http://windows2012.uk.ibm.com/adfs/services/trust

Name:sso_1.idp_1.SingleSignOnUrl
Value:https://windows2012.uk.ibm.com/adfs/ls/

Name:sso_1.sp.login.error.page
Value:https://windows2012.uk.ibm.com/adfs/ls/idpinitiatedSignOn.aspx

Name:sso_1.sp.targetUrl
Value:https://workflow.uk.ibm.com:9445/bpc

Name:sso_1.sp.useRealm
Value:defaultWIMFileBasedRealm

Start Clusters
  • MECluster
  • SupCluster
  • AppCluster
Functional Test

Access BPC: -

https://workflow.uk.ibm.com:9445/bpc

Should redirect to: -

https://windows2012.uk.ibm.com/adfs/ls/idpinitiatedSignOn.aspx

and be prompted to log on with AD acount e.g. UK\Administrator

Need to click on Sign-in button again; I don't yet know why this is the case :-(

Should then be redirected to BPC

Repeat for Process Portal: -

https://workflow.uk.ibm.com:9444/ProcessPortal

and Process Center: -

https://workflow.uk.ibm.com:9444/ProcessCenter

Sources

How to setup Microsoft Active Directory Federation Services [AD FS]

Front Side SAML SSO with microsoft product (ADFS -> WAS SAML TAI)

Enabling your system to use the SAML web single sign-on (SSO) feature


Something for the weekend - IBM Master Data Management and IBM Business Process Management on Docker

$
0
0
From this: -

Bring up deployed IBM InfoSphere Master Data Management v11.6 Feature Pack 7 along with IBM BPM and IBM Stewardship Center in minutes

The pre-deployed MDM on WAS v9.0.0.8 and DB2 v11.1 along with IBM BPM Process Server, Process Center and IBM Stewardship Center can be brought up in minutes in a system where docker and docker compose are installed

Overview

In this recipe, we are going to have an overview on how to install docker and docker compose and bring up a pre-deployed MDM - database and application along with IBM BPM and IBM Stewardship Center on that docker instance.

Ingredients

A machine on which you can install Docker, Docker Compose and IBM InfoSphere Master Data Management v11.6 Feature Pack 7 along with IBM BPM Process Server, Process Center and IBM Stewardship Center.




IBM Cloud Private 3.1.0 - "Failed to connect to the host via ssh: Permission denied (publickey,password)."

$
0
0
During the installation of the most recent version of IBM Cloud Private (ICP), namely 3.1.0, I ran the main setup/installation command: -

sudo docker run --net=host -t -e LICENSE=accept -v "$(pwd)":/installer/cluster ibmcom/icp-inception-amd64:3.1.0-ee install

which immediately failed with: -

...
PLAY [Checking Python interpreter] *******************************************************************************************************************************************************************************

TASK [Checking Python interpreter] *******************************************************************************************************************************************************************************
fatal: [192.168.1.122]: UNREACHABLE! => changed=false 
  msg: |-
    Failed to connect to the host via ssh: Permission denied (publickey,password).
  unreachable: true
fatal: [192.168.1.121]: UNREACHABLE! => changed=false 
  msg: |-
    Failed to connect to the host via ssh: Permission denied (publickey,password).
  unreachable: true
fatal: [192.168.1.123]: UNREACHABLE! => changed=false 
  msg: |-
    Failed to connect to the host via ssh: Permission denied (publickey,password).
  unreachable: true

NO MORE HOSTS LEFT ***********************************************************************************************************************************************************************************************

NO MORE HOSTS LEFT ***********************************************************************************************************************************************************************************************

PLAY RECAP *******************************************************************************************************************************************************************************************************
192.168.1.121              : ok=0    changed=0    unreachable=1    failed=0   
192.168.1.122              : ok=0    changed=0    unreachable=1    failed=0   
192.168.1.123              : ok=0    changed=0    unreachable=1    failed=0   

Playbook run took 0 days, 0 hours, 0 minutes, 0 seconds

I'm using this: -


and this: -


and this: -


for inspiration.

For the record, I'm running the installation as a non-root user - hayd - but the installation does leverage the sudo command, which is fine.

Also, I had previously exchanged SSL keys between the three VMs that make up my cluster - master, worker and proxy - and was able to do "password-less" login between each of them: -

ssh hayd@icpmaster
ssh hayd@icpworker
ssh hayd@icpproxy

and yet the issue appeared to be permissions-related: -

    Failed to connect to the host via ssh: Permission denied (publickey,password).
...

specifically with this file: -

-r-------- 1 root root 3243 Oct 26 12:25 /opt/ibm-cloud-private-3.1.0/cluster/ssh_key

I even tried hacking the permissions: -

chmod 777 /opt/ibm-cloud-private-3.1.0/cluster/ssh_key

( don't hate me, this is my own private VM, running on Beast in my home lab )

but to no avail.

I then focused further upon the documentation, specifically this: -


and tried setting the ansible_user etc.

ansible_user: hayd
ansible_become: true
ansible_become_password: passw0rd

This seems to defeat the point of the password-less login, so I need to think about this more BUT it works.


For now at least …...

WebSphere Application Server - Where's my Node Agent ?

$
0
0
Whilst trying to start a newly created WAS Node Agent: -

/opt/ibm/WebSphere/AppServer/profiles/AppSrv01/bin/startNode.sh

I saw this: -

...
ADMU0116I: Tool information is being logged in file
           /opt/ibm/WebSphere/AppServer/profiles/AppSrv01/logs/nodeagent/startServer.log
ADMU0128I: Starting tool with the AppSrv01 profile
ADMU3100I: Reading configuration for server: nodeagent
ADMU0111E: Program exiting with error: java.io.FileNotFoundException:
           /opt/ibm/WebSphere/AppServer/profiles/AppSrv01/config/cells/workflowNode01Cell/nodes/Node1/servers/nodeagent/server.xml
           (No such file or directory)
ADMU1211I: To obtain a full trace of the failure, use the -trace option.
ADMU0211I: Error details may be seen in the file:
           /opt/ibm/WebSphere/AppServer/profiles/AppSrv01/logs/nodeagent/startServer.log


and, in the startServer.log file: -

[30/10/18 09:54:35:727 GMT] 00000001 WsServerLaunc E   ADMU3002E: Exception attempting to process server nodeagent
[30/10/18 09:54:35:728 GMT] 00000001 WsServerLaunc E   ADMU3007E: Exception java.io.FileNotFoundException: /opt/ibm/WebSphere/AppServer/profiles/AppSrv01/config/cells/workflowNode01Cell/nodes/Node1/servers/nodeagent/server.xml (No such file or directory)
        at java.io.FileInputStream.open(FileInputStream.java:212)

[30/10/18 09:54:35:739 GMT] 00000001 AdminTool     E   ADMU0111E: Program exiting with error: java.io.FileNotFoundException: /opt/ibm/WebSphere/AppServer/profiles/AppSrv01/config/cells/workflowNode01Cell/nodes/Node1/servers/nodeagent/server.xml (No such file or directory)
[30/10/18 09:54:35:741 GMT] 00000001 AdminTool     A   ADMU0111E: Program exiting with error: java.io.FileNotFoundException: /opt/ibm/WebSphere/AppServer/profiles/AppSrv01/config/cells/workflowNode01Cell/nodes/Node1/servers/nodeagent/server.xml (No such file or directory)

And then it struck me ….

I'd just created the Deployment Manager and Node profiles ….

And had NOT yet federated the Node into the managed Cell …

So how the heck is it ever going to work ?

Until I federate the Node ….

/opt/ibm/WebSphere/AppServer/profiles/AppSrv01/bin/addNode.sh `hostname` 8879 -profileName AppSrv01 -username wasadmin -password passw0rd

ADMU0003I: Node Node1 has been successfully federated.
...

Can you say "Doofus" ? Or something much much worse !

WebSphere Application Server - TIOAOA

$
0
0
So I saw this: -

[30/10/18 12:49:51:057 GMT] 00000125 MBeanHelper   E   Could not invoke an operation on object: WebSphere:name=DataSourceCfgHelper,process=dmgr,platform=dynamicproxy,node=Dmgr,version=8.5.5.14,type=DataSourceCfgHelper,mbeanIdentifier=DataSourceCfgHelper,cell=workflowCell01,spec=1.0 because of an mbean exception: java.sql.SQLException: [jcc][t4][10262][11223][4.24.92] Unexpected Throwable caught: Class com/ibm/db2/jcc/t4/a illegally accessing "package private" member of class com/ibm/db2/jcc/t4/m. ERRORCODE=-4228, SQLSTATE=null DSRA0010E: SQL State = null, Error Code = -4,228

[30/10/18 12:50:23:130 GMT] 00000125 DSConfigurati W   DSRA8201W: DataSource Configuration: DSRA8040I: Failed to connect to the DataSource jdbc/ilogDataSource.  Encountered java.sql.SQLException: [jcc][t4][10262][11223][4.24.92] Unexpected Throwable caught: Class com/ibm/db2/jcc/t4/a illegally accessing "package private" member of class com/ibm/db2/jcc/t4/m. ERRORCODE=-4228, SQLSTATE=null DSRA0010E: SQL State = null, Error Code = -4,228.
java.sql.SQLException: [jcc][t4][10262][11223][4.24.92] Unexpected Throwable caught: Class com/ibm/db2/jcc/t4/a illegally accessing "package private" member of class com/ibm/db2/jcc/t4/m. ERRORCODE=-4228, SQLSTATE=null DSRA0010E: SQL State = null, Error Code = -4,228


whilst attempting to test a newly-minted JDBC data source on an equally newly-minted WAS ND 8.5.5.14 / DB2 11.1.3.3  environment.

I spent an age looking at the JDBC provider: -


which I had created using Jython: -

provider=AdminTask.createJDBCProvider('[-scope Cell='+cellID+' -databaseType DB2 -providerType "DB2 Using IBM JCC Driver" -implementationType "XA data source" -name "DB2 Using IBM JCC Driver (XA)" -classpath [${DB2_JCC_DRIVER_PATH}/db2jcc4.jar ${DB2_JCC_DRIVER_PATH}/db2jcc_license_cu.jar ] -nativePath [${DB2_JCC_DRIVER_NATIVEPATH} ] ]')

I also checked out the class path: -

ls -al /opt/ibm/WebSphere/AppServer/universalDriver/lib/

total 4140
drwxr-xr-x 2 wasadmin wasadmins      52 Oct 30 11:33 .
drwxr-xr-x 3 wasadmin wasadmins      16 Oct 30 08:18 ..
-r--r--r-- 1 wasadmin wasadmins 4234170 Oct 30 11:33 db2jcc4.jar
-rw-r--r-- 1 wasadmin wasadmins    1529 Oct 30 13:08 db2jcc_license_cu.jar


comparing it to what DB2 provides: -

ls -al /opt/ibm/db2/V11.1/java/

total 13012
drwxr-xr-x.  3 bin  bin     4096 Mar  3  2018 .
drwxr-xr-x. 42 root root    4096 Sep 20 10:56 ..
-rw-rw-rw-.  1 root root     169 Sep 20 10:55 42E32181339E47B2BF8145FD26612E69.properties
-r--r--r--.  1 bin  bin  2290737 Mar  3  2018 Common.jar
-r--r--r--.  1 bin  bin     1637 Mar  3  2018 db2c2c.jar
-r--r--r--.  1 bin  bin    75300 Mar  3  2018 db2dbgm.jar
-r--r--r--.  1 bin  bin    48203 Mar  3  2018 db2ext.jar
-r--r--r--.  1 bin  bin  1182501 Mar  3  2018 db2java.zip
-r--r--r--.  1 bin  bin  4234170 Mar  3  2018 db2jcc4.jar
-r--r--r--.  1 bin  bin  3813641 Mar  3  2018 db2jcc.jar
-r--r--r--.  1 bin  bin     1529 Mar  3  2018 db2jcc_license_cu.jar
-r--r--r--.  1 bin  bin   122830 Mar  3  2018 db2policy.jar
-r--r--r--.  1 bin  bin     7786 Mar  3  2018 db2qgjdbc.jar
-r--r--r--.  1 bin  bin     9455 Mar  3  2018 db2umplugin.jar
-r--r--r--.  1 bin  bin   618901 Mar  3  2018 ib6core.jar
-r--r--r--.  1 bin  bin    32637 Mar  3  2018 ib6extra.jar
-r--r--r--.  1 bin  bin   297505 Mar  3  2018 ib6js.jar
-r--r--r--.  1 bin  bin    74756 Mar  3  2018 ib6swing.jar
-r--r--r--.  1 bin  bin   103344 Mar  3  2018 ib6util.jar
-r--r--r--.  1 bin  bin     4859 Mar  3  2018 IBMUpdateUtil.jar
-r--r--r--.  1 bin  bin       59 Mar  3  2018 IBMUpdateUtil.prop
drwxr-xr-x.  7 bin  bin     4096 Mar  3  2018 jdk64
-r--r--r--.  1 bin  bin   347851 Mar  3  2018 us.jar


but to no avail.

And then I thought … have you tried TIOAOA ?

So I did….

And it worked.

For the benefit of others, the TIOAOA abbreviation / anagram comes from The IT Crowd: -


in which a common theme is "Have you tried turning it off and on again?"

:-) 


IBM Operational Decision Manager 8.9.2.1 - Missing a feature

$
0
0
I'm building a VM comprising the latest IBM Operational Decision Manager (ODM) Rules, namely 8.9.2.1.

As part of my build, I'm adding the Decision Center component to an existing WebSphere Application Server (WAS) cell.

And, as such, I needed a particular EAR file

jrules-teamserver-WAS85.ear

I looked here: -

ls -al /opt/ibm/ODM89/teamserver/applicationservers/WebSphere85

but it was completely empty.

I then looked back at what was available to install: -

/opt/ibm/InstallationManager/eclipse/tools/imcl listAvailablePackages -repositories /mnt/ODM892/Product/disk2/DC/repository.config,/mnt/ODM892/Fixpack/DS/updates/repository.config -features

com.ibm.websphere.odm.dc.v89_8.9.1000.20171018_1805 : Decision Center,com.ibm.wbdm.dts.wlp.feature,com.ibm.wbdm.dts.was.feature,com.ibm.wbdm.dts.tomcat.feature,com.ibm.wbdm.dts.jboss.feature,com.ibm.wbdm.dts.weblogic.feature,com.ibm.wdc.rules.samples.feature,Documentation,jdk,base
com.ibm.websphere.odm.dc.v89_8.9.0.20170123_1200 : Decision Center,com.ibm.wbdm.dts.wlp.feature,com.ibm.wbdm.dts.was.feature,com.ibm.wbdm.dts.tomcat.feature,com.ibm.wbdm.dts.jboss.feature,com.ibm.wbdm.dts.weblogic.feature,com.ibm.wdc.rules.samples.feature,Documentation,jdk,base
com.ibm.websphere.odm.dc.v89_8.9.2001.20180723_1215 : Decision Center,com.ibm.wbdm.dts.wlp.feature,com.ibm.wbdm.dts.was.feature,com.ibm.wbdm.dts.tomcat.feature,com.ibm.wbdm.dts.jboss.feature,com.ibm.wbdm.dts.weblogic.feature,com.ibm.wdc.rules.samples.feature,Documentation,jdk,base


and realised that, whilst I had the Decision Center and jdk and base but did NOT have com.ibm.wbdm.dts.was.feature 

I updated my response file: -

<server>
    <repository location='/mnt/ODM892/Product/disk1/DecisionServerRules/repository.config' temporary='true'/>
    <repository location='/mnt/ODM892/Fixpack/DC/updates/repository.config' temporary='true'/>
    <repository location='/mnt/ODM892/Product/disk2/DC/repository.config' temporary='true'/>
    <repository location='/mnt/ODM892/Fixpack/DS/updates/repository.config' temporary='true'/>
  </server>


  <install modify='false'>
    <offering profile='Operational Decision Manager V8.9' id='com.ibm.websphere.odm.dc.v89' version='8.9.2001.20180723_1215' features='Decision Center,com.ibm.wbdm.dts.was.feature,jdk,base' installFixes='none'/>
    <offering profile='Operational Decision Manager V8.9' id='com.ibm.websphere.odm.ds.rules.v89' version='8.9.2001.20180723_1224' features='com.ibm.wds.jdk.feature,com.ibm.wds.rules.res.feature,com.ibm.wds.rules.res.was.feature' installFixes='none'/>
  </install>


and re-ran the installation - this modifies what's already there, so there's little/no impact: -

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

Now I have the EAR file: -

ls -al /opt/ibm/ODM89/teamserver/applicationservers/WebSphere85

total 326336
drwxr-xr-x 2 wasadmin wasadmins        40 Oct 30 13:51 .
drwxr-xr-x 3 wasadmin wasadmins        24 Oct 30 13:51 ..
-rw-r--r-- 1 wasadmin wasadmins 334166718 Oct 30 13:51 jrules-teamserver-WAS85.ear


Yay!

IBM Operational Decision Manager - JSF a-no-no

$
0
0
I saw this: -

...
[30/10/18 14:56:55:795 GMT] 000000b0 ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0014E: Uncaught service() exception root cause Faces Servlet: com.ibm.websphere.servlet.error.ServletErrorReport: com.ibm.ws.jsp.JspCoreException: Unable to convert string &#39;#{ManagerBean.localeStr}&#39; to class javax.el.ValueExpression for attribute locale: java.lang.IllegalArgumentException: Property Editor not registered with the PropertyEditorManager
        at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:732)

...
Caused by: com.ibm.ws.jsp.JspCoreException: Unable to convert string '#{ManagerBean.localeStr}' to class javax.el.ValueExpression for attribute locale: java.lang.IllegalArgumentException: Property Editor not registered with the PropertyEditorManager

whilst attempting to log into a newly built IBM Operational Decision Manager (ODM) Rules environment, specifically the Decision Center ( aka the Rule Team Server ) : -


For the record, I'm running ODM 8.9.2.1 on WAS ND 8.5.5.14 and IBM Java 8: -

/opt/ibm/InstallationManager/eclipse/tools/imcl listInstalledPackages -features

com.ibm.cic.agent_1.8.9001.20180709_1302 : 
com.ibm.websphere.ND.v85_8.5.5014.20180802_1018 : com.ibm.sdk.6_64bit,ejbdeploy,embeddablecontainer,thinclient
com.ibm.websphere.odm.dc.v89_8.9.2001.20180723_1215 : Decision Center,com.ibm.wbdm.dts.was.feature
com.ibm.websphere.odm.ds.rules.v89_8.9.2001.20180723_1224 : com.ibm.wds.rules.res.feature,com.ibm.wds.rules.res.was.feature


This IBM developerWorks Answer: -


had the … answer 

It looks like it's a disparity between the version of Java Server Faces (JSF) that ODM uses and either WAS or Java.

The solution is to reconfigure the underlying Java Enterprise Edition (JEE) web applications ( Web Archives / WAR files ) to load their via own class loader first ( parent last ) rather than the default of using the WAS class loader.

Apart from that, it was also necessary to override session management and clear down the WAS temp folder at the profile root: -

ls /opt/ibm/WebSphere/AppServer/profiles/AppSrv01/temp/Node1/DecisionCenterClusterMember1/ILOG_Rule_Team_Server/

decisioncenter.war  teamserver.war

As it's my own VM, I simply chose to nuke the entire temp folder: -

rm -Rf ls /opt/ibm/WebSphere/AppServer/profiles/AppSrv01/temp

but that's definitely a YMMV case.

Once I did all of the above, and restarted the Decision Center cluster, all was good :-)

"The Soap RPC call can't be unmarshalled" - during IBM ODM 8.9.2.1 cluster creation

$
0
0
I saw this: -

...
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
        at java.lang.reflect.Method.invoke(Method.java:508)
        at com.ibm.wsspi.bootstrap.WSLauncher.launchMain(WSLauncher.java:234)
        at com.ibm.wsspi.bootstrap.WSLauncher.main(WSLauncher.java:96)
        at com.ibm.wsspi.bootstrap.WSLauncher.run(WSLauncher.java:77)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
        at java.lang.reflect.Method.invoke(Method.java:508)
        at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:587)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:198)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
        at java.lang.reflect.Method.invoke(Method.java:508)
        at org.eclipse.core.launcher.Main.invokeFramework(Main.java:340)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:282)
        at org.eclipse.core.launcher.Main.run(Main.java:981)
        at com.ibm.wsspi.bootstrap.WSPreLauncher.launchEclipse(WSPreLauncher.java:411)
        at com.ibm.wsspi.bootstrap.WSPreLauncher.main(WSPreLauncher.java:173)
Caused by: java.lang.reflect.UndeclaredThrowableException
        at com.sun.proxy.$Proxy3.getAttribute(Unknown Source)
        at com.ibm.ws.management.AdminClientImpl.getAttribute(AdminClientImpl.java:153)
        at com.ibm.ws.scripting.CommonScriptingObject.connectToAdminService(CommonScriptingObject.java:130)
        at com.ibm.ws.scripting.CommonScriptingObject.<init>(CommonScriptingObject.java:104)
        at com.ibm.ws.scripting.AdminControlClient.<init>(AdminControlClient.java:170)
        at com.ibm.ws.scripting.AbstractShell.createControlClient(AbstractShell.java:1289)
        at com.ibm.ws.scripting.AbstractShell.run(AbstractShell.java:2245)
        at com.ibm.ws.scripting.WasxShell.main(WasxShell.java:1172)
        ... 26 more
Caused by: [SOAPException: faultCode=SOAP-ENV:ServerException; msg=The Soap RPC call can&apos;t be unmarshalled.]


and: -

[30/10/18 19:49:53:173 GMT] 000000c3 LTPAServerObj E   SECJ0369E: Authentication failed when using LTPA. The exception is com.ibm.websphere.wim.exception.PasswordCheckFailedException: CWWIM4513E  The password match failed for the 'wasadmin' principal name..
...

whilst creating an ODM Decision Center cluster: -

/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/bin/createODMDecisionCenterCluster.sh -adminUsername wasadmin -adminPassword passw0rd -clusterPropertiesFile /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/bin/odm/ODMDecisionCenterCluster.properties

I knew that the credentials that I was using were A-OK: -

/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/bin/wsadmin.sh -lang jython -username wasadmin -password passw0rd

WASX7209I: Connected to process "dmgr" on node Dmgr using SOAP connector;  The type of process is: DeploymentManager
WASX7031I: For help, enter: "print Help.help()"



Thankfully we have this: -


and I established that APAR RS03063 is shipped via a fix pack to the ODM Profile Templates: -


Once I downloaded and installed this, all was well.

NB I did have to drop/recreate the WAS profiles etc. so it was a bit of a "nuke n' pave"

RAR - Why does my profile augmentation fail ?

$
0
0
During a build of an IBM Operational Decision Manager (ODM) Rules 8.9.2.1 environment, I was trying ( and failing ) to augment an existing WebSphere Application Server (WAS) profile - the Deployment Manager - Dmgr01 - with ODM Decision Server (RES) capabilities: -

/opt/ibm/WebSphere/AppServer/bin/manageprofiles.sh -augment -profileName Dmgr01 -templatePath /opt/ibm/WebSphere/AppServer/profileTemplates/odm/decisionserver/management/ -odmHome /opt/ibm/ODM89/

simply returned: -

...
/opt/ibm/WebSphere/AppServer/bin/manageprofiles.sh -augment -profileName Dmgr01 -templatePath /opt/ibm/WebSphere/AppServer/profileTemplates/odm/decisionserver/management/ -odmHome /opt/ibm/ODM89/
INSTCONFFAILED: Profile augmentation failed. For more information, consult /opt/ibm/WebSphere/AppServer/logs/manageprofiles/Dmgr01_augment.log.



I checked the log file: -

view /opt/ibm/WebSphere/AppServer/logs/manageprofiles/Dmgr01_augment.log

which showed: -

...
<record>
  <date>2018-10-31T09:47:29</date>
  <millis>1540979249438</millis>
  <sequence>599</sequence>
  <logger>com.ibm.ws.install.configmanager.actionengine.ant.utils.ANTLogToCmtLogAdapter</logger>
  <level>WARNING</level>
  <class>com.ibm.ws.install.configmanager.actionengine.ant.utils.ANTLogToCmtLogAdapter</class>
  <method>messageLogged</method>
  <thread>1</thread>
  <message>wsadmin task failed with return code :105</message>
</record>

...
<record>
  <date>2018-10-31T09:47:24</date>
  <millis>1540979244994</millis>
  <sequence>576</sequence>
  <logger>com.ibm.ws.install.configmanager.actionengine.ant.utils.AntTaskToLogToConfigManagersLogFiles</logger>
  <level>INFO</level>
  <class>/opt/ibm/WebSphere/AppServer/profileTemplates/odm/decisionserver/management/actions/decisionServerSanityCheck.ant:7: </class>
  <method>decisionServerSanityCheck</method>
  <thread>1</thread>
  <message>Calling decisionServerSanityCheck.py with ODM_HOME=/opt/ibm/ODM89/</message>
</record>

...
<record>
  <date>2018-10-31T09:47:24</date>
  <millis>1540979244994</millis>
  <sequence>577</sequence>
  <logger>com.ibm.ws.install.configmanager.actionengine.ant.utils.AntTaskToLogToConfigManagersLogFiles</logger>
  <level>INFO</level>
  <class>/opt/ibm/WebSphere/AppServer/profileTemplates/odm/decisionserver/management/actions/decisionServerSanityCheck.ant:9: </class>
  <method>decisionServerSanityCheck</method>
  <thread>1</thread>
  <message>${WSADMIN_EXECUTABLE} -conntype NONE -f /opt/ibm/WebSphere/AppServer/profileTemplates/odm/decisionserver/management/actions/scripts/decisionServerSanityCheck.py /opt/ibm/WebSphere/AppServer/profileTemplates/odm/decisionserver/management/actions/scripts /opt/ibm/ODM89/</message>
</record>

...
<record>
  <date>2018-10-31T09:47:29</date>
  <millis>1540979249457</millis>
  <sequence>664</sequence>
  <logger>com.ibm.ws.install.configmanager.ConfigManager</logger>
  <level>WARNING</level>
  <class>com.ibm.ws.install.configmanager.ConfigManager</class>
  <method>executeAllActionsFound</method>
  <thread>1</thread>
  <message>Fatal configuration action failed: com.ibm.ws.install.configmanager.actionengine.ConfigAction-/opt/ibm/WebSphere/AppServer/profileTemplates/odm/decisionserver/management/actions/decisionServerSanityCheck.ant</message>
</record>
<record>
  <date>2018-10-31T09:47:29</date>
  <millis>1540979249457</millis>
  <sequence>665</sequence>
  <logger>com.ibm.ws.install.configmanager.ConfigManager</logger>
  <level>SEVERE</level>
  <class>com.ibm.ws.install.configmanager.ConfigManager</class>
  <method>launch</method>
  <thread>1</thread>
  <message>ConfigManager action execution failed on a fatal action</message>
</record>
<record>
  <date>2018-10-31T09:47:29</date>
  <millis>1540979249457</millis>
  <sequence>666</sequence>
  <logger>com.ibm.ws.install.configmanager.ConfigManager</logger>
  <level>INFO</level>
  <class>com.ibm.ws.install.configmanager.ConfigManager</class>
  <method>launch</method>
  <thread>1</thread>
  <message>Returning with return code: INSTCONFFAILED</message>
</record>
<record>
  <date>2018-10-31T09:47:29</date>
  <millis>1540979249457</millis>
  <sequence>667</sequence>
  <logger>com.ibm.wsspi.profile.WSProfile</logger>
  <level>SEVERE</level>
  <class>com.ibm.wsspi.profile.WSProfile</class>
  <method>doAugment</method>
  <thread>1</thread>
  <message>Augmentation of profile Dmgr01 at path /opt/ibm/WebSphere/AppServer/profiles/Dmgr01 using profile template /opt/ibm/WebSphere/AppServer/profileTemplates/odm/decisionserver/management failed.</message>
</record>



I dug into the Deployment Manager logs further, and found this: -

cat  /opt/ibm/WebSphere/AppServer/logs/manageprofiles/Dmgr01/odm/decisionServerSanityCheck.wsadmin.log

which was WAY more useful: -

...
WASX7357I: By request, this scripting client is not connected to any server process. Certain configuration and application operations will be available in local mode.
WASX7303I: The following options are passed to the scripting environment and are available as arguments that are stored in the argv variable: "[/opt/ibm/WebSphere/AppServer/profileTemplates/odm/decisionserver/management/actions/scripts, /opt/ibm/ODM89]"
Processing sanatiy check before augmentation
ERROR: The specified ODM_HOME does not look correct, unable to find jrules-res-xu-WAS85.rar!
Traceback (most recent call last):
  File "<string>", line 41, in ?
RuntimeError: ERROR: The specified ODM_HOME does not look correct!
WASX7017E: Exception received while running file "/opt/ibm/WebSphere/AppServer/profileTemplates/odm/decisionserver/management/actions/scripts/decisionServerSanityCheck.py"; exception information: com.ibm.bsf.BSFException: exception from Jython:
Traceback (innermost last):
  File "<string>", line 87, in ?
RuntimeError: An error occur during sanity checks



This is what I have installed: -

/opt/ibm/InstallationManager/eclipse/tools/imcl listInstalledPackages -features -long

/opt/ibm/InstallationManager/eclipse : com.ibm.cic.agent_1.8.9001.20180709_1302 : IBM® Installation Manager : 1.8.9.1 : 
/opt/ibm/WebSphere/AppServer : com.ibm.websphere.ND.v85_8.5.5014.20180802_1018 : IBM WebSphere Application Server Network Deployment : 8.5.5.14 : com.ibm.sdk.6_64bit,ejbdeploy,embeddablecontainer,thinclient
/opt/ibm/ODM89 : com.ibm.websphere.odm.dc.v89_8.9.2001.20180723_1215 : Decision Center : 8.9.2.1 : Decision Center,com.ibm.wbdm.dts.was.feature
/opt/ibm/ODM89 : com.ibm.websphere.odm.ds.rules.v89_8.9.2001.20180723_1224 : Decision Server Rules : 8.9.2.1 : com.ibm.wds.rules.res.feature,com.ibm.wds.rules.res.was.feature
/opt/ibm/ODM89 : com.ibm.websphere.odm.pt.dc.v89_8.9.2001.20180723_1240 : Decision Center profile templates for WebSphere Application Server   : 8.9.2.1 : 
/opt/ibm/ODM89 : com.ibm.websphere.odm.pt.rules.v89_8.9.2001.20180723_1243 : Decision Server Rules profile templat
es for WebSphere Application Server  : 8.9.2.1 : 

and yet this is what I have in terms of WAS85 artefacts for the RES: -

ls /opt/ibm/ODM89/executionserver/applicationservers/WebSphere85/

-rw-r--r-- 1 wasadmin wasadmins 14674397 Jul 20 18:23 jrules-res-htds-WAS85.ear
-rw-r--r-- 1 wasadmin wasadmins 30996584 Jul 20 18:23 jrules-res-management-WAS85.ear
-rw-r--r-- 1 wasadmin wasadmins  2136520 Jul 20 18:23 jrules-res-mdb-WAS85.jar
-rw-r--r-- 1 wasadmin wasadmins  1559934 Jul 20 18:23 jrules-res-session-ejb3-WAS85.jar
-rw-r--r-- 1 wasadmin wasadmins 67130079 Jul 20 18:23 jrules-ssp-WAS85.ear


Note the absence of said RAR file.

I dug around within the source media, and found this: -

./disk1/ProfileTemplateRules/native/com.ibm.websphere.odm.rules.res.was_8.9.1000.20171018-1755.zip

which I unzipped to a temporary directory: -

unzip ./disk1/ProfileTemplateRules/native/com.ibm.websphere.odm.rules.res.was_8.9.1000.20171018-1755.zip -d /tmp/snafu

Archive:  ./disk1/ProfileTemplateRules/native/com.ibm.websphere.odm.rules.res.was_8.9.1000.20171018-1755.zip
   creating: /tmp/snafu/executionserver/
   creating: /tmp/snafu/executionserver/applicationservers/
   creating: /tmp/snafu/executionserver/applicationservers/WebSphere85/
  inflating: /tmp/snafu/executionserver/applicationservers/WebSphere85/jrules-res-htds-WAS85.ear  
  inflating: /tmp/snafu/executionserver/applicationservers/WebSphere85/jrules-res-management-WAS85.ear  
  inflating: /tmp/snafu/executionserver/applicationservers/WebSphere85/jrules-res-mdb-WAS85.jar  
  inflating: /tmp/snafu/executionserver/applicationservers/WebSphere85/jrules-res-session-ejb3-WAS85.jar  
  inflating: /tmp/snafu/executionserver/applicationservers/WebSphere85/jrules-res-xu-WAS85.rar  
  inflating: /tmp/snafu/executionserver/applicationservers/WebSphere85/jrules-ssp-WAS85.ear  


I then grabbed the missing RAR - jrules-res-xu-WAS85.rar - and placed it here: -

/opt/ibm/ODM89/executionserver/applicationservers/WebSphere85/

-rw-r--r-- 1 wasadmin wasadmins 14674397 Jul 20 18:23 jrules-res-htds-WAS85.ear
-rw-r--r-- 1 wasadmin wasadmins 30996584 Jul 20 18:23 jrules-res-management-WAS85.ear
-rw-r--r-- 1 wasadmin wasadmins  2136520 Jul 20 18:23 jrules-res-mdb-WAS85.jar
-rw-r--r-- 1 wasadmin wasadmins  1559934 Jul 20 18:23 jrules-res-session-ejb3-WAS85.jar
-rw-r--r-- 1 wasadmin wasadmins 25865277 Oct 31 10:50 jrules-res-xu-WAS85.rar
-rw-r--r-- 1 wasadmin wasadmins 67130079 Jul 20 18:23 jrules-ssp-WAS85.ear


This time around, the augmentation succeeds: -

/opt/ibm/WebSphere/AppServer/bin/manageprofiles.sh -augment -profileName Dmgr01 -templatePath /opt/ibm/WebSphere/AppServer/profileTemplates/odm/decisionserver/management/ -odmHome /opt/ibm/ODM89/

INSTCONFSUCCESS: Profile augmentation succeeded.

Now I need to work out what happened during the binary installation …….

IBM ODM and RAR - An Update

$
0
0
As an update to my earlier post: -


I uninstalled all of the ODM components: -

/opt/ibm/InstallationManager/eclipse/tools/imcl uninstall com.ibm.websphere.odm.pt.rules.v89_8.9.2001.20180723_1243

/opt/ibm/InstallationManager/eclipse/tools/imcl uninstall com.ibm.websphere.odm.pt.dc.v89_8.9.2001.20180723_1240

/opt/ibm/InstallationManager/eclipse/tools/imcl uninstall com.ibm.websphere.odm.ds.rules.v89_8.9.2001.20180723_1224

/opt/ibm/InstallationManager/eclipse/tools/imcl uninstall com.ibm.websphere.odm.dc.v89_8.9.2001.20180723_1215

and cleaned up the ODM directory: -

rm -Rf /opt/ibm/ODM89/*

and removed the WAS profiles: -

/opt/ibm/WebSphere/AppServer/bin/manageprofiles.sh -deleteAll

and cleaned up the WAS profiles directory: -

rm -Rf /opt/ibm/WebSphere/AppServer/profiles/*

and then reinstalled the binaries: -

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

Installed com.ibm.websphere.odm.dc.v89_8.9.2001.20180723_1215 to the /opt/ibm/ODM89 directory.
Installed com.ibm.websphere.odm.ds.rules.v89_8.9.2001.20180723_1224 to the /opt/ibm/ODM89 directory.
Installed com.ibm.websphere.odm.pt.rules.v89_8.9.2001.20180723_1243 to the /opt/ibm/ODM89 directory.
Installed com.ibm.websphere.odm.pt.dc.v89_8.9.2001.20180723_1240 to the /opt/ibm/ODM89 directo
ry.

and re-checked: -

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

total 139280
drwxr-xr-x 2 wasadmin wasadmins     4096 Oct 31 11:04 .
drwxr-xr-x 3 wasadmin wasadmins       24 Oct 31 11:04 ..
-rw-r--r-- 1 wasadmin wasadmins 14674397 Jul 20 18:23 jrules-res-htds-WAS85.ear
-rw-r--r-- 1 wasadmin wasadmins 30996584 Jul 20 18:23 jrules-res-management-WAS85.ear
-rw-r--r-- 1 wasadmin wasadmins  2136520 Jul 20 18:23 jrules-res-mdb-WAS85.jar
-rw-r--r-- 1 wasadmin wasadmins  1559934 Jul 20 18:23 jrules-res-session-ejb3-WAS85.jar
-rw-r--r-- 1 wasadmin wasadmins 26111541 Oct 31 11:04 jrules-res-xu-WAS85.rar
-rw-r--r-- 1 wasadmin wasadmins 67130079 Jul 20 18:23 jrules-ssp-WAS85.ear


and then re-ran the augmentation steps : -

/opt/ibm/WebSphere/AppServer/bin/manageprofiles.sh -augment -templatePath /opt/ibm/WebSphere/AppServer/profileTemplates/odm/decisionserver/management/ -profileName Dmgr01 -odmHome /opt/ibm/ODM89

INSTCONFSUCCESS: Profile augmentation succeeded.

/opt/ibm/WebSphere/AppServer/bin/manageprofiles.sh -augment -templatePath /opt/ibm/WebSphere/AppServer/profileTemplates/odm/decisioncenter/management/ -profileName Dmgr01 -odmHome /opt/ibm/ODM89

INSTCONFSUCCESS: Profile augmentation succeeded.

so that's all good then :-)

Viewing all 1851 articles
Browse latest View live