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

Exceptions to Quotes with IBM Business Process Manager 8.0.1

$
0
0
This one briefly caught me out this afternoon.

Having set up IBM Business Process Manager 8.0.1 to work with SSL, one of the final configuration changes is to allow process snapshots to be deployed via HTTPS rather than the default HTTP.

This requires the addition of a line to the 100Custom.xml file. Specifically, one has to add the line: -

                <deploy-snapshot-using-https merge="replace">true</deploy-snapshot-using-https>

to the <server></server> stanza in: -

/opt/IBM/WebSphere/AppServer/profiles/PCN1Profile/config/cells/PCCELL/nodes/PCNODE1/servers/PCSR011.AppTarget/process-center/config/100Custom.xml

Now I simply copied the required line from a PDF document, which I'd previously generated from a Microsoft Word document using IBM Lotus Symphony.

This was the fatal flaw. I actually pasted: -

<deploy-snapshot-using-https merge="replace">true</deploy-snapshot-using-https>

into the file, which I was editing using vi.

Now it's subtle, but note the quotation marks around the word: -

"replace"

They're NOT valid XML characters - what I should have used was this: -

"replace"

The symptom of the problem was that my AppTarget cluster failed to start, with a slew of XML/syntax error messages, including: -

[10/01/13 16:28:58:451 GMT] 00000013 wle           E   CWLLG2035E:  The registry was not initialized.   Error:  org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'twConfiguration' defined in class path resource [registry.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [private static com.lombardisoftware.core.config.TWConfiguration com.lombardisoftware.core.config.TWConfiguration.loadConfigurationLocally()] threw exception; nested exception is java.lang.RuntimeException: Cannot load configuration locally, exception = com.lombardisoftware.core.TeamWorksException: Error on line 33 of document file:/opt/IBM/WebSphere/AppServer/profiles/PCN1Profile/config/cells/PCCELL/nodes/PCNODE1/servers/PCSR011.AppTarget/process-center/config/100Custom.xml: Open quote is expected for attribute "merge" associated with an  element type  "deploy-snapshot-using-https".
                                 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'twConfiguration' defined in class path resource [registry.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [private static com.lombardisoftware.core.config.TWConfiguration com.lombardisoftware.core.config.TWConfiguration.loadConfigurationLocally()] threw exception; nested exception is java.lang.RuntimeException: Cannot load configuration locally, exception = com.lombardisoftware.core.TeamWorksException: Error on line 33 of document file:/opt/IBM/WebSphere/AppServer/profiles/PCN1Profile/config/cells/PCCELL/nodes/PCNODE1/servers/PCSR011.AppTarget/process-center/config/100Custom.xml: Open quote is expected for attribute "merge" associated with an  element type  "deploy-snapshot-using-https".
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [private static com.lombardisoftware.core.config.TWConfiguration com.lombardisoftware.core.config.TWConfiguration.loadConfigurationLocally()] threw exception; nested exception is java.lang.RuntimeException: Cannot load configuration locally, exception = com.lombardisoftware.core.TeamWorksException: Error on line 33 of document file:/opt/IBM/WebSphere/AppServer/profiles/PCN1Profile/config/cells/PCCELL/nodes/PCNODE1/servers/PCSR011.AppTarget/process-center/config/100Custom.xml: Open quote is expected for attribute "merge" associated with an  element type  "deploy-snapshot-using-https".
Caused by: java.lang.RuntimeException: Cannot load configuration locally, exception = com.lombardisoftware.core.TeamWorksException: Error on line 33 of document file:/opt/IBM/WebSphere/AppServer/profiles/PCN1Profile/config/cells/PCCELL/nodes/PCNODE1/servers/PCSR011.AppTarget/process-center/config/100Custom.xml: Open quote is expected for attribute "merge" associated with an  element type  "deploy-snapshot-using-https".
Caused by: com.lombardisoftware.core.TeamWorksException: Error on line 33 of document file:/opt/IBM/WebSphere/AppServer/profiles/PCN1Profile/config/cells/PCCELL/nodes/PCNODE1/servers/PCSR011.AppTarget/process-center/config/100Custom.xml: Open quote is expected for attribute "merge" associated with an  element type  "deploy-snapshot-using-https".
at com.lombardisoftware.core.TeamWorksException.asTeamWorksException(TeamWorksException.java:136)
Caused by: org.jdom.input.JDOMParseException: Error on line 33 of document file:/opt/IBM/WebSphere/AppServer/profiles/PCN1Profile/config/cells/PCCELL/nodes/PCNODE1/servers/PCSR011.AppTarget/process-center/config/100Custom.xml: Open quote is expected for attribute "merge" associated with an  element type  "deploy-snapshot-using-https".
Caused by: org.xml.sax.SAXParseException: Open quote is expected for attribute "merge" associated with an  element type  "deploy-snapshot-using-https".
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)


etc.

The moral of the story ? Be careful what you paste.

PS I checked the original Microsoft Word document, last edited using Word 2010, and the quotation marks are definitely the wrong way around: -

<deploy-snapshot-using-https merge="replace">true</deploy-snapshot-using-https>

I'm guessing it's a font issue …..

IBM Business Process Manager 8.0.1 Advanced - Where's my Business Process Choreographer ? Where's my Service Component Architecture ?

$
0
0
For the past few days, I have been working my way through a scripted deployment of IBM Business Process Manager 8.0.1 Advanced, using a set of scripts developed by my colleagues here in IBM Software Services for WebSphere (ISSW).

These scripts allow us to create a repeatable and self-documenting process to build environments such as IBM Business Process Manager and IBM Operational Decision Manager, helping reduce the time to a successful delivery, and increasing the quality and supportability of the solution.

Having got to the end of the installation, during the functional testing, I was wondering why I couldn't access the Business Process Choreographer page at: -


I also noticed that I wasn't able to create a BPM Advanced Deployment Environment. This is the only option presented to me: -


After some investigation, with the kind assistance ( as ever) of Bob, I discovered the reason why.

The ISSW scripts use Bash, Jython and, most importantly, response files to perform their magic.

During the node profile creation phase, I'd selected to use a response file that points at the WRONG template ( Gromit ).

This is what I have: -

templatePath=/opt/IBM/WebSphere/AppServer/profileTemplates/BPM/managed.procsvr

which is fine for a BPM Standard build, but absolutely no use for a BPM Advanced installation.

The profile templates available to me, as held in: -

/opt/IBM/WebSphere/AppServer/profileTemplates/BPM

are: -

drwxr-xr-x  5 wasadmin wasadmins 4096 Jan  7 15:02 default.procctr
drwxr-xr-x  3 wasadmin wasadmins 4096 Jan  7 15:02 default.procctr.adv
drwxr-xr-x  5 wasadmin wasadmins 4096 Jan  7 15:02 default.procsvr
drwxr-xr-x  3 wasadmin wasadmins 4096 Jan  7 15:01 default.procsvr.adv
drwxr-xr-x  5 wasadmin wasadmins 4096 Jan  7 15:02 dmgr.procctr
drwxr-xr-x  3 wasadmin wasadmins 4096 Jan  7 15:02 dmgr.procctr.adv
drwxr-xr-x  5 wasadmin wasadmins 4096 Jan  7 15:02 dmgr.procsvr
drwxr-xr-x  3 wasadmin wasadmins 4096 Jan  7 15:01 dmgr.procsvr.adv
drwxr-xr-x  5 wasadmin wasadmins 4096 Jan  7 15:02 managed.procctr
drwxr-xr-x  3 wasadmin wasadmins 4096 Jan  7 15:02 managed.procctr.adv
drwxr-xr-x  5 wasadmin wasadmins 4096 Jan  7 15:02 managed.procsvr
drwxr-xr-x  3 wasadmin wasadmins 4096 Jan  7 15:01 managed.procsvr.adv
drwxr-xr-x  2 wasadmin wasadmins 4096 Jan  7 15:02 procctr
drwxr-xr-x  2 wasadmin wasadmins 4096 Jan  7 15:02 procsvr


As you can see, I used the managed.procsvr template rather than the managed.procctr.adv template.

This is confirmed by looking at: -

/opt/IBM/WebSphere/AppServer/properties/profileRegistry.xml

within which I have: -

<?xml version="1.0" encoding="UTF-8"?><profiles>
    <profile isAReservationTicket="false" isDefault="true" name="PCDMNODE" path="/opt/IBM/WebSphere/AppServer/profiles/PCDMProfile" template="/opt/IBM/WebSphere/AppServer/profileTemplates/management">
        <augmentor template="/opt/IBM/WebSphere/AppServer/profileTemplates/BusinessSpace/dmgr.bspace"/>
        <augmentor template="/opt/IBM/WebSphere/AppServer/BPM/base/profileTemplates/dmgr.bpm"/>
        <augmentor template="/opt/IBM/WebSphere/AppServer/profileTemplates/BPM/dmgr.procctr"/>
    </profile>
    <profile isAReservationTicket="false" isDefault="false" name="PCN1Profile" path="/opt/IBM/WebSphere/AppServer/profiles/PCN1Profile" template="/opt/IBM/WebSphere/AppServer/profileTemplates/managed">
        <augmentor template="/opt/IBM/WebSphere/AppServer/profileTemplates/BusinessSpace/managed.bspace"/>
        <augmentor template="/opt/IBM/WebSphere/AppServer/BPM/base/profileTemplates/managed.bpm"/>
        <augmentor template="/opt/IBM/WebSphere/AppServer/profileTemplates/BPM/managed.procsvr"/>
    </profile>
</profiles>


which explains why I don't have SCA or BPC.

Simple when you know how :-)

The solution - fix the response file before I build the profile :-)


IBM WebSphere Message Broker 8.0.1 - Getting started

