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

IBM BPM 8.5.5 - Process Center to Process Server - and vice versa - beware of the quotes

$
0
0

I'm just completing the build of an IBM BPM Advanced 8.5.5 environment, setting up Process Server on one VM to be available for online deployments from a Process Center on another VM.

All was looking good until I tried to start the third cluster, AppCluster, which contains the Business Process Modelling Notation (BPNM) run-time.

The start process stalled, and I found: -

...
[25/08/14 18:41:30:302 BST] 0000011b wle_repocore_ W   CWLLG4010W: The repository contact failed due to untrusted SSL certificate. Process Center's SSL certificate needs to be trusted by Process Server, please see: http://pic.dhe.ibm.com/infocenter/dmndhelp/v8r5m0/topic/com.ibm.wbpm.admin.doc/topics/tins_cnfg_ssl_nd.html
[25/08/14 18:41:40:350 BST] 0000011b wle_repocore_ W   CWLLG4010W: The repository contact failed due to untrusted SSL certificate. Process Center's SSL certificate needs to be trusted by Process Server, please see: http://pic.dhe.ibm.com/infocenter/dmndhelp/v8r5m0/topic/com.ibm.wbpm.admin.doc/topics/tins_cnfg_ssl_nd.html
[25/08/14 18:41:50:378 BST] 0000011b wle_repocore_ W   CWLLG4010W: The repository contact failed due to untrusted SSL certificate. Process Center's SSL certificate needs to be trusted by Process Server, please see: http://pic.dhe.ibm.com/infocenter/dmndhelp/v8r5m0/topic/com.ibm.wbpm.admin.doc/topics/tins_cnfg_ssl_nd.html

...

in SystemOut.log.

The exception refers one here: -


which really tells me what I already knew e.g. that I need to retrieve the endpoint certificate from Process Center ( actually from IBM HTTP Server fronting PC ) into the Process Server's cell default trust-store.

This I did via a Jython script: -

/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/wsadmin.sh -lang jython -host `hostname` -port 8879

cellID=AdminControl.getCell() 
AdminTask.retrieveSignerFromPort('[-keyStoreName CellDefaultTrustStore -keyStoreScope (cell):'+cellID+' -host rhel6.uk.ibm.com -port 8443 -certificateAlias ProcessCenter -sslConfigName CellDefaultSSLSettings -sslConfigScopeName (cell):'+cellID+' ]') 
AdminConfig.save() 
AdminNodeManagement.syncActiveNodes() 
quit 

( port 8443 is the HTTPS port on which IHS listens )

Once I did this, and restarted the cluster, it started up without problems but .....

I now see this: -

...
[25/08/14 18:56:57:511 BST] 000000ee wle_repocore_ W   CWLLG0098W: Unable to connect to Process Center.
[25/08/14 18:57:07:536 BST] 000000ee wle_repocore_ W   CWLLG0098W: Unable to connect to Process Center.
[25/08/14 18:57:17:554 BST] 000000ee wle_repocore_ W   CWLLG0098W: Unable to connect to Process Center.

...

in SystemOut.log and this: -

...
[25/08/14 19:05:08:605 BST]     FFDC Exception:java.net.ConnectException SourceId:com.lombardisoftware.servlet.heartbeat.RepositoryHeartbeat.callProcessCenter ProbeId:518 Reporter:com.lombardisoftware.servlet.heartbeat.RepositoryHeartbeat@b975d2a1
java.net.ConnectException: Connection refused
....

in the node's FFDC logs.

When I looked at the error_log for the IHS instance fronting Process Center, I can see this: -

...
[Mon Aug 25 18:46:57 2014] [error] [client 10.99.79.100] [7f1a780147b0] [7824] SSL0279E: SSL Handshake Failed due to fatal alert from client. Client sent fatal alert [level 2 (fatal), description 46 (certificate_unknown)]  [10.99.79.100:44309 -> 10.99.79.101:8443] [18:46:57.000038538] 0ms
[Mon Aug 25 18:47:00 2014] [error] [client 10.99.79.100] [7f1a58004180] [6406] SSL0279E: SSL Handshake Failed due to fatal alert from client. Client sent fatal alert [level 2 (fatal), description 46 (certificate_unknown)]  [10.99.79.100:40941 -> 10.99.79.101:8443] [18:47:00.000955120] 0ms
[Mon Aug 25 18:52:37 2014] [error] [client 10.99.79.100] [7f1a700147b0] [7824] SSL0279E: SSL Handshake Failed due to fatal alert from client. Client sent fatal alert [level 2 (fatal), description 46 (certificate_unknown)]  [10.99.79.100:41584 -> 10.99.79.101:8443] [18:52:37.000689637] 0ms
...

whereas I see nothing in the corresponding SystemOut.log for the AppCluster cluster member on the Process Center box.

This suggests that IHS ( Process Center ) is receiving a HTTPS connection from the AppCluster JVM ( Process Server ), but doesn't have a corresponding SSL certificate to decrypt the connection.

I fixed this by exporting the signer certificate from the cell-default trust store ( Process Server ): -

/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/wsadmin.sh -lang jython -host `hostname` -port 8879

cellID=AdminControl.getCell() 
AdminTask.extractSignerCertificate('[-keyStoreName CellDefaultTrustStore -keyStoreScope (cell):'+cellID+' -certificateFilePath /tmp/rhel6.uk.ibm.com -base64Encoded false -certificateAlias root ]')

'/tmp/rhel6.uk.ibm.com'

quit

and imported it into the IHS key store: -

/opt/IBM/HTTPServer/bin/gskcapicmd -cert -add -db /opt/IBM/HTTPServer/ssl/keystore.kdb -pw passw0rd -file ~/rhel6.uk.ibm.com 

and validated it as follows: -

/opt/IBM/HTTPServer/bin/gskcapicmd -cert -list -db /opt/IBM/HTTPServer/ssl/keystore.kdb -pw passw0rd

Certificates found
* default, - personal, ! trusted, # secret key
!"CN=rhel6.uk.ibm.com,OU=Root Certificate,OU=uk,O=ibm,C=com"
*-rhel6.uk.ibm.com


Whilst this resolved the IHS exception, I'm still seeing: -

...
[25/08/14 18:56:57:511 BST] 000000ee wle_repocore_ W   CWLLG0098W: Unable to connect to Process Center.
...

This led me to check the Process Server configuration, in terms of what it knows about the Process Center box: -

/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/wsadmin.sh -lang jython -host `hostname` -port 8879

ps = AdminConfig.getid("/Cell:/ServerCluster:AppCluster/BPMClusterConfigExtension:/BPMProcessServer:/")
print AdminConfig.show(ps)


[authoringEnvironmentPortalPrefix portal]
[baseUrl teamworks/webservices]
[bpdTrackingEnabledDefault false]
[clientLink teamworks]
[coachDesignerXslUrl teamworks/coachdesigner/transform/CoachDesigner.xsl]
[commonPortalPrefix portal]
[consoleSections [root(cells/bpm855Cell/clusters/AppCluster|cluster-bpm.xml#BPMConsoleSection_1408983776561) console.lombardi.admin(cells/bpm855Cell/clusters/AppCluster|cluster-bpm.xml#BPMConsoleSection_1408983776562) console.user.management(cells/bpm855Cell/clusters/AppCluster|cluster-bpm.xml#BPMConsoleSection_1408983776563) console.monitoring(cells/bpm855Cell/clusters/AppCluster|cluster-bpm.xml#BPMConsoleSection_1408983776564) console.event.manager(cells/bpm855Cell/clusters/AppCluster|cluster-bpm.xml#BPMConsoleSection_1408983776565) console.admin.tools(cells/bpm855Cell/clusters/AppCluster|cluster-bpm.xml#BPMConsoleSection_1408983776566)]]
[defaultNamespaceUri schema/]
[heartBeatInterval 10]
[httpProtocolOnly true]
[imagePrefix teamworks]
[processAdminPrefix ProcessAdmin]
[processCenterInternalUrl https://rhel6.uk.ibm.com:8443/ProcessCenterInternal]
[processCenterUrl https://rhel6.uk.ibm.com:8443/ProcessCenter]

[processHelpWikiUrlEdit processhelp/en/Special:Edit?topic=%TITLE%&teamworksTitle=%TEAMWORKS_TITLE%]
[processHelpWikiUrlView processhelp/en/%TITLE%?teamworksTitle=%TEAMWORKS_TITLE%]
[repositoryPrefix ProcessCenter]
[security (cells/bpm855Cell/clusters/AppCluster|cluster-bpm.xml#BPMServerSecurity_1408983776561)]
[servletPrefix teamworks]
[teamworksWebappPrefix teamworks]
[useHTTPSURLPrefixes true]
[virtualHost (cells/bpm855Cell/clusters/AppCluster|cluster-bpm.xml#BPMVirtualHostInfo_1408983776561)]
[webapiPrefix webapi]


Whilst the processCenterInternalUrl and processCenterUrl entries were quite correct, the parameter httpProtocolOnly should've been set to FALSE.

I changed this during the same wsadmin session: -

AdminConfig.modify(ps, [['httpProtocolOnly','false']])
AdminConfig.save() 
AdminNodeManagement.syncActiveNodes() 


and validated the change: -

ps = AdminConfig.getid("/Cell:/ServerCluster:AppCluster/BPMClusterConfigExtension:/BPMProcessServer:/")
print AdminConfig.show(ps)


...
[httpProtocolOnly false]
...

This got me further forward, but I'm still seeing: -

...
[25/08/14 20:52:33:059 BST] 000000ed wle_repocore_ W   CWLLG0098W: Unable to connect to Process Center.
[25/08/14 20:52:43:078 BST] 000000ed wle_repocore_ W   CWLLG0098W: Unable to connect to Process Center.
[25/08/14 20:52:53:107 BST] 000000ed wle_repocore_ W   CWLLG0098W: Unable to connect to Process Center.

....

This led me to the FFC logs ( /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/ffdc ): -

[25/08/14 20:52:23:026 BST]     FFDC Exception:javax.net.ssl.SSLException SourceId:com.lombardisoftware.servlet.heartbeat.RepositoryHeartbeat.callProcessCenter ProbeId:518 Reporter:com.lombardisoftware.servlet.heartbeat.RepositoryHeartbeat@4ebf502e
javax.net.ssl.SSLException: hostname in certificate didn't match: <rhel6.uk.ibm.com> != <"rhel6.uk.ibm.com>
at org.apache.commons.httpclient.protocol.AbstractVerifier.verify(Unknown Source)
at org.apache.commons.httpclient.protocol.BrowserCompatHostnameVerifier.verify(Unknown Source)
at org.apache.commons.httpclient.protocol.AbstractVerifier.verify(Unknown Source)
at org.apache.commons.httpclient.protocol.AbstractVerifier.verify(Unknown Source)
at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(Unknown Source)
at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(Unknown Source)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
at com.lombardisoftware.server.util.HttpUtils.execute(HttpUtils.java:123)
at com.lombardisoftware.server.util.HttpUtils.executeWithBasicAuthenticationInternal(HttpUtils.java:109)
at com.lombardisoftware.server.util.HttpUtils.executeWithBasicAuthentication(HttpUtils.java:63)
at com.lombardisoftware.servlet.heartbeat.RepositoryHeartbeat.contactProcessCenterInternal(RepositoryHeartbeat.java:609)
at com.lombardisoftware.servlet.heartbeat.RepositoryHeartbeat.callProcessCenter(RepositoryHeartbeat.java:490)
at com.lombardisoftware.servlet.heartbeat.RepositoryHeartbeat.registerWithRepository(RepositoryHeartbeat.java:433)
at com.lombardisoftware.servlet.heartbeat.RepositoryHeartbeat.beat(RepositoryHeartbeat.java:366)
at com.lombardisoftware.servlet.heartbeat.RepositoryHeartbeat.run(RepositoryHeartbeat.java:169)


Interestingly, when I used "Retrieve from port" in the WAS Integrated Solutions Console (ISC), I also noticed that the Distinguished Name (DN) of the certificate was: -


rather than: -


In other words, the quotes ( " ) were creeping in somewhere .....

Given that the "failing" SSL certificate was coming from IHS ( remember, Process Server "talks" to Process Center via IHS, rather than the WAS Web Container port ), I looked at the process that I had used to generate SSL certificates in IHS.

Lo and behold .....

This is the command that I was using to generate the self-signed certificate in IHS: -

/opt/IBM/HTTPServer/bin/gskcapicmd -cert -create -db /opt/IBM/HTTPServer/ssl/keystore.kdb -pw passw0rd -size 2048 -dn cn=rhel6.uk.ibm.com\\,o=ibm\\,c=uk -label "rhel6.uk.ibm.com" -default_cert yes

I strongly suspect that the addition of the \\ characters was somehow causing the problem.

I removed the certificate and then recreated it WITHOUT the \\ characters: -

/opt/IBM/HTTPServer/bin/gskcapicmd -cert -create -db /opt/IBM/HTTPServer/ssl/keystore.kdb -pw passw0rd -size 2048 -dn cn=rhel6.uk.ibm.com\\,o=ibm\\,c=uk -label "rhel6.uk.ibm.com" -default_cert yes

Having restarted IHS and re-imported the IHS certificate into the cell-default trust store for Process Server, things then burst into life.

The moral of the story ? SSL is wonderful and powerful and can really mix you up :-)

PS In conclusion, this is the way that the Cell Default Trust Stores look on Process Center and Process Server: -

Process Center has the root signer certificate for the Process Server cell
Process Server has the self-signed certificate from IHS on the Process Center cell

PPS The whole business with importing the Process Server root certificate into the Process Center IHS keystore .... probably best to forget that :-)


Background Reading - IBM BPM - Process Designer and SSL Goodness

$
0
0
Not sure whether this will help me resolve a PD to PC problem on a newly minted BPM Advanced 8.5.0.1 environment, but I'm book-marking these for future reading: -




For the record, Process Designer has a number of SSL object stores: -

/etc/trust.p12
/etc/key.p12
cacerts

which is nice :-)

IBM Business Monitor and DB2 users, not instances

$
0
0
So I have been wrestling with IBM Business Monitor and, more specifically, Cognos, which was failing to start up with errors such as DPR-DPR-1035, DPR-CMI-4007CM-CFG-5063 and CM-CFG-5137.

Various Technotes etc. suggested that the problem might be with the DB2 database.

I did some digging: -

db2 list tables for schema db2user2

db2 connect to cognoscs

   Database Connection Information

 Database server        = DB2/AIX64 10.1.0
 SQL authorization ID   = DB2INST3
 Local database alias   = COGNOSCS


db2 list tables for schema DB2USER2 

Table/View                      Schema          Type  Creation time
------------------------------- --------------- ----- --------------------------
CMCAPACITY                      DB2USER2        T     2014-08-26-15.26.49.093007
CMSYSPROPS                      DB2USER2        T     2014-08-26-15.26.48.688417

  2 record(s) selected.

whereas this is what I should be seeing: -

db2 list tables for schema DB2INST3

...
Table/View                      Schema          Type  Creation time             
------------------------------- --------------- ----- --------------------------
CMARCHIVEQUEUE                  DB2INST3        T     2014-05-02-19.01.41.736857
CMARCHIVESTATUS                 DB2INST3        T     2014-05-02-18.59.53.722937
CMCAKEYS                        DB2INST3        T     2014-05-02-18.59.47.494415
CMCAPACITY                      DB2INST3        T     2014-05-02-18.59.43.961958
CMCAPROPS                       DB2INST3        T     2014-05-02-18.59.49.009567
CMCLASSES                       DB2INST3        T     2014-05-02-19.01.30.263672
CMCRYPTOKEYS                    DB2INST3        T     2014-05-02-18.59.45.716151
CMDATA                          DB2INST3        T     2014-05-02-18.59.52.343365
CMDATAUPGRADE                   DB2INST3        T     2014-05-02-19.01.39.248572
CMDELETEQUEUE                   DB2INST3        T     2014-05-02-19.01.42.466589
CMGUIDS                         DB2INST3        T     2014-05-02-19.01.32.947199
CMLOCALES                       DB2INST3        T     2014-05-02-19.01.31.703091
CMOBJECTS                       DB2INST3        T     2014-05-02-18.59.50.444984
CMOBJNAMES                      DB2INST3        T     2014-05-02-18.59.51.545778
CMOBJPROPS1                     DB2INST3        T     2014-05-02-18.59.55.174490
CMOBJPROPS10                    DB2INST3        T     2014-05-02-18.59.55.916177
CMOBJPROPS11                    DB2INST3        T     2014-05-02-18.59.57.279869
CMOBJPROPS13                    DB2INST3        T     2014-05-02-18.59.58.081353
CMOBJPROPS14                    DB2INST3        T     2014-05-02-18.59.59.524858
CMOBJPROPS15                    DB2INST3        T     2014-05-02-19.00.00.901173
CMOBJPROPS16                    DB2INST3        T     2014-05-02-19.00.02.495462
CMOBJPROPS17                    DB2INST3        T     2014-05-02-19.00.04.026643
CMOBJPROPS18                    DB2INST3        T     2014-05-02-19.00.04.740375
CMOBJPROPS2                     DB2INST3        T     2014-05-02-19.00.06.155965
CMOBJPROPS20                    DB2INST3        T     2014-05-02-19.00.06.961562

...

I figured out that the problem is  :-)

I'm connecting from WAS to DB2 as a user other than the DB2 instance account, and ( therefore ) I need to change my SQL that's used to create the database objects etc.

Here's what worked for me: - 

db2 "CHANGE DATABASE COGNOSCS COMMENT WITH 'IBM Cognos Content Store'"
db2 CONNECT TO COGNOSCS

db2 GRANT CREATETAB,BINDADD,CONNECT,IMPLICIT_SCHEMA ON DATABASE  TO USER db2user2

db2 UPDATE DATABASE CONFIGURATION USING LOCKTIMEOUT 240 DEFERRED

db2 CREATE BUFFERPOOL CCS_08KBP IMMEDIATE SIZE 1000 PAGESIZE 8K
db2 CREATE BUFFERPOOL CCS_32KBP IMMEDIATE SIZE 1000 PAGESIZE 32K

db2 CREATE SYSTEM TEMPORARY TABLESPACE TSN_SYS_CCS IN DATABASE PARTITION GROUP IBMTEMPGROUP PAGESIZE 32K BUFFERPOOL CCS_32KBP

db2 CREATE USER TEMPORARY TABLESPACE TSN_USR_CCS IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 8K BUFFERPOOL CCS_08KBP
db2 CREATE REGULAR TABLESPACE TSN_REG_CCS IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 8K BUFFERPOOL CCS_08KBP

db2 GRANT USE OF TABLESPACE TSN_USR_CCS TO USER db2user2
db2 GRANT USE OF TABLESPACE TSN_REG_CCS TO USER db2user2

db2 terminate

Once I rebuilt the COGNOSCS database, and restarted the Support cluster, all was well :-)

Guidelines for setting ulimits (WebSphere Application Server) - includes RHEL 6 updates

$
0
0

This document describes various ways to set ulimit values on UNIX and Linux operating systems as well as information that pertains to WebSphere Application Server

...
Global settings are set in the file /etc/security/limits.conf.
...

...
On Red Hat Enterprise Linux 6, why are my settings for nproc (ulimit -u) not being honored. Red Hat Enterprise Linux 6 has introduced a new configuration file, addressed in a bug report, ( /etc/security/limits.d/90-nproc.conf ) that overrides the nproc setting in the limits.conf. This file contains a line for nproc configured with a soft limit of 1024. 

*          soft    nproc     1024 

The rationale for this was to prevent fork bombs from occurring, To keep using the limits.conf for your nproc ulimit settings, you would need to comment this line out by making the first character on the line a hash/pound symbol. 

#*          soft    nproc     1024
...

Gah, not again - Installation of IBM Cognos Business Intelligence has failed.

$
0
0
As if by magic, here it is again: -

ERROR: Error during "install" phase:

Installation of IBM Cognos Business Intelligence has failed.

Return code : -1

Building upon previous posts: -




This time I was seeing: -

<entry num='171' time='1409082967257' elapsed='00:50.44' level='ERROR' thread='Thread-23'>
 <logger>global</logger>
 <class>com.ibm.cognos.exec.Install</class>
 <method>exec</method>
 <message>com.ibm.cognos.exec.Install
Command: [Ljava.lang.String;@67a467a4
Return code : -1
StdOut :
StdErr : Cannot run program "/opt/IBM/WebSphere/AppServer/CognosImage/linuxi38664h/issetupnx": java.io.IOException: error=2, No such file or directory</message>
</entry>


in: -

/home/wasadmin/var/ibm/InstallationManager/logs/20140826_2055.xml

The ERROR: Error during "install" phase exception was a recurring theme for ~2 hours.

The first time out of the gate, I also saw: -

WARNING: Current system has detected a lower level of ulimit open files setting than the recommended value of 8192. Increase the ulimit open files value to minimum value of 8192 and re-start the installation.

Shutdown your installer. If you are a root user open a command prompt and issue ulimit -n 8192 and then restart the installer. If you are a non-root user, work with your system administrator to increase your ulimit -n 8192 and then restart the installer.


which was a new one on me, but a herring rouge.

I fixed that particular problem by checking the installing user's ulimits: -

ulimit -n

1024

/etc/security/limits.conf

Already has: -

# - nofile - max number of open files
root soft nofile 65536
root hard nofile 65536


*BUT*

/etc/security/limits.d/90-nproc.conf

needed: -

# - nofile - max number of open files
wasadmin   soft    nofile  65536
wasadmin   hard    nofile  65536


as it overrides limits.conf in RHEL6.

This gives me: -

ulimit -n

65536

but, as I say, it was a herring rouge.

I eventually found the solution by expanding

/tmp/Repo/BAM855/repository/COGNOS_64/native/cognos-linuxia64_10.2.1.zip

into a temporary directory: -

/tmp/foobar/

and then tested the failing binary - issetupnx : -

chmod +x issetupnx
./issetupnx

bash: ./issetupnx: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

ld issetupnx

ld: i386 architecture of input file `issetupnx' is incompatible with i386:x86-64 output

After much faffing about, I worked out that I was missing certain RPMs, including GLIBC and GCC.

I ended up installing the following list: -

glibc-2.12-1.107.el6.i686.rpm
libXp-1.0.0-15.1.el6.x86_64.rpm
openmotif-2.3.3-4.el6.i686.rpm
glibc-2.12-1.47.el6.i686.rpm
nss-softokn-freebl-3.12.9-11.el6.i686.rpm
openmotif-2.3.3-4.el6.x86_64.rpm
libgcc-4.4.7-3.el6.i686.rpm
openmotif22-2.2.3-19.el6.x86_64.rpm

although I have highlighted those that I believe to be actually relevant :-)

I now get: -

./issetupnx

Licensed Materials - Property of IBM, BI and PM: is,
(C) Copyright IBM Corp. 2004, 2013. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
UNIX IBM Cognos InstallStream Version 10.2.1


The executable "issetupnx" may only be run in unattended mode, Please use the "-s" option and try again. 

which makes more sense.

As you can imagine, when I re-ran the installation process: -

/opt/IBM/InstallationManager/eclipse/tools/imcl -input installCognos.rsp -acceptLicense

it worked like a dram: -

Installed com.ibm.ws.cognos.v1021.linuxia64_10.2.1.20140530_2310 to the /opt/IBM/WebSphere/AppServer directory.

A Reminder - Which Cluster Does BAM > BPM need ?

$
0
0

<snip>
WebSphere® Business Monitor requires an event emitter factory to generate and send events. Use the wbmConfigureEventEmitterFactory command to install and configure the event emitter factory on a server or cluster. You must already have a common event infrastructure (CEI event service). (Otherwise, run the wbmDeployCEIEventService command to create one.) In the four-cluster topology, the event emitter factory is installed on the support cluster.
</snip>


<snip>
Use the wbmDeployCEIEventService command to install a CEI event service on a server or cluster and create the resources it requires (the service integration bus and messaging engine). You can also configure security and enable the default CEI event service data store if required. (The event service data store is not recommended for production environments.) In the core topology for high availability, the CEI event service is installed on the support cluster.
</snip>


IBM Business Monitor 8.0.1.2, Cognos BI and Unix - Dependencies Again

$
0
0
This follows on from an earlier post: -


I saw this exception: -

10.99.131.190:9081      28605   2014-08-27 06:40:23.824 +0      na      na                      Thread-125      DISP    5003    1       Audit.Other.dispatcher.DISP.pogo        pogo    com.cognos.pogo.reportservice.ProcessManager            Failure <messages><message><messageString>DPR-DPR-1035 Dispatcher detected an error.</messageString></message><message><messageString>Process BIBusTKServerMain failed to start properly.</messageString></message></messages>  External Report Server process BIBusTKServerMain cannot be startedProcess BIBusTKServerMain failed to start properly.java.io.IOException: Process BIBusTKServerMain failed to start properly.   at com.cognos.pogo.reportservice.ReportServerProcess.getProcessOutput(ReportServerProcess.java:182)     at com.cognos.pogo.reportservice.ReportServerProcess.start(ReportServerProcess.java:125)        at com.cognos.pogo.reportservice.ProcessFacade.createServerProcess(ProcessFacade.java:275)      at com.cognos.pogo.reportservice.ProcessFacade.<init>(ProcessFacade.java:158)   at com.cognos.pogo.reportservice.ProcessFacade.<init>(ProcessFacade.java:117)   at com.cognos.pogo.reportservice.RSComponentFactory.newProcessFacade(RSComponentFactory.java:76)        at com.cognos.pogo.reportservice.ProcessManager.createProcessFacade(ProcessManager.java:516)    at com.cognos.pogo.reportservice.ProcessManager.

in cogserver.log during the startup of the Cognos Dispatcher, included as part of IBM Business Monitor 8.0.1.2.

I also saw this: -

2014-08-28 15:09:04.276 FATAL [m.cognos.pogo.reportservice.ProcessManager] metadataServiceHandler-MDSRVProcessManager-ProcessMgrThread: External Report Server process BmtMDProviderMain cannot be started java.io.IOException: Process BmtMDProviderMain failed to start properly.

in the pogo_2014_08_28.log file.

I started digging into the two exceptions.

Both relate to Cognos binaries, and the errors imply that there's something missing e.g. a dependency.

First of all, I wanted to locate the offending binary: -

cd /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/cognos/SupClusterMember1
find . -name BIBusTKServerMain


which showed one copy.

When I try and execute this: -

cd /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/cognos/SupClusterMember1/bin
./BIBusTKServerMain

I get this: -

./BIBusTKServerMain: error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory

However, there is a 64-bit version: -

cd /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/cognos/SupClusterMember1/bin64
./BIBusTKServerMain

port=39164 pid=29992

I then dug further using the ldd command: -

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/cognos/SupClusterMember1/bin64
ldd BIBusTKServerMain


linux-vdso.so.1 =>  (0x00007fff58759000)
/lib64/libfreebl3.so (0x0000003b25a00000)
libtcmalloc_minimal.so.0 => ./libtcmalloc_minimal.so.0 (0x00007f71de1d6000)
libBIBusTK.so => ./libBIBusTK.so (0x00007f71ddf91000)
libBIBusTKServer.so => ./libBIBusTKServer.so (0x00007f71ddd5a000)
libCCLCore.so => ./libCCLCore.so (0x00007f71dd9f8000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x0000003b17800000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003b14c00000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003b25000000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003b1bc00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003b15800000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003b1b000000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003b15400000)
libc.so.6 => /lib64/libc.so.6 (0x0000003b15000000)
libxerces-c.so.27 => ./libxerces-c.so.27 (0x00007f71dd3d1000)
librt.so.1 => /lib64/librt.so.1 (0x0000003b16000000)
libCCLCryptoShared.so => ./libCCLCryptoShared.so (0x00007f71dd1c7000)
libCCLIDOM.so => ./libCCLIDOM.so (0x00007f71dcf78000)
libCCLHttptools.so => ./libCCLHttptools.so (0x00007f71dcd54000)
libIBJStreamsDLL.so => ./libIBJStreamsDLL.so (0x00007f71dcb30000)
libCCLCFGAPI.so => ./libCCLCFGAPI.so (0x00007f71dc903000)
libcogipf2.so => ./libcogipf2.so (0x00007f71dc6c3000)
coglog4ccl.so => ./coglog4ccl.so (0x00007f71dc420000)
libz.so.1 => ./libz.so.1 (0x00007f71dc20a000)
libicui18ncognos.so.48 => ./libicui18ncognos.so.48 (0x00007f71dbdfc000)
libicuuccognos.so.48 => ./libicuuccognos.so.48 (0x00007f71dba7c000)
libicudatacognos.so.48 => ./libicudatacognos.so.48 (0x00007f71da5f0000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x0000003b18000000)
/lib64/ld-linux-x86-64.so.2 (0x0000003b14800000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x0000003b17c00000)


I did the same with the other binary - BmtMDProviderMain: -

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/cognos/SupClusterMember1/bin
ldd BmtMDProviderMain

ERROR: ld.so: object '/lib64/libfreebl3.so' from LD_PRELOAD cannot be preloaded: ignored.
linux-gate.so.1 =>  (0x006fa000)
libCCLIDOM.so => ./libCCLIDOM.so (0x0026a000)
libxerces-c.so.27 => ./libxerces-c.so.27 (0x002b5000)
libCCLCore.so => ./libCCLCore.so (0x00c59000)
libBIBusTKServer.so => ./libBIBusTKServer.so (0x001ac000)
libBIBusTK.so => ./libBIBusTK.so (0x001e1000)
libBMTUtil.so => ./libBMTUtil.so (0x00bcc000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x006fb000)
libdl.so.2 => /lib/libdl.so.2 (0x00221000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00ea7000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x0079f000)
libm.so.6 => /lib/libm.so.6 (0x00226000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00695000)
libpthread.so.0 => /lib/libpthread.so.0 (0x006b3000)
libc.so.6 => /lib/libc.so.6 (0x0088a000)
libIBJStreamsDLL.so => ./libIBJStreamsDLL.so (0x006ce000)
libicuuccognos.so.48 => ./libicuuccognos.so.48 (0x00a21000)
libicudatacognos.so.48 => ./libicudatacognos.so.48 (0xf64e7000)
libz.so.1 => ./libz.so.1 (0x00250000)
libicui18ncognos.so.48 => ./libicui18ncognos.so.48 (0x00ec2000)
librt.so.1 => /lib/librt.so.1 (0x006ef000)
libCCLCFGAPI.so => ./libCCLCFGAPI.so (0x00b8f000)
libCCLHttptools.so => ./libCCLHttptools.so (0x00dc8000)
libcogipf2.so => ./libcogipf2.so (0x00dea000)
coglog4ccl.so => ./coglog4ccl.so (0x0677d000)
libCCLCryptoShared.so => ./libCCLCryptoShared.so (0x00bbc000)
libIBJHelpers.so => ./libIBJHelpers.so (0x00264000)
libBmtResources.so => ./libBmtResources.so (0x00bc5000)
libCST.so => ./libCST.so (0xf53a5000)
/lib/ld-linux.so.2 (0x00161000)
libCCLVirtualMemMgmt.so => ./libCCLVirtualMemMgmt.so (0x00e29000)
libtcmalloc_virtualmm.so.0 => ./libtcmalloc_virtualmm.so.0 (0x00e8d000)
libCAM_Crypto_Interface.so => ./libCAM_Crypto_Interface.so (0x03a48000)
libcrypto.so.0.9.8 => ./libcrypto.so.0.9.8 (0x071d2000)


In both cases, I was looking for Not Found exceptions ( ironically I took the above listings AFTER I'd solved the problem - see below ).

The Not Found exception indicates a missing library.

Initially, I thought that the solution was to add: -

export LD_PRELOAD=/lib64/libfreebl3.so

into the shell ( ~/.bashrc ) for the user that actually runs WAS - wasadmin in my case.

However, that was a herring rouge.

The actual solution was to add the missing dependent libraries. The main missing library, as per the exception: -

./BIBusTKServerMain: error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory

was libX11.so.6.

I did have the 64-bit version of this library: -

/usr/lib64/libX11.so.6
/usr/lib64/libX11.so.6.3.0

but NOT the 32-bit version: -

/usr/X11R6/lib/libX11.so.6
/usr/X11R6/lib/libX11.so.6.1

I installed XFree86-libs-3.3.6-20.i386.rpm to give me the 32-bit libraries; mainly because I didn't have access to the source Red Hat Enterprise Linux 6.4 ISO repository.

I'd also installed libstdc++, again 32-bit as well as 64-bit.

I am going to go back through the entire setup again, using a vanilla RHEL image, in order that I can document the end-to-end process.

Interestingly, I'm seeing the same Cognos Dispatcher ( Report Studio ) issue on AIX 7.1.

The solution appears to be the same.

On a PoC environment, where the Cognos Report Studio works OK, I do have libX11.a installed, as below: -

cd lib
ls -1 libX*

libX11.a
libXau.a
libXaw.a
libXcursor.a
libXdamage.a
libXdmcp.a
libXevie.a
libXext.a
libXfixes.a
libXfont.a
libXi.a
libXm.a
libXmu.a
libXp.a
libXpm.a
libXrender.a
libXt.a
libXtst.a


ls -al libX11.a

lrwxrwxrwx    1 bin      bin              28 Apr 29 13:16 libX11.a -> /usr/lpp/X11/lib/R7/libX11.a

lslpp -w /usr/lpp/X11/lib/R7/libX11.a

  File                                        Fileset               Type
  ----------------------------------------------------------------------------
  /usr/lpp/X11/lib/R7/libX11.a                X11.base.lib          File


I've asked our AIX admin to install the X11.base.lib licensed program, and will see where we get to tomorrow.

Notes to self - Setting up DB2 Client connectivity

$
0
0
It's been ~10 years since I last did this ( DB2 on Unix to DB2 on z/OS or OS/400 ), but I now have a requirement to deliver a DB2 client for WebSphere MQ interaction ( MQ will use ODBC rather than JDBC ).

I knocked this up using a pair of VMs on my Macbook .....

Response File -  ~/db2client.rsp

PROD                      = CLIENT
FILE                      = /opt/ibm/db2/V10.1
LIC_AGREEMENT             = ACCEPT
INSTALL_TYPE              = TYPICAL

Install DB2 Client Binaries - as root

./db2setup -r ~/db2client.rsp

Create DB2 User and Group - as root

groupadd db2users
useradd -g db2users -d /home/db2user1 db2user1
passwd db2user1

Create DB2 Instance ( required for client connectivity ) - as root

/opt/ibm/db2/V10.1/instance/db2icrt -a CLIENT db2user1

Catalog Remote DB2 Server ( Node ) - as db2user1

db2 catalog tcpip node rhel6 remote rhel6 server DB2c_db2inst1

( node and remote refer to DB2 server hostname, server refers to DB2 service name in /etc/services )

Validate Node Directory

db2 list node directory

Test Connectivity - as db2user1

db2 attach to rhel6 user db2inst1 using passw0rd
db2 list applications
db2 detach

Catalog Remote Database - as db2user1

db2 catalog database foobar at node rhel6

( database refers to database alias on remote server, node refers to previously catalogued node )

Validate DB Directory - as db2user1

db2 list db directory

Create Database on Server - as db2inst1

db2 "create table snafu(surname char(16) not null,firstname char(10) not null)"

Use Database - as db2user1

db2 connect to foobar user db2inst1 using passw0rd
db2 list tables for all | more
db2 "select * from db2inst1.snafu"
db2 "describe select * from db2inst1.snafu"
db2 "insert into db2inst1.snafu(surname,firstname) values('Hay','Dave')"
db2 "select * from db2inst1.snafu"
db2 terminate

Shiny :-)

Alias command on Unix - why am I late to the party ?

$
0
0
So I regularly make use of this Linux command: -

history | cut -c 8-

to get the Bash history but without the numbers.

Before

  131  /opt/IBM/WebSphere/AppServer/bin/sibDDLGenerator.sh -system db2 -version 9.7 -platform unix -schema MONCM00 -statementend ";" -user db2user1 >> ~/createMESchemas.sql
  132  /opt/IBM/WebSphere/AppServer/bin/sibDDLGenerator.sh -system db2 -version 9.7 -platform unix -schema MONME00 -statementend ";" -user db2user1 >> ~/createMESchemas.sql
  133  db2 -tvf createMESchemas.sql


After

/opt/IBM/WebSphere/AppServer/bin/sibDDLGenerator.sh -system db2 -version 9.7 -platform unix -schema MONCM00 -statementend ";" -user db2user1 >> ~/createMESchemas.sql
/opt/IBM/WebSphere/AppServer/bin/sibDDLGenerator.sh -system db2 -version 9.7 -platform unix -schema MONME00 -statementend ";" -user db2user1 >> ~/createMESchemas.sql
db2 -tvf createMESchemas.sql


See, easy documentation :-)

However, I can never remember the format of the improved history command, so I end up opening a text file on my Mac to find it.

So why don't I use the alias command, I hear you say ?

Well, I do now :-)

This is the relevant alias command: -

alias hist='history | cut -c 8-'

which now gives me a shortened command ( so I actually type less ! ) which achieves my requirement.

On it's own, the alias command shows me ALL of my aliases: -

alias

alias hist='history | cut -c 8-'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'


Guess what I've added to my .bashrc :-)

Cognos on Linux - Dependencies - Soup to Nuts

$
0
0
A follow-up: -



Replicate the problem

cd /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/cognos/SupClusterMember1/bin
./BIBusTKServerMain

./BIBusTKServerMain: error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory

Diagnose using LDD

cd /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/cognos/SupClusterMember1/bin
ldd BIBusTKServerMain
linux-gate.so.1 =>  (0x00917000)
libtcmalloc_minimal.so.0 => ./libtcmalloc_minimal.so.0 (0x00b27000)
libBIBusTK.so => ./libBIBusTK.so (0x00a31000)
libBIBusTKServer.so => ./libBIBusTKServer.so (0x007d5000)
libCCLCore.so => ./libCCLCore.so (0x00110000)
libX11.so.6 => not found
libdl.so.2 => /lib/libdl.so.2 (0x006e5000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00663000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x004af000)
libm.so.6 => /lib/libm.so.6 (0x002e9000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00273000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00ef6000)
libc.so.6 => /lib/libc.so.6 (0x00b63000)
libxerces-c.so.27 => ./libxerces-c.so.27 (0x00f11000)
librt.so.1 => /lib/librt.so.1 (0x00291000)
libCCLCryptoShared.so => ./libCCLCryptoShared.so (0x003f6000)
libCCLIDOM.so => ./libCCLIDOM.so (0x00d16000)
libCCLHttptools.so => ./libCCLHttptools.so (0x0096c000)
libIBJStreamsDLL.so => ./libIBJStreamsDLL.so (0x00abc000)
libX11.so.6 => not found
libCCLCFGAPI.so => ./libCCLCFGAPI.so (0x0029a000)
libcogipf2.so => ./libcogipf2.so (0x00415000)
coglog4ccl.so => ./coglog4ccl.so (0x0059a000)
libX11.so.6 => not found
libz.so.1 => ./libz.so.1 (0x002c9000)
libicucogi18n.so.40 => ./libicucogi18n.so.40 (0x07541000)
libicucoguc.so.40 => ./libicucoguc.so.40 (0x00d61000)
/lib/ld-linux.so.2 (0x003a3000)
libX11.so.6 => not found
libicucogdata.so.40 => ./libicucogdata.so.40 (0xf6ac7000)
libX11.so.6 => not found
libX11.so.6 => not found
libX11.so.6 => not found
libX11.so.6 => not found
libX11.so.6 => not found
libX11.so.6 => not found
libX11.so.6 => not found


Look at the missing library

locate libX11.so.6

/usr/lib64/libX11.so.6
/usr/lib64/libX11.so.6.3.0


See, there's a 64-bit version, but no 32-bit version :-(

Look at the RPMs that provide that library

yum list | grep -i libX11

libX11.x86_64                           1.3-2.el6                        @anaconda-RedHatEnterpriseLinux-201206132210.x86_64/6.3
libX11-common.noarch                    1.3-2.el6                        @anaconda-RedHatEnterpriseLinux-201206132210.x86_64/6.3
libX11.i686                             1.3-2.el6                        server 
libX11-devel.i686                       1.3-2.el6                        server 
libX11-devel.x86_64                     1.3-2.el6                        server 

Look at what's installed

rpm -qa | grep -i libX11

libX11-1.3-2.el6.x86_64
libX11-common-1.3-2.el6.noarch


Install the missing RPM ( the 386 version )

yum install libX11.i686

Test again using LDD

ldd BIBusTKServerMain

linux-gate.so.1 =>  (0x00f48000)
libtcmalloc_minimal.so.0 => ./libtcmalloc_minimal.so.0 (0x00110000)
libBIBusTK.so => ./libBIBusTK.so (0x004a3000)
libBIBusTKServer.so => ./libBIBusTKServer.so (0x002f7000)
libCCLCore.so => ./libCCLCore.so (0x00dcd000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x0014c000)
libdl.so.2 => /lib/libdl.so.2 (0x00bab000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00661000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00c33000)
libm.so.6 => /lib/libm.so.6 (0x0061d000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00284000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00ace000)
libc.so.6 => /lib/libc.so.6 (0x0067c000)
libxerces-c.so.27 => ./libxerces-c.so.27 (0x00f49000)
librt.so.1 => /lib/librt.so.1 (0x004f1000)
libCCLCryptoShared.so => ./libCCLCryptoShared.so (0x00522000)
libCCLIDOM.so => ./libCCLIDOM.so (0x00d64000)
libCCLHttptools.so => ./libCCLHttptools.so (0x002a2000)
libIBJStreamsDLL.so => ./libIBJStreamsDLL.so (0x002c4000)
libCCLCFGAPI.so => ./libCCLCFGAPI.so (0x005e3000)
libcogipf2.so => ./libcogipf2.so (0x0032b000)
coglog4ccl.so => ./coglog4ccl.so (0x0053c000)
libz.so.1 => ./libz.so.1 (0x00419000)
libicucogi18n.so.40 => ./libicucogi18n.so.40 (0x00904000)
libicucoguc.so.40 => ./libicucoguc.so.40 (0x06517000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x0036a000)
/lib/ld-linux.so.2 (0x003a3000)
libicucogdata.so.40 => ./libicucogdata.so.40 (0xf6b5e000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x002e5000)


Now try and run the binary

./BIBusTKServerMain

port=33768 pid=40133

Sorted :-)

I love this stuff :-)

IBM HTTP Server - CTGSK3024W Invalid value for parameter from GSK

$
0
0
I hit a wee problem with the Global Security Toolkit (GSK) when creating a certificate for IBM HTTP Server 8.5.5.2

This is the command that I was running: - 

/opt/ibm/HTTPServer/bin/gskcapicmd -cert -create -db /opt/ibm/HTTPServer/ssl/keystore.kdb -pw passw0rd -size 2048 -dn "bam8012.uk.ibm.com,o=ibm,c=us" -label "bam8012.uk.ibm.com" -default_cert yes

which resulted in: -

CTGSK3024W Invalid value for parameter "-dn" (bam8012.uk.ibm.com,o=ibm,c=us). 

It was, of course, user error.

This is what I should have run: -

/opt/ibm/HTTPServer/bin/gskcapicmd -cert -create -db /opt/ibm/HTTPServer/ssl/keystore.kdb -pw rlmp56Hn3uWh -size 2048 -dn "bam8012.uk.ibm.com\\,o=ibm\\,c=us\\" -label "bam8012.uk.ibm.com" -default_cert yes

In other words, I needed to insert '\\' before each comma ( , )

Creating a standalone Process Center profile in IBM Business Process Manager V8.5

$
0
0
Creating a standalone Process Center profile in IBM Business Process Manager V8.5

A standalone Process Center profile is useful for situations where memory and disk space are limited. Rather than install the Process Center as a network deployment environment with at least three profiles running, plus an additional profile to support the unit test environment server, this article describes how a single profile can provide both a Process Center server and a unit test environment server.

Installing IBM WebSphere MQ on Linux

$
0
0
Following on from a previous post: -


I'm getting to grips with IBM Integration Bus 9.0.0.2 and it's prerequisite dependency IBM WebSphere MQ 8.0.

First I'm going to install WMQ ...

I downloaded WMQ from the IBM software download site, resulting in a single TAR file: -

-rw-r--r--@  1 hayd  staff  558767000  2 Sep 06:14 WS_MQ_LINUX_ON_X86_64_V8.0_IMG.tar.gz

This I expanded onto my target RHEL 6.3 box: -

mkdir /tmp/Repo/WMQ
cd /tmp/Repo/WMQ
tar xvzf /mnt/hgfs/Software/WMQ8/WS_MQ_LINUX_ON_X86_64_V8.0_IMG.tar.gz 

This results in a number ( 30 ) of RPMs: -

MQSeriesAMS-8.0.0-0.x86_64.rpm
MQSeriesClient-8.0.0-0.x86_64.rpm
MQSeriesExplorer-8.0.0-0.x86_64.rpm
MQSeriesFTAgent-8.0.0-0.x86_64.rpm
MQSeriesFTBase-8.0.0-0.x86_64.rpm
MQSeriesFTLogger-8.0.0-0.x86_64.rpm
MQSeriesFTService-8.0.0-0.x86_64.rpm
MQSeriesFTTools-8.0.0-0.x86_64.rpm
MQSeriesGSKit-8.0.0-0.x86_64.rpm
MQSeriesJava-8.0.0-0.x86_64.rpm
MQSeriesJRE-8.0.0-0.x86_64.rpm
MQSeriesMan-8.0.0-0.x86_64.rpm
MQSeriesMsg_cs-8.0.0-0.x86_64.rpm
MQSeriesMsg_de-8.0.0-0.x86_64.rpm
MQSeriesMsg_es-8.0.0-0.x86_64.rpm
MQSeriesMsg_fr-8.0.0-0.x86_64.rpm
MQSeriesMsg_hu-8.0.0-0.x86_64.rpm
MQSeriesMsg_it-8.0.0-0.x86_64.rpm
MQSeriesMsg_ja-8.0.0-0.x86_64.rpm
MQSeriesMsg_ko-8.0.0-0.x86_64.rpm
MQSeriesMsg_pl-8.0.0-0.x86_64.rpm
MQSeriesMsg_pt-8.0.0-0.x86_64.rpm
MQSeriesMsg_ru-8.0.0-0.x86_64.rpm
MQSeriesMsg_Zh_CN-8.0.0-0.x86_64.rpm
MQSeriesMsg_Zh_TW-8.0.0-0.x86_64.rpm
MQSeriesRuntime-8.0.0-0.x86_64.rpm
MQSeriesSamples-8.0.0-0.x86_64.rpm
MQSeriesSDK-8.0.0-0.x86_64.rpm
MQSeriesServer-8.0.0-0.x86_64.rpm
MQSeriesXRService-8.0.0-0.x86_64.rpm

First I needed to accept the license agreement: -

./mqlicense.sh 

...
Press Enter to continue viewing the license agreement, or 
enter "1" to accept the agreement, "2" to decline it, "3" 
to print it, "4" to read non-IBM terms, or "99" to go back 
to the previous screen.
1

Agreement accepted:  Proceed with install.

...

I then ran a loop to install the RPMs: -

for i in *.rpm; do rpm --prefix /opt/ibm/mqm -ivh $i; done

I needed to run this several times as  some RPMs depend upon others that have yet to be installed.

Eventually, all were installed: -

...
Preparing...                ########################################### [100%]
package MQSeriesMsg_Zh_TW-8.0.0-0.x86_64 is already installed
Preparing...                ########################################### [100%]
package MQSeriesRuntime-8.0.0-0.x86_64 is already installed

...

which I validated: -

rpm -qa | grep MQSeries

MQSeriesServer-8.0.0-0.x86_64
MQSeriesJRE-8.0.0-0.x86_64
MQSeriesMsg_es-8.0.0-0.x86_64
MQSeriesMsg_ja-8.0.0-0.x86_64
MQSeriesMsg_ru-8.0.0-0.x86_64
MQSeriesExplorer-8.0.0-0.x86_64
MQSeriesGSKit-8.0.0-0.x86_64
MQSeriesRuntime-8.0.0-0.x86_64
MQSeriesSDK-8.0.0-0.x86_64
MQSeriesAMS-8.0.0-0.x86_64
MQSeriesJava-8.0.0-0.x86_64
MQSeriesMan-8.0.0-0.x86_64
MQSeriesMsg_de-8.0.0-0.x86_64
MQSeriesMsg_fr-8.0.0-0.x86_64
MQSeriesMsg_it-8.0.0-0.x86_64
MQSeriesMsg_ko-8.0.0-0.x86_64
MQSeriesMsg_pt-8.0.0-0.x86_64
MQSeriesMsg_Zh_CN-8.0.0-0.x86_64
MQSeriesXRService-8.0.0-0.x86_64
MQSeriesFTBase-8.0.0-0.x86_64
MQSeriesFTTools-8.0.0-0.x86_64
MQSeriesFTAgent-8.0.0-0.x86_64
MQSeriesSamples-8.0.0-0.x86_64
MQSeriesClient-8.0.0-0.x86_64
MQSeriesMsg_cs-8.0.0-0.x86_64
MQSeriesMsg_hu-8.0.0-0.x86_64
MQSeriesMsg_pl-8.0.0-0.x86_64
MQSeriesMsg_Zh_TW-8.0.0-0.x86_64
MQSeriesFTLogger-8.0.0-0.x86_64
MQSeriesFTService-8.0.0-0.x86_64

rpm -qa | grep MQSeries | wc

     30      30     905

I did have one small fright - when I listed the contents of the /opt/ibm/mqm/bin directory, this is what I saw: -


and I assumed that the use of the red font indicated a problem with the installation :-(

Actually, it's NOT a problem - it's merely my shell's way of showing me that the red-flagged binaries have the sticky bit set, meaning that they'll always be executed with the mqm user.

Unlike earlier versions, the MQConfig command is shipped with WMQ 8: -

ls -al `locate mqconfig`

-r-xr-xr-x 1 mqm mqm 51989 Apr 29 15:54 /opt/mqm/bin/mqconfig

This I ran: -

/opt/mqm/bin/mqconfig 

mqconfig: V3.7 analyzing Red Hat Enterprise Linux Server release 6.3
          (Santiago) settings for WebSphere MQ V8.0

System V Semaphores
  semmsl     (sem:1)  250 semaphores                     IBM>=32           PASS
  semmns     (sem:2)  122 of 256000 semaphores   (0%)    IBM>=4096         PASS
  semopm     (sem:3)  32 operations                      IBM>=32           PASS
  semmni     (sem:4)  109 of 2048 sets           (5%)    IBM>=128          PASS

System V Shared Memory
  shmmax              68719476736 bytes                  IBM>=268435456    PASS
  shmmni              8 of 4096 sets             (0%)    IBM>=4096         PASS
  shmall              425311 of 4294967296 pages (0%)    IBM>=2097152      PASS

System Settings
  file-max            4992 of 792980 files       (0%)    IBM>=524288       PASS

Current User Limits (root)
  nofile       (-Hn)  8800 files                         IBM>=10240        WARN
  nofile       (-Sn)  8800 files                         IBM>=10240        WARN

  nproc        (-Hu)  0 of 8800 processes        (0%)    IBM>=4096         PASS
  nproc        (-Su)  0 of 8800 processes        (0%)    IBM>=4096         PASS


Following the recommendations, I increased the nofile ulimits from 8800 to 10240, by editing /etc/security/limits.conf from: -

# End of file
* hard nofile 8800
* soft nofile 8800

to: -

# End of file
* hard nofile 10240
* soft nofile 10240

One log out later, and we're good to go: -

mqconfig: V3.7 analyzing Red Hat Enterprise Linux Server release 6.3
          (Santiago) settings for WebSphere MQ V8.0

System V Semaphores
  semmsl     (sem:1)  250 semaphores                     IBM>=32           PASS
  semmns     (sem:2)  122 of 256000 semaphores   (0%)    IBM>=4096         PASS
  semopm     (sem:3)  32 operations                      IBM>=32           PASS
  semmni     (sem:4)  109 of 2048 sets           (5%)    IBM>=128          PASS

System V Shared Memory
  shmmax              68719476736 bytes                  IBM>=268435456    PASS
  shmmni              8 of 4096 sets             (0%)    IBM>=4096         PASS
  shmall              425311 of 4294967296 pages (0%)    IBM>=2097152      PASS

System Settings
  file-max            4992 of 792980 files       (0%)    IBM>=524288       PASS

Current User Limits (root)
  nofile       (-Hn)  10240 files                        IBM>=10240        PASS
  nofile       (-Sn)  10240 files                        IBM>=10240        PASS
  nproc        (-Hu)  0 of 8800 processes        (0%)    IBM>=4096         PASS
  nproc        (-Su)  0 of 8800 processes        (0%)    IBM>=4096         PASS


I created a dedicated group/user for WMQ: -

groupadd mqm
useradd -g mqm -d /home/mqm mqm
passwd mqm

To test WMQ, I following part of the instructions in this excellent IBM White Paper: -


as user mqm.

...
Create queue manager, with a Dead Letter Queue (DLQ)

crtmqm -u SYSTEM.DEAD.LETTER.QUEUE QM_MDB

Start the queue manager

strmqm QM_MDB

Invoke the administration utility

runmqsc QM_MDB

Within runmqsc, define and start an MQ Listener:

DEFINE LISTENER(TCP.LISTENER) TRPTYPE(TCP) CONTROL(QMGR) PORT(1420)

START LISTENER(TCP.LISTENER)

Define a channel to be used with the MQ Explorer (optional but very useful!):

DEFINE CHANNEL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN)

Define a local queue:

DEFINE QLOCAL(Q_MDB)


Define a topic object:

DEFINE TOPIC(T_MDB) TOPICSTR('sports')

For MQ 7.1 and 7.5, and if desiring to allow remote connections by an MQ Administrator:

set CHLAUTH(*) TYPE(BLOCKUSER) USERLIST('nobody','*MQADMIN')
set CHLAUTH(SYSTEM.ADMIN.*) TYPE(BLOCKUSER) USERLIST('nobody')

Exit runmqsc:

END
...

I then continued to follow the White Paper to configure WebSphere Application Server (WAS) to access the QM_MDB Queue Manager, using JMS / Activation Specifications.

Which is nice :-)

AMQ5540 and AMQ5541 seen between WebSphere Application Server and WebSphere MQ

$
0
0
So I'm seeing: -

AMQ5540: Application 'WebSphere MQ Client for Java' did not supply a user ID and password

AMQ5541: The failed authentication check was caused by the queue manager
CONNAUTH CHCKCLNT(REQDADM) configuration.


from WebSphere MQ 8.0 when I attempt to connect from WebSphere Application Server (WAS) to a Queue Manager.

The solution ?

Read this IBM Technote: -


...
In MQ 8.0, a new function is introduced that requires MQ administrators using remote access to supply the userid and password. When the userid and password are not supplied or the password is incorrect, then the following error is displayed.
...

I chose to take the circumvention of setting the Queue Manager back to the pre-V8 days, with passing checking being optional: -

ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)

Obviously, this goes AGAINST good practices around security, but, in this particular case, it's MY environment.

YOUR mileage WILL vary.

Insufficient ulimit -u (NPROC) Value Contributes to Native OutOfMemory

$
0
0
I've hit this problem several times in the past few days, mainly on Red Hat Enterprise Linux 6.3 platforms: -

...
An out of memory may be observed on a system running WebSphere Application Server on Linux. Further investigation may reveal a "Failed to create a thread:" message within the generated javacore which would indicate a native out of memory issue has been encountered. The cause of the problem may be an insufficient ulimit setting. While this type of issue can occur on any level of Linux, more recent releases, such as Redhat Enterprise Linux 6, are more likely to encounter this issue due to a decreased default value for certain ulimits. The following will outline how to identify if a process ulimit is the culprit and what WebSphere Application Server Support recommends to fix the case.
...


The trick was to realise that it's not enough to merely extend the ulimits in /etc/security/limits.conf but that, with RHEL 6.X, it's also necessary to amend /etc/security/limits.d/90-nproc.conf as well.

Simples ....

IBM Software - In Video

$
0
0
One of my colleagues was looking for some video introductions to various IBM software products, including: -








This flash video will explore the various ways that enhanced decision management capabilities and real-time visibility into processes can help Energy & Utility (E&U) leaders respond faster to meter events, customer demands, and much more to meet the industry's unique challenges. Improved business event processing capabilities can help utility leaders transform insight into action and more effectively manage instrumented and intelligent utility networks.



Watch the video to learn how the capabilities in IBM Integration Bus can help you:

• Streamline integration between IT and business teams by applying routing rules and business logic as policies
• Achieve greater synergy between business process management and integration
• Improve workload management with traffic shaping and throttling
• Understand and more easily act upon in-flight data

IBM Integration Bus / WebSphere Message Broker Tooling

$
0
0

MQ Explorer can remotely connect to queue managers on any supported platform – enabling your entire messaging backbone to be viewed, explored and altered from one place. The latest version of the SupportPac can be used to connect to remote queue managers from any currently supported version of IBM WebSphere MQ.


This SupportPac contains a utility that is useful for the development and testing of WebSphere MQ and IBM Integration Bus or WebSphere Message Broker applications. Test messages are stored as files, which are then read by the application and written to a WebSphere MQ queue. The program is GUI based. 

Command line performance measurement utilities are also provided.

Possible Uses
It allows test messages to be captured and stored in files, and then used to drive IBM Integration Bus or WebSphere Message Broker applications. Output messages can also be read and displayed in a variety of formats. The formats include two types of XML as well as matched against a COBOL copybook. The data can be in EBCDIC or ASCII. An RFH2 header can be added to the message before the message is sent.


IBM WebSphere MQ - (l)user error with amqsput and clustered Queue Managers

$
0
0
So I've spent nearly four hours, working with a much more experienced ( with WebSphere MQ ) colleague, trying to diagnose an issue.

In essence, I was trying to test the connectivity between WebSphere MQ ( WMQ ) and IBM BPM, and had configured BPM ( actually WAS ) to connect to a WMQ Queue Manager / Queue via an Activation Specification.

I had a sample Message Driven Bean (MDB) ( taken from this White Paper Using WebSphere MQ V7 as JMS Provider for WebSphere Application Server V7, V8.0 and V8.5 ) running inside WAS, and was expecting to be able to post a message onto a WMQ Queue hosted on a clustered Queue Manager, and have the content of the message appear in the WAS SystemOut logs, via the MDB.

I'd previously used the MDB in this manner, and all was well.

This time around, I kept seeing the following exception: -

MQCONN ended with reason code 2058

whenever I tried to post a message.

Now I was using the amqsput sample application that comes with WMQ ( I was using version 7.5 but it's also there with version 8 ), as follows: -

./amqsput Foobar Snafu

where Foobar is the name of the Cluster Queue Manager and Snafu is the name of the Queue.

Can you spot the mistake ?

No, neither could I, for nearly four hours :-(

We more-or-less reconfigured the entire WMQ cluster, including setting up a new non-clustered Queue Manager, refreshing the entire cluster infrastructure, restarting the Queue Managers several times. I nearly rebooted the LPARs upon which WMQ was hosted before .....

I reread this IBM Technote: -


for the umpty-leventh time: -


and noted the sequence: -

amqsputc SVR.LQ SVR

where SVR is the Queue Manager.

Yep, you've got it ....

Rewind....

"...where Foobar is the name of the Cluster Queue Manager and Snafu is the name of the Queue..."

So I should've been running: -

./amqsput Snafu Foobar

So my colleague nearly bashed me over the head, but, to be fair, he missed it as well, so I think we are even-stevens.

Simples :-)

Enabling X11 on a console-only installation of Red Hat Enterprise Linux 6.3

$
0
0
So I wanted to use X11 on my RHEL63 VM in order to install/use the WebSphere MQ Toolkit ( see earlier post ), but got this: -

X11 forwarding request failed on channel 0

when I attempted to connect and tunnel X11 from my Mac ( I'm using XQuartz as per this 2013 post ): -


I did a quick smoke-test: -

xeyes

-bash: xeyes: command not found

echo $DISPLAY

<nowt returned>

I fixed the first problem: -

yum install xeyes

Loaded plugins: product-id, security, subscription-manager
Updating certificate-based repositories.
Unable to read consumer identity
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package xorg-x11-apps.x86_64 0:7.4-10.el6 will be installed
--> Processing Dependency: libxkbfile.so.1()(64bit) for package: xorg-x11-apps-7.4-10.el6.x86_64
--> Processing Dependency: libXmuu.so.1()(64bit) for package: xorg-x11-apps-7.4-10.el6.x86_64
--> Processing Dependency: libXmu.so.6()(64bit) for package: xorg-x11-apps-7.4-10.el6.x86_64
--> Processing Dependency: libXaw.so.7()(64bit) for package: xorg-x11-apps-7.4-10.el6.x86_64
--> Running transaction check
---> Package libXaw.x86_64 0:1.0.6-4.1.el6 will be installed
--> Processing Dependency: libXpm.so.4()(64bit) for package: libXaw-1.0.6-4.1.el6.x86_64
---> Package libXmu.x86_64 0:1.0.5-1.el6 will be installed
---> Package libxkbfile.x86_64 0:1.0.6-1.1.el6 will be installed
--> Running transaction check
---> Package libXpm.x86_64 0:3.5.8-2.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package              Arch          Version                 Repository     Size
================================================================================
Installing:
 xorg-x11-apps        x86_64        7.4-10.el6              server        296 k
Installing for dependencies:
 libXaw               x86_64        1.0.6-4.1.el6           server        167 k
 libXmu               x86_64        1.0.5-1.el6             server         59 k
 libXpm               x86_64        3.5.8-2.el6             server         59 k
 libxkbfile           x86_64        1.0.6-1.1.el6           server         74 k

Transaction Summary
================================================================================
Install       5 Package(s)

Total download size: 655 k
Installed size: 1.6 M
Is this ok [y/N]: y
Downloading Packages:
--------------------------------------------------------------------------------
Total                                            23 MB/s | 655 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Installing : libXmu-1.0.5-1.el6.x86_64                                    1/5 
  Installing : libxkbfile-1.0.6-1.1.el6.x86_64                              2/5 
  Installing : libXpm-3.5.8-2.el6.x86_64                                    3/5 
  Installing : libXaw-1.0.6-4.1.el6.x86_64                                  4/5 
  Installing : xorg-x11-apps-7.4-10.el6.x86_64                              5/5 
Installed products updated.
  Verifying  : libXaw-1.0.6-4.1.el6.x86_64                                  1/5 
  Verifying  : libXpm-3.5.8-2.el6.x86_64                                    2/5 
  Verifying  : libXmu-1.0.5-1.el6.x86_64                                    3/5 
  Verifying  : xorg-x11-apps-7.4-10.el6.x86_64                              4/5 
  Verifying  : libxkbfile-1.0.6-1.1.el6.x86_64                              5/5 

Installed:
  xorg-x11-apps.x86_64 0:7.4-10.el6                                             

Dependency Installed:
  libXaw.x86_64 0:1.0.6-4.1.el6        libXmu.x86_64 0:1.0.5-1.el6             
  libXpm.x86_64 0:3.5.8-2.el6          libxkbfile.x86_64 0:1.0.6-1.1.el6       

Complete!


but I still couldn't tunnel X11: -

X11 forwarding request failed on channel 0

A quick Google brought me this: -


from which I pulled this solution: -

yum install xauth

Loaded plugins: product-id, security, subscription-manager
Updating certificate-based repositories.
Unable to read consumer identity
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package xorg-x11-xauth.x86_64 1:1.0.2-7.1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package               Arch          Version                Repository     Size
================================================================================
Installing:
 xorg-x11-xauth        x86_64        1:1.0.2-7.1.el6        server         35 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 35 k
Installed size: 62 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : 1:xorg-x11-xauth-1.0.2-7.1.el6.x86_64                        1/1 
Installed products updated.
  Verifying  : 1:xorg-x11-xauth-1.0.2-7.1.el6.x86_64                        1/1 

Installed:
  xorg-x11-xauth.x86_64 1:1.0.2-7.1.el6                                         

Complete!


Now I see: -


Last login: Fri Sep  5 20:20:26 2014 from 192.168.8.1
/usr/bin/xauth:  creating new authority file /home/mqm/.Xauthority

xeyes


Shiny :-)


iTunes to iPad - An unknown error occurred (-50)

$
0
0
I saw this: -

An unknown error occurred (-50)

from an iPad Mini whilst trying to sync, via USB, from iTunes 11.3.1 on my Mac.

Thankfully, a few Google searches later, I performed the most minor of resets - General> Reset> Reset All Settings, which appears to have cleared the problem.

I did, it must be said, have an iTunes backup of the little fella, just in case :-)

Viewing all 1851 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>