$
0
0
This is my first foray with WebSphere Message Broker (WMB) 8.0.1, and a "Back to the Future" moment for WebSphere MQ (WMQ), with which I have not dabbled for 5-6 years.

This will be part of a Business Activity Monitoring (BAM) solution using IBM Business Monitor 8.0.1, 

I'm installing onto a VMware image running Red Hat Enterprise Linux 6.3 ( x86-64 ).

This is what I've downloaded from the IBM Software Catalog: -

-rw-r--r--@  1 hayd  staff   606945854 11 Jan 14:02 WMB_TOOLKIT_V8.0_LINUX_X86_1.gz
-rw-r--r--@  1 hayd  staff   633016440 11 Jan 14:17 WMB_TOOLKIT_V8.0_LINUX_X86_2.gz
-rw-r--r--@  1 hayd  staff   401541170 11 Jan 13:35 WMB_TOOLKIT_V8.0_LINUX_X86_3.gz
-rw-r--r--@  1 hayd  staff   665207457 11 Jan 14:33 WMB_V8.0_LINUX_X86-64.gz
-rw-r--r--@  1 hayd  staff   451379310  1 Nov 15:39 WS_MQ_FOR_LNX_ON_X86_64_V7.5_EIMG.tar.gz

Where possible, I'm going to do everything as non-root, using the wasadmin user, as this system is also going to host IBM Business Monitor 8.0.1 on WebSphere Application Server 8.0.0.5.

To start with, I installed WebSphere MQ 7.5 on the same RHEL VM. Ironically, this requires root as it installs a series of RPMs.

Initially,  I took input from this document: -


and downloaded mqconfig.

Having uploaded it to my server: -

-rw-r--r-- 1 wasadmin mqm 45855 Jan 11 19:47 mqconfig

and set the permissions: -

chmod +x ~/mqconfig

-rwxr-xr-x 1 wasadmin mqm 45855 Jan 11 19:47 mqconfig

and executed it: -

./mqconfig -v 7.5

mqconfig: V3.6 analyzing Red Hat Enterprise Linux Server release 6.3
          (Santiago) settings for WebSphere MQ V7.5

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

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

System Settings
  file-max            5408 of 792955 files       (0%)    IBM>=524288       PASS
  tcp_keepalive_time  7200 seconds                       IBM<=300          FAIL

Current User Limits (wasadmin)
  nofile       (-Hn)  20000 files                        IBM>=10240        PASS
  nofile       (-Sn)  20000 files                        IBM>=10240        PASS
  nproc        (-Hu)  12 of 62767 processes      (0%)    IBM>=4096         PASS
  nproc        (-Su)  12 of 1024 processes       (1%)    IBM>=4096         FAIL

I'll fix the failing issues later, and update this post.

In the meantime, I installed MQ ( as root ): -

mkdir /tmp/MQ
cd /tmp/MQ
tar xvzf ~/WS_MQ_FOR_LNX_ON_X86_64_V7.5_EIMG.tar.gz 
./mqlicense.sh -accept

Licensed Materials - Property of IBM 
                 
 5724-H72 

 (C) Copyright IBM Corporation 1994, 2012 All rights reserved.

US Government Users Restricted Rights - Use, duplication or disclosure
restricted by GSA ADP Schedule Contract with IBM Corp.

Agreement accepted:  Proceed with install.


rpm -ivh MQSeries*.rpm

Preparing...                ########################################### [100%]
   1:MQSeriesRuntime        ########################################### [  3%]
   2:MQSeriesJRE            ########################################### [  6%]
   3:MQSeriesJava           ########################################### [ 10%]
   4:MQSeriesFTBase         ########################################### [ 13%]
   5:MQSeriesServer         ########################################### [ 16%]
   6:MQSeriesFTAgent        ########################################### [ 19%]
   7:MQSeriesFTService      ########################################### [ 23%]
   8:MQSeriesAMS            ########################################### [ 26%]
   9:MQSeriesFTLogger       ########################################### [ 29%]
  10:MQSeriesXRService      ########################################### [ 32%]
  11:MQSeriesFTTools        ########################################### [ 35%]
  12:MQSeriesExplorer       ########################################### [ 39%]
  13:MQSeriesGSKit          ########################################### [ 42%]
  14:MQSeriesClient         ########################################### [ 45%]
  15:MQSeriesMan            ########################################### [ 48%]
  16:MQSeriesMsg_cs         ########################################### [ 52%]
  17:MQSeriesMsg_de         ########################################### [ 55%]
  18:MQSeriesMsg_es         ########################################### [ 58%]
  19:MQSeriesMsg_fr         ########################################### [ 61%]
  20:MQSeriesMsg_hu         ########################################### [ 65%]
  21:MQSeriesMsg_it         ########################################### [ 68%]
  22:MQSeriesMsg_ja         ########################################### [ 71%]
  23:MQSeriesMsg_ko         ########################################### [ 74%]
  24:MQSeriesMsg_pl         ########################################### [ 77%]
  25:MQSeriesMsg_pt         ########################################### [ 81%]
  26:MQSeriesMsg_ru         ########################################### [ 84%]
  27:MQSeriesMsg_Zh_CN      ########################################### [ 87%]
  28:MQSeriesMsg_Zh_TW      ########################################### [ 90%]
  29:MQSeriesSamples        ########################################### [ 94%]
  30:MQSeriesSDK            ########################################### [ 97%]
  31:MQSeriesXRClients      ########################################### [100%]


/opt/mqm/bin/setmqinst -i -p /opt/mqm/

118 of 118 tasks have been completed successfuly.
'Installation1' (/opt/mqm) set as the Primary Installation.


and tested MQ ( as wasadmin ): -

$ crtmqm DaveHay101

WebSphere MQ queue manager created.
Directory '/var/mqm/qmgrs/DaveHay101' created.
The queue manager is associated with installation 'Installation1'.
Creating or replacing default objects for queue manager 'DaveHay101'.
Default objects statistics : 74 created. 0 replaced. 0 failed.
Completing setup.
Setup completed.


$ strmqm DaveHay101

WebSphere MQ queue manager 'DaveHay101' starting.
The queue manager is associated with installation 'Installation1'.
5 log records accessed on queue manager 'DaveHay101' during the log replay phase.
Log replay for queue manager 'DaveHay101' complete.
Transaction manager state recovered for queue manager 'DaveHay101'.
WebSphere MQ queue manager 'DaveHay101' started using V7.5.0.0.

endmqm DaveHay101

Quiesce request accepted. The queue manager will stop when all outstanding work
is complete.


For the record, I also made reference to: -


Having installed and tested WMQ, I then proceeded to install WMB.

Before I start the installation, however, there are a few pre-requisites, as outlined here: -


As root

groupadd mqbrkrs
$ usermod -g mqbrkrs wasadmin

$ groupadd mqm
$ useradd -g mqm mqm
$ usermod -g mqm wasadmin

mkdir /var/mqsi
touch /var/mqsi/install.properties
chmod -R 777 /var/mqsi

mkdir /opt/ibm/mqsi
$ mkdir /opt/ibm/mqsi/8.0.0.1
chmod -R a+wr /opt/ibm/mqsi/8.0.0.1/
$ chgrp -R wasadmins /opt/ibm/mqsi/8.0.0.1/

As wasadmin

$ cd /tmp
mkdir WMB
$ cd WMB
$ tar xvzf ../WMB_V8.0_LINUX_X86-64.gz 

$ cd /tmp/WMB/messagebroker_ia_runtime1
./setuplinuxx64.bin 

Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...

Launching installer…
...
The installer is now ready to install IBM WebSphere Message Broker onto your 
system at the following location:

   /opt/ibm/mqsi/8.0.0.1

PRESS <ENTER> TO INSTALL: 

===============================================================================
Installing...
-------------

 [==================|==================|==================|==================]
 [------------------|------------------|------------------|------------------]

===============================================================================
Installation Complete
---------------------

The installer has successfully installed IBM WebSphere Message Broker Version 
8.0.0.1 to:

/opt/ibm/mqsi/8.0.0.1

After the installer has ended, the log files will be written to the following 
locations:
[User]  /opt/ibm/mqsi/8.0.0.1/IBM_WebSphere_Message_Broker_InstallLog.log
[Debug] /var/mqsi/WMB_8001_installer_debug.log 

PRESS <ENTER> TO EXIT THE INSTALLER: 

Having installed WMQ and WMB, I then tested Broker: -

$ /opt/ibm/mqsi/8.0.0.1/bin/mqsicreatebroker DaveHay -q DaveHay101

AMQ8110: WebSphere MQ queue manager already exists.
WebSphere MQ queue manager 'DaveHay101' starting.
The queue manager is associated with installation 'Installation1'.
5 log records accessed on queue manager 'DaveHay101' during the log replay phase.
Log replay for queue manager 'DaveHay101' complete.
Transaction manager state recovered for queue manager 'DaveHay101'.
WebSphere MQ queue manager 'DaveHay101' started using V7.5.0.0.
BIP8081 An exception was caught while processing the response message for the command, 'Unable to format an ImbException message for output, ImbException message number is BIP8000'.

The exception caught me by surprise - a quick Google search found this: -

<snip>
On Linux and UNIX systems, the user ID that runs this command must be a member of the group mqbrkrs. If your user ID is not a member of mqbrkrs, the command fails with the following error message:
mqsideploy -i localhost -p 1414 -q qm2 -b brk2

BIP8081 An exception was caught while processing the command,
'Unable to format an ImbException message for output, ImbException message 
number is BIP2164'.
</snip>


I thought I'd already added wasadmin to the mqbrokers group, but I did it again ( as root ): -

usermod -g mqbrkrs wasadmin

and then retried the previous command ( as wasadmin ): -

$ opt/ibm/mqsi/8.0.0.1/bin/mqsideletebroker DaveHay

BIP8071I: Successful command completion. 

$ /opt/ibm/mqsi/8.0.0.1/bin/mqsicreatebroker DaveHay -q DaveHay101

AMQ8110: WebSphere MQ queue manager already exists.
BIP8071I: Successful command completion. 


$ /opt/ibm/mqsi/8.0.0.1/bin/mqsistart DaveHay

BIP8096I: Successful command initiation, check the system log to ensure that the component started without problem and that it continues to run without problem. 

$ /opt/ibm/mqsi/8.0.0.1/bin/mqsilist 

BIP1284I: Broker 'DaveHay' on queue manager 'DaveHay101' is running. 
BIP8071I: Successful command completion.


Sorted, I now have WebSphere MQ and WebSphere Message Broker installed and running.

Now to install the WebSphere Message Broker Toolkit and create my first flow  ……

Installing WebSphere Message Broker Toolkit 8.0.1 on Linux

$
0
0
Following on from my previous post: -


I'm now getting started with the WebSphere Message Broker (WMB) Toolkit.

This is what I'd previously downloaded: -

-rw-r--r--   1 wasadmin wasadmins 606945854 Jan 11 17:49 WMB_TOOLKIT_V8.0_LINUX_X86_1.gz
-rw-r--r--   1 wasadmin wasadmins 633016440 Jan 11 17:49 WMB_TOOLKIT_V8.0_LINUX_X86_2.gz
-rw-r--r--   1 wasadmin wasadmins 401541170 Jan 11 17:49 WMB_TOOLKIT_V8.0_LINUX_X86_3.gz

As root, I prepared the ground for a non-root installation: -

mkdir /opt/IBM
$ chmod -R a+wr /opt/IBM/
$ chgrp -R wasadmins /opt/IBM/

cd /tmp/
$ mkdir WMBTK
$ cd WMBTK/
tar xvzf /tmp/WMB_TOOLKIT_V8.0_LINUX_X86_1.gz 
$ tar xvzf /tmp/WMB_TOOLKIT_V8.0_LINUX_X86_2.gz 
$ tar xvzf /tmp/WMB_TOOLKIT_V8.0_LINUX_X86_3.gz 

Unlike WMQ and WMB, the Toolkit uses IBM Installation Manager, which is a great relief, as it's what I've been using for WebSphere Application Server, WebSphere Portal, IBM Business Process Manager and IBM Operational Decision Manager these past few  months.

Having unpacked the code, I then proceeded to create a response file ( to aid future installations ): -

/tmp/WMBTK/disk1/IBMInstallationManager/userinst -record ~/installWMBTK801.resp -skipInstall /tmp

resulting in this response file: -

~/installWMBTK801.resp 
<?xml version="1.0" encoding="UTF-8"?>
<!--The "acceptLicense" attribute has been deprecated. Use "-acceptLicense" command line option to accept license agreements.-->
<agent-input acceptLicense='true'>
<server>
<repository location='/tmp/WMBTK/disk1/IBMInstallationManager'/>
<repository location='/tmp/WMBTK/disk1'/>
</server>
<profile id='IBM Installation Manager' installLocation='/opt/IBM/InstallationManager/eclipse' kind='self'>
<data key='eclipseLocation' value='/opt/IBM/InstallationManager/eclipse'/>
<data key='user.import.profile' value='false'/>
</profile>
<install modify='false'>
<offering id='com.ibm.cic.agent' version='1.4.3000.20110303_1846' profile='IBM Installation Manager' features='agent_core,agent_jre' installFixes='none'/>
<offering id='com.ibm.websphere.messagebroker.toolkit.v80' version='8.0.0.20120808-1331' profile='IBM WebSphere Message Broker Toolkit' features='com.ibm.websphere.messagebroker.toolkit,com.ibm.websphere.messagebroker.adapters,com.ibm.rad.sdpcore,com.ibm.rad.jre,com.ibm.rad.webtools_core,com.ibm.rad.was_core,com.ibm.rad.data_tools,com.ibm.rad.tptp,com.ibm.rad.j2c,com.ibm.rad.clearcase,com.ibm.rad.birt,com.ibm.rad.transform_authoring,com.ibm.rad.pde' installFixes='none'/>
</install>
<profile id='IBM WebSphere Message Broker Toolkit' installLocation='/opt/IBM/WMBT800'>
<data key='eclipseLocation' value='/opt/IBM/WMBT800'/>
<data key='user.import.profile' value='false'/>
<data key='cic.selector.nl' value='en'/>
</profile>
<preference name='com.ibm.cic.common.core.preferences.eclipseCache' value='/opt/IBM/SDPShared'/>
<preference name='com.ibm.cic.common.core.preferences.connectTimeout' value='30'/>
<preference name='com.ibm.cic.common.core.preferences.readTimeout' value='45'/>
<preference name='com.ibm.cic.common.core.preferences.downloadAutoRetryCount' value='0'/>
<preference name='offering.service.repositories.areUsed' value='true'/>
<preference name='com.ibm.cic.common.core.preferences.ssl.nonsecureMode' value='false'/>
<preference name='com.ibm.cic.common.core.preferences.http.disablePreemptiveAuthentication' value='false'/>
<preference name='http.ntlm.auth.kind' value='NTLM'/>
<preference name='http.ntlm.auth.enableIntegrated.win32' value='true'/>
<preference name='com.ibm.cic.common.core.preferences.preserveDownloadedArtifacts' value='true'/>
<preference name='com.ibm.cic.common.core.preferences.keepFetchedFiles' value='false'/>
<preference name='PassportAdvantageIsEnabled' value='false'/>
<preference name='com.ibm.cic.common.core.preferences.searchForUpdates' value='false'/>
<preference name='com.ibm.cic.agent.ui.displayInternalVersion' value='false'/>
</agent-input>


I then proceeded to install the Toolkit: -

./disk1/IBMInstallationManager/userinstc -input ~/installWMBTK801.resp -acceptLicense -nosplash -silent

which completed without issue.

I then validated the installation: -

/opt/IBM/InstallationManager/eclipse/tools/imcl listInstalledPackages

com.ibm.cic.agent_1.4.3000.20110303_1846
com.ibm.websphere.messagebroker.toolkit.v80_8.0.0.20120808-1331

Finally, I fired up the Toolkit: -

$ /opt/IBM/WMBT800/eclipse


Right, what's next ?

Ooops, now I understand what WebSphere Message Broker Toolkit is trying to tell me

$
0
0
Hot on the heels of my earlier posts: -


and: -


I fired up the Toolkit's Default Configuration Wizard, which almost immediately failed with: -

Jan 12, 2013 8:00:07 AM com.ibm.etools.mft.eou.wizards.EouWizard logAction
INFO: Verifying that the user has sufficient group authority for brokers commands.
Jan 12, 2013 8:00:07 AM com.ibm.etools.mft.eou.wizards.EouWizard logAction
SEVERE: Insufficient authority: user must be in groups mqm and mqbrkrs.


( Source: /home/wasadmin/IBM/wmbt80/workspace/.metadata/DefaultConfigurationWizard.log )

When I checked the group membership of the user wasadmin: -

( as root )

$ id wasadmin

uid=503(wasadmin) gid=503(mqbrkrs) groups=503(mqbrkrs),504(mqm)

I could see that the user was in BOTH groups.

However, I then realised that I'd not restarted that user's shell since I added mqm. I validated this by simply running the id command from the current shell: -

$ id

uid=503(wasadmin) gid=503(mqbrkrs) groups=503(mqbrkrs)

Once I restarted the shell: -

$ exit

logout

$ su - wasadmin
$ id

uid=503(wasadmin) gid=503(mqbrkrs) groups=503(mqbrkrs),504(mqm)

the Wizard ran through to completion: -

Verifying that the user has sufficient group authority for brokers commands.
The task succeeded

Verifying that the default queue manager [MB8QMGR] does not already exist.
The task succeeded

Verifying that the default broker [MB8BROKER] does not already exist.
The task succeeded

Creating the default broker [MB8BROKER] and the queue manager [MB8QMGR].
The task succeeded

Changing the configuration of the default broker. [MB8BROKER]
The task succeeded

Searching for the WMQ version.
The task succeeded

Creating a listener for queue manager [MB8QMGR] on port 2414.
The task succeeded

Starting the default broker [MB8BROKER].
The task succeeded

Creating the default execution group.
The task succeeded


 ++++++++++
  All tasks were completed successfully.
 ++++++++++


Easy when you know how :-)

WebSphere Message Broker 8.0.1 - I'm on a roll ....

$
0
0
As you can probably tell, I'm currently getting stuck into WebSphere MQ and WebSphere Message Broker, so I'm back up on the learning curve.

Following earlier posts: -




I "discovered" one more important fact about WMB on Linux.

In order to use it, at least from the command-line, it's necessary to set up the shell environment using a script.

This is similar to what one has to do for DB2 e.g.: -

$ source /home/db2inst1/sqllib/db2profile

In the case of WMB, it's a different command.

So here's the symptom: -

$ /opt/ibm/mqsi/8.0.0.1/bin/mqsilist 

/opt/ibm/mqsi/8.0.0.1/bin/mqsilist: error while loading shared libraries: libImbCmdLib.so: cannot open shared object file: No such file or directory

$ /opt/ibm/mqsi/8.0.0.1/bin/mqsistop.bin 

/opt/ibm/mqsi/8.0.0.1/bin/mqsistop.bin: error while loading shared libraries: libImbCmdLib.so: cannot open shared object file: No such file or directory

etc.

and here's the solution: -

source /opt/ibm/mqsi/8.0.0.1/bin/mqsiprofile 

MQSI 8.0.0.1
/opt/ibm/mqsi/8.0.0.1


$ /opt/ibm/mqsi/8.0.0.1/bin/mqsilist

BIP1284I: Broker 'DaveHay' on queue manager 'DaveHay101' is running. 
BIP1284I: Broker 'MB8BROKER' on queue manager 'MB8QMGR' is running. 
BIP8071I: Successful command completion.

$ /opt/ibm/mqsi/8.0.0.1/bin/mqsistop.bin DaveHay

BIP8071I: Successful command completion. 

$ /opt/ibm/mqsi/8.0.0.1/bin/mqsistop.bin MB8BROKER

BIP8071I: Successful command completion. 

Simple :-)

PS Instead of using the command source, I could have chosen to run: -

. /opt/ibm/mqsi/8.0.0.1/bin/mqsiprofile 

It does the same thing - execute the target script, and add it's environment to that of the current shell.

Next step is to add this to my user's start script ….

WebSphere Message Broker 8.0.1 and WebSphere MQ 7.5 together - com.ibm.broker.config.proxy.ConfigManagerProxyLoggedMQException: Could not connect to queue manager 'MB8QMGR' (MQ reason code 2495)

$
0
0
I was struggling to import/use any of the sample flows that come with the WebSphere Message Broker 8.0.1 Toolkit, and kept seeing the following exception: -

$ cat /home/wasadmin/IBM/wmbt80/workspace/.metadata/SamplePreparationWizard.log

Throwable occurred: com.ibm.broker.config.proxy.ConfigManagerProxyLoggedMQException: Could not connect to queue manager 'MB8QMGR' (MQ reason code 2495)
at com.ibm.broker.config.proxy.MQConnectionHelper.connectToMQ(Unknown Source)
at com.ibm.broker.config.proxy.MQSender.connect(Unknown Source)
at com.ibm.broker.config.proxy.MQSender.<init>(Unknown Source)
at com.ibm.broker.config.proxy.MQBrokerConnectionParameters.getSender(Unknown Source)
at com.ibm.broker.config.proxy.BrokerProxy.<init>(Unknown Source)
at com.ibm.broker.config.proxy.BrokerProxy.getInstance(Unknown Source)
at com.ibm.etools.mft.eou.operations.sampleprepwiz.ToolkitConnectedOperation.checkToolkitConnection(Unknown Source)
at com.ibm.etools.mft.eou.operations.sampleprepwiz.ToolkitConnectedOperation.run(Unknown Source)
at com.ibm.etools.mft.eou.operations.EouCommands.checkToolkitConnection(Unknown Source)
at com.ibm.etools.mft.eou.operations.LinuxEouCommands.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Jan 12, 2013 2:32:16 PM com.ibm.etools.mft.eou.wizards.EouWizard logAction


Digging further, I also found that I was unable to connect to the Broker / Queue Manager from within the Toolkit: -



but the exception was FAR more useful: -


Following the recommendations in the dialogue: -

echo $LD_LIBRARY_PATH

/opt/ibm/mqsi/8.0.0.1/jre16/lib/amd64:/opt/ibm/mqsi/8.0.0.1/jre16/lib/amd64/classic:/opt/ibm/mqsi/8.0.0.1/xml4c/lib:/opt/ibm/mqsi/8.0.0.1/lib:/opt/ibm/mqsi/8.0.0.1/bin:/opt/ibm/mqsi/8.0.0.1/ODBC/V6.0/lib:/opt/ibm/mqsi/8.0.0.1/xlxpc/lib:/opt/ibm/mqsi/8.0.0.1/dfdlc/lib

export LD_LIBRARY_PATH=/opt/mqm/java/lib:$LD_LIBRARY_PATH
$ echo $LD_LIBRARY_PATH

/opt/mqm/java/lib:/opt/ibm/mqsi/8.0.0.1/jre16/lib/amd64:/opt/ibm/mqsi/8.0.0.1/jre16/lib/amd64/classic:/opt/ibm/mqsi/8.0.0.1/xml4c/lib:/opt/ibm/mqsi/8.0.0.1/lib:/opt/ibm/mqsi/8.0.0.1/bin:/opt/ibm/mqsi/8.0.0.1/ODBC/V6.0/lib:/opt/ibm/mqsi/8.0.0.1/xlxpc/lib:/opt/ibm/mqsi/8.0.0.1/dfdlc/lib

Having done this, when I re-started Eclipse and attempted to connect to my Broker - this time it worked out of the box.

Additionally, I was able to import and use the sample flow.

Another hurdle vaulted …….

Installation of IBM Cognos Business Intelligence has failed. Return code : 1

$
0
0
As part of an IBM Business Monitor 8.0.1 installation, it is necessary to install Cognos Business Intelligence 10.1.

Sadly, for me, this was failing with a really useful (NOT!) exception: -

Installation of IBM Cognos Business Intelligence has failed. Return code : 1

which is thrown by IBM Installation Manager 1.6.

Looking at the IIM log here: -

/home/wasadmin/var/ibm/InstallationManager/logs/20130115_1135.xml

I could see: -

<entry num='428' time='1358250178752' elapsed='07:13.11' level='ERROR' thread='Worker-0'>
 <logger>com.ibm.cic.agent.core.Engine</logger>
 <class>com.ibm.cic.agent.core.Engine.Phase</class>
 <method>perform</method>
 <message>Installation of IBM Cognos Business Intelligence has failed.
Return code : 1</message>
</entry>


which was no more useful.

However, I dug further into the file system, and looked at the newly created WAS logs ( in this particular case, I was installing WAS 8.0.0.5 at the same time as BM, Cognos etc. ).

This led me to this log: -

/opt/IBM/WebSphere/AppServer/cognos/instlog/tl-BISRVR-10.1-6235.144-20130115_1141.txt

and this exception: -

File "/opt/IBM/WebSphere/AppServer/cognos/webcontent/documentation/en/ug_cra_t_customize_error_handling_smtp_mail_server.html" successfully extracted.
File "/opt/IBM/WebSphere/AppServer/cognos/webcontent/documentation/en/ug_cra_t_secure_error.html" successfully extracted.
File "/opt/IBM/WebSphere/AppServer/cognos/webcontent/documentation/de/ug_cra_t_customize_error_handling_smtp_mail_server.html" successfully extracted.
File "/opt/IBM/WebSphere/AppServer/cognos/webcontent/documentation/de/ug_cra_t_secure_error.html" successfully extracted.
Error: Call to mkdir() failed for directory "/opt/IBM/WebSphere/AppServer/cognos/webcontent/documentation/en/tours/images/": No space left on device.
Error: Failed to create directory "/opt/IBM/WebSphere/AppServer/cognos/webcontent/documentation/en/tours/images/".
Error: Call to mkdir() failed for directory "/opt/IBM/WebSphere/AppServer/cognos/war/gateway/lib/": No space left on device.
Error: Failed to create directory "/opt/IBM/WebSphere/AppServer/cognos/war/gateway/lib/".
which is probably quite important.

The Linux command df -kmh shows that my disk is 89% used, so I suspect that it's a good time to delete stuff and/or add more disk :-)

*UPDATE*

So, thinking that I'd cracked it, it failed again with the precise same error: -

Installation of IBM Cognos Business Intelligence has failed. Return code : 1

although I did not see the "No space left on device" error this time around.

I did, however, see this: -

Failed to extract file "." from tar file "/opt/IBM/WebSphere/AppServer/CognosImage/zipfiles/linuxi38664h/dojo15-linuxi38664h-gate-1.5.0.7.0-inst.tar.gz".

In desperation, I took a snapshot of my VM, remove the /opt/IBM directory structure ( thus breaking my WebSphere Message Broker / WebSphere MQ environment !! ) and installed Monitor again, this time as root rather than wasadmin, using the Launchpad.

You know what ? It installed perfectly, without exception :-)

The moral of the story ? Hmmmm, not yet sure, will think about it, and post back here.

IBM WebSphere MQ 7.5 - Tuning up the Linux kernel

$
0
0
Following on from my earlier post: -

IBM WebSphere Message Broker 8.0.1 - Getting started

I've been experimenting with Linux kernel tuning, using the mqconfig tool: -


This is what mqconfig shows me ( run as user mqm ): -

$ ./mqconfig -v 7.5

mqconfig: V3.6 analyzing Red Hat Enterprise Linux Server release 6.3
          (Santiago) settings for WebSphere MQ V7.5

System V Semaphores
  semmsl     (sem:1)  250 semaphores                     IBM>=500          FAIL
  semmns     (sem:2)  17 of 256000 semaphores    (0%)    IBM>=256000       PASS
  semopm     (sem:3)  32 operations                      IBM>=250          
FAIL
  semmni     (sem:4)  7 of 2048 sets             (0%)    IBM>=1024         
PASS

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

System Settings
  file-max            5728 of 792955 files       (0%)    IBM>=524288       
PASS
  tcp_keepalive_time  7200 seconds                       IBM<=300          
FAIL

Current User Limits (mqm)
  nofile       (-Hn)  20000 files                        IBM>=10240        
PASS
  nofile       (-Sn)  20000 files                        IBM>=10240        
PASS
  nproc        (-Hu)  10 of 62767 processes      (0%)    IBM>=4096         
PASS
  nproc        (-Su)  10 of 1024 processes       (0%)    IBM>=4096         
FAIL

Following the advice here: -


this is how I turned FAIL into PASS.

(a) For the System V Semaphores, I added the following line to /etc/sysctl.conf 

kernel.sem = 500 256000 250 1024

which has increased semmsl from 250 to 500 and increased semopm from 32 to 250.

(b) For the System Settings, I added the following two lines to /etc/sysctl.conf

fs.file-max = 524288

tcp_keepalive_time = 300

(c) For the Current User Limits, I added the following lines to /etc/security/limits.conf 

mqmhardnproc4096
mqmsoftnproc4096


In order to make the sysctl.conf changes permanent, I ran the following command ( as root ): -

$ sysctl -p

which returns: -


net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.sem = 500 256000 250 1024
fs.file-max = 524288
net.ipv4.tcp_keepalive_time = 300

In order to make the limits.conf changes permanent, I logged out of the mqm and then logged back in.

This time around, I get the following: -

$ ./mqconfig -v 7.5

mqconfig: V3.6 analyzing Red Hat Enterprise Linux Server release 6.3
          (Santiago) settings for WebSphere MQ V7.5

System V Semaphores
  semmsl     (sem:1)  500 semaphores                     IBM>=500          
PASS
  semmns     (sem:2)  17 of 256000 semaphores    (0%)    IBM>=256000       
PASS
  semopm     (sem:3)  250 operations                     IBM>=250          
PASS
  semmni     (sem:4)  7 of 1024 sets             (0%)    IBM>=1024         
PASS

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

System Settings
  file-max            5792 of 524288 files       (1%)    IBM>=524288       
PASS
  tcp_keepalive_time  300 seconds                        IBM<=300          
PASS

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

Testing the AJAX Proxy in WebSphere Application Server 8.0

$
0
0
I'm actually using IBM Business Monitor 8.0.1 ( aka Business Activity Monitoring or IBM BM or IBM ! ), but this relates to IBM Business Process Manager 8.X, which also includes the AJAX Proxy to support the Business Space UI.

I'm still on a learning curve with this, but I just wanted to report back on some basic AJAX Proxy security/configuration testing.

So, the way I see it, the AJAX Proxy can be used to allow an iWidget rendering in Business Space to access services on other Business Space servers ….. -OR- on other web servers, regardless of whether they're in your network or not :-(

In addition, the AJAX Proxy can be used by ALL authenticated users.

Ulp !!

So, with more recent versions of IBM BAM and IBM BPM, the AJAX Proxy has been "locked down" to prevent users from going to servers outside of a small number of defaults.

This is controlled by the file - proxy-config.xml - for my environment, this is located here: -

/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/BusinessSpace/BAM801.WebApp/mm.runtime.prof/config/proxy-config.xml

Within the file, I can see: -

...
        <proxy:policy url="endpoint://*" acf="none" basic-auth-support="true">
                <proxy:actions>
                        <proxy:method>GET</proxy:method>
                        <proxy:method>POST</proxy:method>
                        <proxy:method>PUT</proxy:method>
                        <proxy:method>DELETE</proxy:method>
                </proxy:actions>

I believe this allows Business Space to access iWidgets etc. from the BAM ( or BPM ) server itself e.g. only access resources from the server on which Business Space is running.

I *MAY* be wrong, and will be checking this out.

However, I can also see: -

        <proxy:policy url="http://www.ibm.com/*" acf="none" basic-auth-support="true">
        <proxy:policy url="http://www-03.ibm.com/*" acf="none" basic-auth-support="true">
        <proxy:policy url="http://www.redbooks.ibm.com/*" acf="none" basic-auth-support="true">
        <proxy:policy url="http://www.google.com/ig/*"  acf="none" basic-auth-support="true">
    <proxy:mapping contextpath="/cognosProxy/*">
           <proxy:policy url="endpoint://*" acf="none" basic-auth-support="true">

the first four of which mean that the AJAX Proxy will allow requests to be made from Business Space to any of those four external URLs.

To "prove" this, I attempted to access another URL via the Proxy, with the following request: -


As expected, this failed with: -

403 BMWPX0006E: The URL https://rhel6.uk.ibm.com:8443/ cannot be accessed through the proxy.

Had I added a <proxy:policy url="http://rhel6.uk.ibm.com:8443/* …/> entry to my proxy-config.xml, I would not have seen that exception.

I proved this by adding the following lines: -

..
        <proxy:policy url="https://rhel6.uk.ibm.com:8443/*"  acf="none" basic-auth-support="true">
                <proxy:actions>
                        <proxy:method>GET</proxy:method>
                </proxy:actions>
        </proxy:policy>
...

to the proxy-config.xml file.

I then needed to "check in" the updated file to the cluster within which Business Space is executing - BAM801.WebApp - as follows: -

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

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

wsadmin> AdminTask.updateBlobConfig('[-clusterName "BAM801.WebApp" -propertyFileName "/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/BusinessSpace/BAM801.WebApp/mm.runtime.prof/config/proxy-config.xml" -prefix "Mashups_"]')

'updateBlobConfig is executed succesfully'

wsadmin> AdminConfig.save()

''

wsadmin> AdminNodeManagement.syncActiveNodes()

---------------------------------------------------------------
 AdminNodeManagement:        Synchronize the active nodes
 Usage: AdminNodeManagement.syncActiveNodes()
 Return: If the command is successfully invoked, a value of 1 is returned.
---------------------------------------------------------------


bamNode01
1

wsadmin> exit

Now, when I attempt to have the AJAX Proxy get content directly from the web server, using the following URL: -


I get some small element of the IBM HTTP Server default "welcome" page - index.html - as follows: -


I suspect that I need to enable more HTTP methods than merely GET, but this proves the point with regard to the AJAX Proxy configuration.

PS I should point out that this is well documented in various places, including the following IBM Technote: -

Troubleshooting IBM Business Process Manager: "403 BMWPX0006E: The URL you tried to access through the proxy is not allowed"

 

What this should show us is that (a) the AJAX Proxy is a very powerful piece of kit and (b) with great power comes great responsibility.

There are a number of IBM recommendations with regard to "hardening" the AJAX proxy, including: -

(1) Forcing SSL and disallow untrusted signers
(2) Reducing the number of endpoints to which the proxy can connect
(3) Configuring IP whitelisting to ensure that the proxy is only used with certain IP address ranges

For more detail, please contact IBM.

Of course,  IBM Software Services for WebSphere (ISSW), the team for whom I work, can certainly help with this, if required.

More on the AJAX Proxy and the REST Services Gateway in IBM Business Space 8.0.1

$
0
0
Following on from my earlier post: -

Testing the AJAX Proxy in WebSphere Application Server 8.0

I did see some issues with the AJAX Proxy, when I tried to add and configure a KPIs widget to Business Space ( I'm using IBM Business Monitor 8.0.1 on WAS 8.0.0.5 ), including the following exceptions in SystemOut.log: -

[1/22/13 15:16:06:133 GMT] 00000026 URLConnection W   BMWPX0011W: The Ajax proxy has been enabled to support unsigned Secure Sockets Layer (SSL) certificates: mapping=/proxy, policy=null
[1/22/13 15:16:06:166 GMT] 00000026 AjaxProxyServ W   BMWPX0024W: An unexpected problem occurred while processing the response data.
                                 java.net.SocketException: Connection reset
[1/22/13 15:16:06:193 GMT] 00000026 servlet       E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0014E: Uncaught service() exception root cause mmOSGI: com.ibm.mm.proxy.exceptions.LocalizedProxyIOException: BMWPX0024W: An unexpected problem occurred while processing the response data.
Caused by: java.net.SocketException: Connection reset
[1/22/13 15:16:06:328 GMT] 00000026 webapp        E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[mmOSGI]: com.ibm.mm.proxy.exceptions.LocalizedProxyIOException: BMWPX0024W: An unexpected problem occurred while processing the response data.
Caused by: java.net.SocketException: Connection reset


etc.

When I checked the exception that I was seeing in the widget: -


it looked like the iWidget was using the AJAX Proxy, but was going to the following URL: -

In my environment, IHS is configured for SSL only, and is listening on port 8443.

In other words, I was accessing Business Space via the right protocol/port combination ( HTTPS to 8443 ), but the iWidget was trying to go to the same SSL port ( 8443 ) using the HTTP protocol.

Something made me think that this might be a problem with the REST endpoints.

I checked that in the WAS Integrated Solutions Console (ISC) via the following path: -

Services -> REST services -> REST services

and could see: -

Therefore, the REST endpoints were configured for the RIGHT port ( 8443 ) but the WRONG protocol ( HTTP ).

I changed this as follows: -

Services -> REST services -> REST service providers -> REST Services Gateway

and changed from this: -


to this: -


Having done this, I shut down and restarted my four clusters: -


and now I see a much more meaningful "exception": -


which is 100% accurate, as I have no KPIs defined yet :-)


Fun with IBM Business Monitor 8.0.1 and Cognos BI 10.1 on Red Hat Enterprise Linux 6.3

$
0
0
This is a strange one, but at least I have a solution.

Having recently ( January 17th ) installed IBM Business Monitor 8.0.1 ( aka BAM ) on a VMware image running Red Hat Enterprise Linux 6.3 x86-64, I was surprised to see the following exception: -

[1/22/13 14:48:10:787 GMT] 00000000 WsServerImpl  W   WSVR0100W: An error occurred initializing, BAM801.Support.bamNode01.0 [class com.ibm.ws.runtime.component.ServerImpl]
com.ibm.ws.exception.ConfigurationWarning: Exception caught when initializing component
Caused by: java.lang.NoClassDefFoundError: com.ibm.ws.process.linuxutil.ThreadUtil (initialization failure)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:168)


when I started one of the clusters today.

This cluster ( BAM801.Support.bamNode01.0 ) hosts IBM Cognos BI 10.1, which is a core component of BAM, and is used to provide cube views etc. of business metrics and KPIs.

The strange thing is that I did not see, or perhaps notice, this exception when I last started the cluster last Friday.

Be that as it may, this is a known issue with the combination of BAM, Cognos and 64-bit RHEL, as evidenced by this IBM Technote: -


which says, in part: -

Cause

The libfreebl3.so file shipped with Cognos V10.1.1 is not compatible with Red Hat Enterprise Linux 6.x. The IBM Business Monitor server fails to start because Cognos fails to start.

Resolving the problem

Add the following like to the .profile, .bashrc, or appropiate login initialization script for the Cognos user account:

export LD_PRELOAD=/lib64/libfreebl3.so

In order to test this, without rebooting my server, I updated my local Bash shell: -

export LD_PRELOAD=/lib64/libfreebl3.so

and validated the change: -

$ set | grep -i PRELOAD

LD_PRELOAD=/lib64/libfreebl3.so

$ echo $LD_PRELOAD

/lib64/libfreebl3.so

I then manually started the cluster from within that shell: -

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/startServer.sh BAM801.Support.bamNode01.0

In this way, I could test the change without rebooting. Had I not done this, when I started the cluster from within the WAS Integrated Solutions Console, via the Deployment Manager, the LD_PRELOAD environment change would NOT have been picked up.

Lo and behold, this worked a treat, and I now have a working Cognos BI environment.

My next step was to make this change permanent for the user who "owns" the WAS processes - wasadmin - by adding the line: -

export LD_PRELOAD=/lib64/libfreebl3.so

to: -

/home/wasadmin/.bashrc 

Actually, this goes along with some WebSphere MQ and Message Broker stuff about which I have previously blogged, so I now have: -

source /opt/ibm/mqsi/8.0.0.1/bin/mqsiprofile
export LD_LIBRARY_PATH=/opt/mqm/java/lib:$LD_LIBRARY_PATH
export LD_PRELOAD=/lib64/libfreebl3.so

Now, the next time that I log in as wasadmin and spin up any WAS process, including the Deployment Manager, Node Agent etc. the LD_PRELOAD variable will be picked up.

Good stuff …..

WebSphere Portal - Switching Databases

$
0
0
One of my colleagues asked me how he could connect a newly installed WebSphere Portal v8 profile ( wp_profile ) to an existing set of Portal databases - JCRDB, RELEASEDB, CUSTDB etc. - without initialising the data within those DBs.

The reason for this was that he'd reinstalled WebSphere Portal, but didn't want to lose the data that he'd previously transferred ( from Derby ) into the "real" DB2 databases.

This seemed like a really straightforward question, especially given the fact this would be a common use case when, for example, upgrading from one release to another. To extend the example, one might build a new WebSphere Portal 8 cell, leaving the existing WebSphere Portal 7 cell in place, and then "connect" the new servers to the old database.

Although I couldn't come up with the solution, my colleague ( Steven ) did.

To be more specific, he found this in the WebSphere Portal Wiki: -

Product Documentation > IBM WebSphere Portal 8 Product Documentation > Installing > Installing on Linux > Setting up a stand-alone production server on Linux > Linux stand-alone: Configuring your portal to use a database > Linux stand-alone: Setting up a remote DB2 database > Linux stand-alone: Type 2 driver support > Linux stand-alone: Changing DB2 driver types

This uses the following ConfigEngine commands: -

./ConfigEngine.sh validate-database

./ConfigEngine.sh connect-database

to do the job.

Sorted :-)

Performance tuning considerations when IBM Business Process Manager (BPM) is running in a virtual machine

$
0
0
One of my colleagues, Mike, blogged this earlier today, and I thought it worth re-sharing as it's relevant to IBM BPM *and* any other WAS-based workload running on VMware, or similar.


Problem(Abstract)

Running IBM Business Process Manager in a virtual machine is supported. However, there are some additional considerations when running servers in a virtual machine (VM) environment.

Resolving the problem

When you are running a Java Platform, Enterprise Edition (Java EE) application in a virtual machine (VM) there are additional considerations. These considerations are performance-related changes.

Enjoy !

PS I've blogged about VMware and WAS before, specifically this post: -


IBM Installation Manager - Permission to Launch

$
0
0
I had some fun and games with IBM Installation Manager 1.6.0 today ( on a 64-bit version of Red Hat Enterprise Linux 6.3, but that's not important right now ).

It all stemmed from when I ( stupidly ) tried to run IIM as root, having installed and configured it as a non-root user - wasadmin.

This is what I saw: -

ERROR: The Installation Manager cannot be started.The registry information does not exist or does not match with this executable.This may happen if you are trying to run Installation Manager installed by another user.

00:00.40 ERROR [main] com.ibm.cic.agent.internal.application.HeadlessApplication run
  The Installation Manager cannot be started.The registry information does not exist or does not match with this executable.This may happen if you are trying to run Installation Manager installed by another user.


However, when I then tried to run IIM as wasadmin: -

$ /opt/IBM/InstallationManager/eclipse/IBMIM -version -nosplash -silent

I got this: -

(IBMIM:18310): GLib-GObject-WARNING **: invalid (NULL) pointer instance
(IBMIM:18310): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
(IBMIM:18310): Gtk-CRITICAL **: gtk_settings_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
(IBMIM:18310): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed
(IBMIM:18310): GLib-GObject-WARNING **: value "TRUE" of type `gboolean' is invalid or out of range for property `visible' of type `gboolean'
(IBMIM:18310): Gtk-CRITICAL **: gtk_settings_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
(IBMIM:18310): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed
(IBMIM:18310): Gtk-WARNING **: Screen for GtkWindow not set; you must always set a screen for a GtkWindow before using the window
(IBMIM:18310): Gdk-CRITICAL **: gdk_pango_context_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
(IBMIM:18310): Pango-CRITICAL **: pango_context_set_font_description: assertion `context != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_context_set_base_dir: assertion `context != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_context_set_language: assertion `context != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_new: assertion `context != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_set_text: assertion `layout != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_set_attributes: assertion `layout != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_set_alignment: assertion `layout != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_set_ellipsize: assertion `PANGO_IS_LAYOUT (layout)' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_set_single_paragraph_mode: assertion `PANGO_IS_LAYOUT (layout)' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_set_width: assertion `layout != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_get_extents: assertion `layout != NULL' failed
(IBMIM:18310): Gtk-CRITICAL **: gtk_icon_theme_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
(IBMIM:18310): Gtk-CRITICAL **: gtk_settings_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
(IBMIM:18310): Gtk-CRITICAL **: gtk_icon_size_lookup_for_settings: assertion `GTK_IS_SETTINGS (settings)' failed
(IBMIM:18310): Gtk-WARNING **: Invalid icon size 6

(IBMIM:18310): Gtk-CRITICAL **: gtk_icon_theme_load_icon: assertion `GTK_IS_ICON_THEME (icon_theme)' failed
(IBMIM:18310): Gtk-WARNING **: Error loading theme icon 'gtk-dialog-error' for stock: 
(IBMIM:18310): Gtk-CRITICAL **: gtk_icon_size_lookup_for_settings: assertion `GTK_IS_SETTINGS (settings)' failed
(IBMIM:18310): Gtk-WARNING **: gtkstyle.c:2318: invalid icon size '6'
(IBMIM:18310): Gtk-CRITICAL **: gtk_style_render_icon: assertion `pixbuf != NULL' failed
(IBMIM:18310): GLib-GObject-CRITICAL **: g_object_ref: assertion `G_IS_OBJECT (object)' failed
(IBMIM:18310): Gdk-CRITICAL **: gdk_pango_context_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
(IBMIM:18310): Pango-CRITICAL **: pango_context_set_font_description: assertion `context != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_context_set_base_dir: assertion `context != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_context_set_language: assertion `context != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_new: assertion `context != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_set_text: assertion `layout != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_get_attributes: assertion `PANGO_IS_LAYOUT (layout)' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_set_alignment: assertion `layout != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_set_ellipsize: assertion `PANGO_IS_LAYOUT (layout)' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_set_single_paragraph_mode: assertion `PANGO_IS_LAYOUT (layout)' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_set_wrap: assertion `PANGO_IS_LAYOUT (layout)' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_set_width: assertion `layout != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_get_extents: assertion `layout != NULL' failed
(IBMIM:18310): Gdk-CRITICAL **: gdk_pango_context_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
(IBMIM:18310): Pango-CRITICAL **: pango_context_set_font_description: assertion `context != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_context_set_base_dir: assertion `context != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_context_set_language: assertion `context != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_new: assertion `context != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_set_text: assertion `layout != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_get_extents: assertion `layout != NULL' failed
(IBMIM:18310): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
(IBMIM:18310): Gdk-CRITICAL **: gdk_screen_get_width: assertion `GDK_IS_SCREEN (screen)' failed
(IBMIM:18310): Gdk-CRITICAL **: gdk_screen_get_width: assertion `GDK_IS_SCREEN (screen)' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_set_width: assertion `layout != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_get_extents: assertion `layout != NULL' failed
(IBMIM:18310): Pango-CRITICAL **: pango_layout_get_line_count: assertion `layout != NULL' failed


I thought this might be a permissions issue as, having run IIM as root, I'd locked out certain crucial files, thus preventing wasadmin from accessing them.

I validated this as follows: -

$ /opt/IBM/InstallationManager/eclipse/tools/imcl -version -silent -nosplash

which returned: -

Invalid Configuration Location:
Locking is not possible in the directory "/opt/IBM/InstallationManager/eclipse/configuration/org.eclipse.osgi". A common reason is that the file system or Runtime Environment does not support file locking for that location. Please choose a different location, or disable file locking passing "-Dosgi.locking=none" as a VM argument. 
/opt/IBM/InstallationManager/eclipse/configuration/org.eclipse.osgi/.manager/.fileTableLock (Permission denied)

When I checked that file: -

$ ls -al /opt/IBM/InstallationManager/eclipse/configuration/org.eclipse.osgi/.manager/.fileTableLock 

I saw this: -

-rw-r--r-- 1 rootroot 0 Jan 25 09:29 /opt/IBM/InstallationManager/eclipse/configuration/org.eclipse.osgi/.manager/.fileTableLock

The same was true of other files in the same location: -

ls -al /opt/IBM/InstallationManager/eclipse/configuration/org.eclipse.osgi

total 552
drwxr-xr-x 3 root     root        4096 Jan 25 09:29 .
drwxr-xr-x 6 wasadmin wasadmins   4096 Jan 25 10:02 ..
-rw-r--r-- 1 root     root      201051 Jan 25 09:29 .bundledata.1
-rw-r--r-- 1 root     root      263559 Jan 25 09:29 .lazy.1
drwxr-xr-x 2 root     root        4096 Jan 25 09:29 .manager
-rw-r--r-- 1 root     root       81835 Jan 25 09:29 .state.1


$ ls -al /opt/IBM/InstallationManager/eclipse/configuration/

total 60
drwxr-xr-x  6 wasadmin wasadmins 4096 Jan 25 10:02 .
drwxr-xr-x 11 wasadmin wasadmins 4096 Jan 25 10:02 ..
-rw-r--r--  1 wasadmin wasadmins 4445 Jan 25 09:51 1359107496589.log
-rw-r--r--  1 wasadmin wasadmins 4355 Jan 25 09:53 1359107593225.log
-rw-r--r--  1 wasadmin wasadmins 4355 Jan 25 09:57 1359107865410.log
-rw-r--r--  1 wasadmin wasadmins 4369 Jan 25 10:02 1359108164852.log
-rw-r--r--  1 wasadmin wasadmins  759 Jan 24 17:24 config.ini
drwxr-xr-x  3 root     root      4096 Jan 25 09:29 org.eclipse.core.runtime
drwxr-xr-x  3 root     root      4096 Jan 25 09:29 org.eclipse.equinox.app
drwxr-xr-x  3 root     root      4096 Jan 25 09:29 org.eclipse.osgi
drwxr-xr-x  2 wasadmin wasadmins 4096 Jan 25 09:29 org.eclipse.update


Once I changed the permissions: -

$ chown -R wasadmin:wasadmins /opt/IBM/InstallationManager/

all was well: -

/opt/IBM/InstallationManager/eclipse/tools/imcl -version -silent -nosplash

Installation Manager (installed)
Version: 1.6.0
Internal Version: 1.6.0.20120831_1216

$ /opt/IBM/InstallationManager/eclipse/IBMIM -version -nosplash -silent

Installation Manager (installed)
Version: 1.6.0
Internal Version: 1.6.0.20120831_1216

Shiny :-)

Reducing the size of IBM installation media with the IBM Packaging Utility

$
0
0
This came up on Twitter earlier today: -
vanstaub
How and why I reduced the #WebSpherePortal installation media from 17GB to around 3GB https://t.co/13nxxcHa #ibmportal
25/01/2013 14:33
The author, Van Staub, has written a rather neat article on IBM developWorks - Reducing the size of IBM installation media with the IBM Packaging Utility - which is definitely worth a read: -

 Recently, I received an inquiry on reducing the size of the installation media for WebSphere Portal 8.  An administrator had downloaded ~17GB of installation media consisting of:

• IBM WebSphere Portal
• IBM WebSphere Application Server ND
• IBM WAS Supplements
• IBM WAS FP005
• IBM WAS FP005 Supplements

 This was simply too much data to transmit or maintain as they conducted installations in the field.  So I created the user story below and sought a way to reduce the installation media's size as much as possible.

Check it out, it's worth your time AND disk space :-)

WSVR0016W for pdq.jar and pdqmgmr.jar during creation of an IBM BPM Advanced 8.0.1 Deployment Manager profile

$
0
0
I am using IBM Business Process Manager Advanced 8.0.1 on Red Hat Enterprise Linux 6.3 (x86-64). During the installation, I have created a Deployment Manager ( Process Center ) profile using the following template: -

/opt/IBM/WebSphere/AppServer/profileTemplates/BPM/dmgr.procctr.adv

During the start-up of the DMGR profile, I see the following two exceptions: -

[29/01/13 12:57:10:993 GMT] 00000000 ResourceMgrIm W   WSVR0016W: Classpath entry, ${PUREQUERY_PATH}/pdq.jar, in Resource, DB2 Using IBM JCC Driver (XA), located at /opt/IBM/WebSphere/AppServer/profiles/PCDMProfile/config/cells/PCCELL/resources.xml has an invalid variable
[29/01/13 12:57:10:998 GMT] 00000000 ResourceMgrIm W   WSVR0016W: Classpath entry, ${PUREQUERY_PATH}/pdqmgmt.jar, in Resource, DB2 Using IBM JCC Driver (XA), located at /opt/IBM/WebSphere/AppServer/profiles/PCDMProfile/config/cells/PCCELL/resources.xml has an invalid variable


These two JAR files - pdq.jar and pdqmgmr.jar - appear to relate to the IBM Optim pureQuery run-time.

As far as I am aware, this isn't something that IBM BPM Advanced 8.0.1 requires.

The two JARs are not installed with the underlying WebSphere Application Server Network Deployment 8.0.0.5 product, or with the IBM BPM Advanced 8.0.1 code.

This is what I have installed: -

$ /opt/IBM/InstallationManager/eclipse/tools/imcl listInstalledPackages

com.ibm.cic.agent_1.6.0.20120831_1216
com.ibm.websphere.IHS.v80_8.0.5.20121022_1902
com.ibm.bpm.ADV.V80_8.0.1000.20121102_2136
com.ibm.websphere.ND.v80_8.0.5.20121022_1902
com.ibm.websphere.PLG.v80_8.0.5.20121022_1902

If I remove the two JARs from the class path, either via the WAS Integrated Solutions Console, or via a modification of: -

/opt/IBM/WebSphere/AppServer/profiles/PCDMProfile/config/cells/PCCELL/resources.xml

...
    <classpath>${PUREQUERY_PATH}/pdq.jar</classpath>
    <classpath>${PUREQUERY_PATH}/pdqmgmt.jar</classpath>
...

the exceptions do not occur.

I've raised a PMR, and we'll see what happens :-)

IBM Business Process Manager Advanced 8.0.1 - Database Schemas for the Service Integration bus Messaging Engines

$
0
0
Just writing this down for future reference.

Whilst in BPM Standard, we only have two schemas ( schemae ? ) for the SIbus Messaging Engines - - with Advanced, we have a few more: -

Schema CMNBM00

JNDI Name of JDBC Data Sourcejdbc/com.ibm.ws.sib/PCSR01.Messaging-BPC.PCCELL.Bus
JDBC Data SourceBusiness Process Choreographer ME data source 
DatabaseCMNDB

Schema CMNCM00

JNDI Name of JDBC Data Sourcejdbc/com.ibm.ws.sib/PCSR01.Messaging-CEI.PCCELL.BUS
JDBC Data SourceCEI ME data source 
DatabaseCMNDB

Schema CMNPE00

JNDI Name of JDBC Data Sourcejdbc/com.ibm.ws.sib/twperfsvr_bus
JDBC Data SourcePerformance Data Warehouse ME data source
DatabaseCMNDB

Schema CMNPS00

JNDI Name of JDBC Data Sourcejdbc/com.ibm.ws.sib/twprocsvr_bus
JDBC Data SourceProcess Server ME data source 
DatabaseCMNDB

Schema CMNSA00

JNDI Name of JDBC Data Sourcejdbc/com.ibm.ws.sib/PCSR01.Messaging-SCA.APPLICATION.PCCELL.Bus
JDBC Data SourceSCA Application Bus ME data source 
DatabaseCMNDB

Schema CMNSS00

JNDI Name of JDBC Data Sourcejdbc/com.ibm.ws.sib/PCSR01.Messaging-SCA.SYSTEM.PCCELL.Bus
JDBC Data SourceSCA System Bus ME data source
DatabaseCMNDB

The SQL scripts required to create these six schemas can be generated using the sibDDLGenerator.sh script, as follows: -

$ cd /opt/IBM/WebSphere/AppServer/profiles/PCDMProfile/bin/sibDDLGenerator.sh
$ ./sibDDLGenerator.sh -system db2 -version 9.7 -platform unix -schema CMNBM00 >> ~/createBPM801Schemas.sql -statementend ";"
$ ./sibDDLGenerator.sh -system db2 -version 9.7 -platform unix -schema CMNCM00 >> ~/createBPM801Schemas.sql -statementend ";"
$ ./sibDDLGenerator.sh -system db2 -version 9.7 -platform unix -schema CMNPE00 >> ~/createBPM801Schemas.sql -statementend ";"
$ ./sibDDLGenerator.sh -system db2 -version 9.7 -platform unix -schema CMNPS00 >> ~/createBPM801Schemas.sql -statementend ";"
$ ./sibDDLGenerator.sh -system db2 -version 9.7 -platform unix -schema CMNSA00 >> ~/createBPM801Schemas.sql -statementend ";"
$ ./sibDDLGenerator.sh -system db2 -version 9.7 -platform unix -schema CMNSS00 >> ~/createBPM801Schemas.sql -statementend ";"

IBM Business Process Manager Advanced 8.0.1 - Bootstrapping not …. strapping ?

$
0
0
I saw this earlier: -

INFO:Error creating bean with name 'ejbCore.RepositoryServicesCore' defined in class path resource [registry.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.lombardisoftware.server.ejb.repositoryservices.RepositoryServicesCore]: Constructor threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ejbCore.PersistenceServicesCore' defined in class path resource [registry.xml]: Cannot resolve reference to bean 'handlersMap' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'handlersMap': Cannot create inner bean 'com.lombardisoftware.server.ejb.persistence.PSDefaultHandler#675fd7ca' of type [com.lombardisoftware.server.ejb.persistence.PSDefaultHandler] while setting bean property 'sourceMap' with key [TypedStringValue: value [Task], target type [null]]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.lombardisoftware.server.ejb.persistence.PSDefaultHandler#675fd7ca#1' defined in class path resource [registry.persistence.xml]: Cannot resolve reference to bean 'dao.task' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dao.task' defined in class path resource [registry.persistence.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: com.lombardisoftware.server.ejb.persistence.dao.TaskDAO (initialization failure)
SEVERE:


in: -

/opt/IBM/WebSphere/AppServer/profiles/PCDMProfile/logs/bootstrapProcesServerData.PCSR01.AppTarget.Tue-Jan-29-14.26.29-2013.log 

using the bootstrapProcessServerData.sh command.

Now I know that this worked, as I'd done the same thing earlier.

I had to dig back through the console log for the session in which I was running the bootstrapProcessServerData command, and found: -

Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.lombardisoftware.bpd.runtime.engine.message.DefaultMessageRoutingCache]: Constructor threw exception; nested exception is org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [select propvalue from lsw_system where propkey=?]; nested exception is com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DB2INST1.LSW_SYSTEM, DRIVER=4.11.69

At this point, I realised that ( DOH! ), I hadn't actually created the relevant DB2 database tables - DB2INST1.LSW_SYSTEM etc.

I quickly resolved this by executing: -

db2 -tvf /opt/IBM/WebSphere/AppServer/profiles/PCDMProfile/dbscripts/ProcessServer/DB2/BPMDB/createTable_ProcessServer.sql 

and: -

The bootstrapping of data completed.....
'BootstrapProcessServerData admin command completed.....'

What was annoying is that there was no obvious mention of the issue in any of the WAS logs e.g. /opt/IBM/WebSphere/AppServer/profiles/PCDMProfile/logs/opt/IBM/WebSphere/AppServer/profiles/PCDMProfile/ffdc etc.

IBM Process Designer - Not playing nicely with IBM Process Center ( BPM Advanced 8.0.1 )

$
0
0
I've seen this a few times now, and wanted to get my initial thoughts down on "paper".

As part of an IBM Business Process Manager Advanced 8.0.1 installation, there's normally a requirement to use the IBM Process Designer (IPD) developer client to create and deploy processes up to the Process Center server.

BPM makes this even easier by including a link to the Process Designer tool from the Process Center page: -



One thing that has been bugging me is that the downloaded Process Designer bundle: -

-rw-r--r--@  1 hayd  staff   423M 30 Jan 09:41 IBM Process Designer.zip

( which includes Eclipse )

doesn't seem to automagically connect to the right Process Center URL.

Once one expands the downloaded ZIP file, there's a configuration file - eclipse.ini e.g. /Users/hayd/Downloads/IBM Process Designer/eclipse.ini which contains the following line: -

-install
file:.
-configuration
configuration
-name
IBM BPM
-consoleLog
-dir
ltr
-clean
-vm
./AppClient/java/jre/bin/javaw.exe
-vmargs
-Xms128m
-Xmx512m
-XX:PermSize=128m
-XX:MaxPermSize=128m
-Djavax.net.ssl.keyStoreType=PKCS12
-Djavax.net.ssl.keyStore=./etc/key.p12
-Djavax.net.ssl.keyStorePassword=WebAS
-Djavax.net.ssl.trustStoreType=PKCS12
-Djavax.net.ssl.trustStore=./etc/trust.p12
-Djavax.net.ssl.trustStorePassword=WebAS
-Dcom.ibm.CORBA.ConfigURL="file:resources/sas.client.props"
-Dcom.ibm.CORBA.FragmentSize="0"
-Dcom.ibm.SSL.ConfigURL="file:resources/ssl.client.props"
-Djava.security.auth.login.config="file:resources/wsjaas_client.conf"
-Djava.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory
-Dcom.ibm.bpm.processcenter.url=https://bpmpc.uk.ibm.com:8443
-Djava.ext.dirs="./AppClient/java/jre/lib/ext;./AppClient/lib;./AppClient/plugins"
-Dcom.lombardisoftware.core.TWEnvironment.environmentName=AUTHORING_ENVIRONMENT
-DentityExpansionLimit=2147483647


which looks good.

However, upon startup, IPD was still trying to connect to the wrong port with the wrong protocol during the authentication process.

Using the above example, IPD would try and authenticate against: -


rather than: -


Talking with a learned colleague in Germany, it looks like IPD is making a request to the Process Center on the right URL - bpmpc.uk.ibm.com:8443 - *BUT* is then retrieving the wrong bootstrap host/port combination: -

the initial call is to /repo, which will respond with the server's bootstrap address, which then will be used for EJB and JMS communication.
It that bootstrap address contained an unresolvable host name, you'd see the described behaviour.


He also directed me to a new ( to me ) configuration file: -

/opt/IBM/WebSphere/AppServer/profiles/PCDMProfile/config/cells/PCCELL/nodes/PCNODE1/servers/PCSR011.AppTarget/process-center/TeamWorksConfiguration.running.xml

which contains a whole slew of WRONG host/port combinations: -

    <images-prefix>http://rhel6.uk.ibm.com:9080/teamworks</images-prefix>
    <portal-prefix>http://rhel6.uk.ibm.com:9080/portal</portal-prefix>
    <repository-prefix>http://rhel6.uk.ibm.com:9080/ProcessCenter</repository-prefix>
    <servlet-prefix>http://rhel6.uk.ibm.com:9080/teamworks</servlet-prefix>
    <webapi-prefix>http://rhel6.uk.ibm.com:9080/webapi</webapi-prefix>
      <base-url>http://rhel6.uk.ibm.com:9080/teamworks/webservices</base-url>
TeamWorks Link:  http://rhel6.uk.ibm.com:9080/portal/jsp/getProcessDetails.do?bpdInstanceId=<#= tw.system.process.instanceId #>
    <portal-prefix>http://rhel6.uk.ibm.com:9080/portal</portal-prefix>
    <process-admin-prefix>http://rhel6.uk.ibm.com:9080/ProcessAdmin</process-admin-prefix>
    <teamworks-webapp-prefix>http://rhel6.uk.ibm.com:9080/teamworks</teamworks-webapp-prefix>
      <default-namespace-uri>http://rhel6.uk.ibm.com:9080/schema/</default-namespace-uri>
    <coach-designer-xsl-url>http://rhel6.uk.ibm.com:9080/teamworks/coachdesigner/transform/CoachDesigner.xsl</coach-designer-xsl-url>
      <provider-url>corbaname:iiop:rhel6.uk.ibm.com:2810</provider-url>
    <jndi-url>corbaname:iiop:rhel6.uk.ibm.com:2810</jndi-url>
        <url>jdbc:db2://rhel6.uk.ibm.com:50000/BPMDB</url>
        <client-link>http://rhel6.uk.ibm.com:9080/teamworks</client-link>
    <repository-server-url>http://rhel6.uk.ibm.com:9080/ProcessCenter</repository-server-url>
    <server-host>rhel6.uk.ibm.com</server-host>
      <env key="java.naming.provider.url" value="corbaname:iiop:rhel6.uk.ibm.com:2810" />

I've yet to find out if I can automagically update this file during the installation and configuration phase BUT at least I know where to look.

Meantime, here's some required reading: -



*UPDATE* Reading the last link, it looks like TeamWorksConfiguration.running.xml gets its configuration from 99Local.xml and 100Custom.xml, so that's the first place I'm going to look :-)

*UPDATE AGAIN*

Thanks to some help from my mate, Bob, it's now working OK.

It's all down to 100Custom.xml AND the need to perform a FULL resynchronization of the cell configuration.

This is the DM Profile cell/node/server copy: -

-rw-r--r-- 1 wasadmin wasadmins 3880 Jan 29 16:09 /opt/IBM/WebSphere/AppServer/profiles/PCDMProfile/config/cells/PCCELL/nodes/PCNODE1/servers/PCSR011.AppTarget/process-center/config/100Custom.xml

and this is the Node Profile cell/node/server copy: -

-rw-r--r-- 1 wasadmin wasadmins 2757 Jan 29 13:52 /opt/IBM/WebSphere/AppServer/profiles/PCN1Profile/config/cells/PCCELL/nodes/PCNODE1/servers/PCSR011.AppTarget/process-center/config/100Custom.xml
I did a full resynch. and this is what I now have: -

-rw-r--r-- 1 wasadmin wasadmins 3880 Jan 29 16:09 /opt/IBM/WebSphere/AppServer/profiles/PCN1Profile/config/cells/PCCELL/nodes/PCNODE1/servers/PCSR011.AppTarget/process-center/config/100Custom.xml

So the full resynch. was the missing link :-)

After restarting the AppTarget cluster, I'm now seeing that the Node Profile copy of TeamWorksConfiguration.running.xml is getting updated: -

-rw-r--r-- 1 wasadmin wasadmins 373599 Jan 30 17:13 /opt/IBM/WebSphere/AppServer/profiles/PCN1Profile/config/cells/PCCELL/nodes/PCNODE1/servers/PCSR011.AppTarget/process-center/TeamWorksConfiguration.running.xml

and it's got the correct entries from 100Custom.xml: -

...
    https://bpm801.uk.ibm.com:8443/teamworks
    https://bpm801.uk.ibm.com:8443/portal
    https://bpm801.uk.ibm.com:8443/ProcessCenter
    https://bpm801.uk.ibm.com:8443/teamworks
    true
    https://bpm801.uk.ibm.com:8443/webapi

...

Now to download a new copy of Process Designer, and see whether it connects OK.

Viewing all 1851 articles
Browse latest View live


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