Friday 28 February 2014

Hmmm, Mac OS X, one problem fixed, another one pops up ?

So, a few days ago, I posted this: -


about a problem that I was seeing with kernel_task taking >80% CPU on my Mac, whilst running OS X 10.9.1.

For me, quitting iTunes appeared to resolve the problem.

Then, earlier this week, Apple released OS X 10.9.2 to resolve a problem with the so-called Goto Fail bug.

This was also supposed to resolve the problem with kernel_task, and, I must admit, I've not seen that since.

However, I have seen a few issues with the Mac failing to properly resume from suspend ( in other words, wake up when I open the lid ).

Well, the Mac Crash Reporter did pop up earlier today, with this: -

Date/Time:       2014-02-28 06:18:01 +0000
OS Version:      10.9.2 (Build 13C64)
Architecture:    x86_64
Report Version:  18

Event:           Sleep Wake Failure
Steps:           0

Hardware model:  MacBookPro10,1
Active cpus:     8

================================================================
Code: 0x13006c00�                                                                                  
Model: MacBookPro10,1, BootROM MBP101.00EE.B02, 4 processors, Intel Core i7, 2.3 GHz, 16 GB, SMC 2.3f36
Graphics: Intel HD Graphics 4000, Intel HD Graphics 4000, Built-In, 1024 MB
Graphics: NVIDIA GeForce GT 650M, NVIDIA GeForce GT 650M, PCIe, 1024 MB
Memory Module: BANK 0/DIMM0, 8 GB, DDR3, 1600 MHz, 0x80AD, 0x484D5434314753364D465238432D50422020
Memory Module: BANK 1/DIMM0, 8 GB, DDR3, 1600 MHz, 0x80AD, 0x484D5434314753364D465238432D50422020
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0xEF), Broadcom BCM43xx 1.0 (5.106.98.100.22)
Bluetooth: Version 4.2.3f10 13477, 3 services, 15 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
Serial ATA Device: APPLE SSD SM256E, 251 GB
USB Device: Hub
USB Device: FaceTime HD Camera (Built-in)
USB Device: Hub
USB Device: Hub
USB Device: Apple Internal Keyboard / Trackpad
USB Device: BRCM20702 Hub
USB Device: Bluetooth USB Host Controller
Thunderbolt Bus: MacBook Pro, Apple Inc., 23.4


This came up after I'd had to power on the Mac, as it was failing to awaken ( I didn't try and kiss it; perhaps I should've done so ?? )

I've sent the report off to Apple, let's see what happens :-)

IBM PureApplication System - IBM Connections in The Cloud

So I'm busy learning IPAS this week, getting to grips with the tools necessary to build private/hybrid clouds and also enable Developer Operations (DevOps), providing automation at all levels, from infrastructure build and operations through to development artefact automated deployment through environments.

One thing that I've seen that brings my old ( IBM Software Services for Collaboration ) and new ( IBM Software Services for WebSphere ) worlds together is this: -


IBM Connections Hypervisor Edition 4.0 supports deployment of IBM Connections 4.0 virtual images into virtualized environments. 

• Includes IBM Connections 4.0 and the Red Hat Enterprise Linux Server operating system as a system pattern for use with IBM PureApplication System
• Can be distributed to easily deploy and manage social business solutions in a private cloud
• Helps reduce installation and configuration time to rapidly deploy social business solutions

Using IBM Connections Hypervisor Edition 4 enables better utilization of hardware and faster response to demands for newly deployed systems. This can help to reduce both hardware and software operation costs, and maintenance costs. By deploying virtual images, businesses can also ensure that systems are built with a known, stable, and tested configuration, reducing the potential for errors and ensuring rapid deployment of a working system, whether for development, test, or production. 


Shiny :-)

It's also worth noting this as well: -


IBM Web Experience Patterns for WebSphere Portal Server provides preinstalled, preconfigured images of IBM WebSphere Portal Server V8.0.0.1 to automate provisioning of web experience solutions in a private cloud. 
                                                                                                                                                  
• Optimized to run on top of a hypervisor, including the ones in the PureApplication System to drive better utilization of hardware and faster response to demands for web experience systems, reducing deployment time from months or weeks to minutes.
• Includes new WebSphere Portal and Web Content Manager patterns and script packages based on expert practices, including single server and multiserver clustered deployments that can further automate setup of simple to complex web experience deployments.
                                                                                                          
• New social software  patterns automate integration and provisioning of WebSphere Portal with IBM Connections Files and Profiles.
• Enables rapid setup and use of fixpacks and solution updates to Web Experience Patterns for WebSphere Portal solutions.
• IBM Web Experience Patterns for WebSphere Portal Server Hypervisor Edition is charged using a Processor Value Unit metric


Another in the list of things I did not know - IBM Installation Manager has a console mode :-)

Yes, that's right, if you really need to do stuff with IM and don't (yet) have a response file, this is a good way to get into IIM without needing a GUI.

For me, this is useful because my VM is on an IBM PureApplication System (IPAS) half-way across the world, and I'm on a slow ADSL connection.

This is how you start it: -

$ /opt/IBM/BPM/InstallationManager/eclipse/tools/imcl -consoleMode

and this is what you see: -

=====> IBM Installation Manager

Select:
     1. Install - Install software packages
     2. Update - Find and install updates and fixes to installed software packages
     3. Modify - Change installed software packages
     4. Roll Back - Revert to an earlier version of installed software packages
     5. Uninstall - Remove installed software packages

Other Options:
     L. View Logs
     S. View Installation History
     V. View Installed Packages
        ------------------------
     P. Preferences
        ------------------------
     A. About IBM Installation Manager
        ------------------------
     X. Exit Installation Manager

——> 


I specifically wanted to see which repositories IIM "knew" about, so I jumped into Preferences ( with a P, Bob ): -

=====> IBM Installation Manager> Preferences

Select:
     1. Repositories
     2. Appearance
     3. Files for Rollback
     4. SSL/TLS
     5. HTTP/FTP Proxy
     6. Passport Advantage
     7. Updates

     R. Return to Main Menu
-----> [1] 


I chose option 1 to access Repositories, and this is what I get: -

=====> IBM Installation Manager> Preferences> Repositories

Repositories:
     1. [X] /opt/IBM/BPM/imageCreation/extract/repository/repos_64bit

Other Options:
     D. Add Repository

     S. [X] Search service repositories during installation and updates

     R. Restore Defaults
     A. Apply Changes and Return to Preferences Menu
     P. Temporarily Keep Changes and Return to Preferences Menu


which gives me the answer I wanted: -

/opt/IBM/BPM/imageCreation/extract/repository/repos_64bit

Nice :-)

It's also worth noting that I can use this to record response files: -

$ /opt/IBM/BPM/InstallationManager/eclipse/tools/imcl -consoleMode -record /tmp/foo.rsp

I did not actually install anything, but here's my response file: -

$ ls -al /tmp/foo.rsp 

-rw-r--r-- 1 root root 1543 Feb 28 10:03 /tmp/foo.rsp

$ cat /tmp/foo.rsp 

<?xml version="1.0" encoding="UTF-8"?>
<agent-input>
<preference name='com.ibm.cic.common.core.preferences.eclipseCache' value='/opt/IBM/BPM/BPM_Shared'/>
<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='true'/>
<preference name='com.ibm.cic.common.core.preferences.import.enabled' value='true'/>
<preference name='com.ibm.cic.agent.ui.displayInternalVersion' value='false'/>
<preference name='com.ibm.cic.common.sharedUI.showErrorLog' value='true'/>
<preference name='com.ibm.cic.common.sharedUI.showWarningLog' value='true'/>
<preference name='com.ibm.cic.common.sharedUI.showNoteLog' value='true'/>
</agent-input>






Using Oracle Database File System for disaster recovery on IBM Business Process Manager

This is interesting: -

Because business process management plays a very important role in an enterprise architecture, it's critical to make sure that BPM is an integral part of any enterprise disaster recovery plan. This article introduces a disaster recovery strategy for customers who are using Oracle® Data Guard for disaster recovery on existing systems and want to extend it to include IBM® Business Process Manager.


Note that this is NOT something I've tried, and I am not 1000% sure how it is supported by IBM. If in doubt, check …..

WebSphere Application Server: Storing transaction and compensation logs in a relational database for high availability

This has come up in discussions a number of times recently, including in the context of building out IBM Business Process Manager (BPM 8.5 on the cloud using IBM PureApplication System (IPAS).

One of my colleagues has used this approach at a number of clients.

It's something I've yet to configure, but it looks fairly straight forward :-)

You can, optionally, choose to store your WebSphere Application Server transaction and compensation logs in a relational database rather than as operating system files. This feature provides high availability (HA) support without having to use a shared file system.

The WebSphere Application Server transaction service writes information to a transaction log for every global transaction that involves two or more resources, or that is distributed across multiple servers. These transactions are started or stopped either by applications or by the container in which they are deployed. The transaction service maintains transaction logs to ensure the integrity of transactions. Information is written to the transaction logs in the prepare phase of a distributed transaction, so that if a Websphere Application Server with active transactions restarts after a failure, the transaction service is able to use the logs to replay any in-doubt transactions. The transaction service therefore enables the overall system to be brought back to a consistent state.

In previous releases of WebSphere Application Server, the transaction logs were stored as operating system files. In WebSphere Application Server Version 8.5.5, this remains the default configuration but you can, optionally, choose to store the transaction logs in a relational database. This configuration option is aimed at customers working in a high availability (HA) environment. In previous releases of WebSphere Application Server, HA transaction support required the use of a shared file system to host the transaction logs, such as an NFSv4-mounted network attached storage (NAS) or a storage area network (SAN). This new feature allows customers, particularly those with an investment in HA database technology, to use their HA database as a shared repository for the transaction logs, as an alternative to using a shared file system.

In WebSphere Application Server Version 8.5.5, you can use a similar facility, also aimed at customers working in a HA environment, to store the compensation recovery logs in a relational database. The WebSphere Application Server compensation service allows applications on disparate systems to coordinate activities that are more loosely coupled than atomic transactions. It stores information, in its own dedicated recovery logs, that is necessary to perform compensation after a system failure.

Thursday 27 February 2014

Executing external Python/Jython scripts from within WebSphere Application Server's wsadmin tool

One of my ISSW UK colleagues had asked how to invoke an externally located Python/Jython script from inside the wsadmin tool.

This is different from the normal method of starting wsadmin and directing it to load a file at startup e.g.

$ ./wsadmin.sh -lang jython -c 'AdminApp.list()'

This is subtly different - one is already in wsadmin and wants to go fetch / execute an external script.

Well, thanks to the IBM Connections 2.5 documentation (!), here it is: -

wsadmin>execfile("<$WAS_HOME>/profiles/<DMGR>/config/bin_lc_admin/blogsAdmin.py")

My colleague also pointed out that one can execute OS commands from within a Python shell e.g.

$ python

Python 2.6.6 (r266:84292, May 27 2013, 05:35:12) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> import os
>>> os.system("/bin/ls")
ConfigBPM.err   ConfigNetworkPort.err  ConfigPWD_USER.err  License.err
ConfigBPM.out   ConfigNetworkPort.out  ConfigPWD_USER.out  License.out
ConfigLocale.err  ConfigNTP.err  ConfigSSH.err      _nowait
ConfigLocale.out  ConfigNTP.out  ConfigSSH.out      ovf-env.ar
ConfigNET.1.err   ConfigPWD_ROOT.err  ConfigVNC.err      ovf-env.done
ConfigNET.1.out   ConfigPWD_ROOT.out  ConfigVNC.out


So, putting it all together, here's me executing an external Jython script from within wsadmin, where said Jython script gets a directory listing: -

$ /opt/IBM/BPM/v85/profiles/BPMPCDmgrNode/bin/wsadmin.sh -lang jython -user wasadmin -password password

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

wsadmin>execfile('/tmp/foobar.py')
Hello World!
Here comes the directory listing
Desktop
Documents
Downloads
Music
Pictures
Public
Templates
Videos
workspace


and here's the Python script: -

$ cat /tmp/foobar.py 
import sys;
import os;

print "Hello World!"

print "Here comes the directory listing"

os.system("/bin/ls")

Monty Jython's Scripting Circus

I found this from a former ISSW UK colleague, Andrew Simms, whilst lurking around the web looking for some Jython resources: -


Andrew presented it to the WebSphere User Group back in 2007.

As a Brit and a Python fan, I heartily approve of the humour used therein :-)

Wednesday 26 February 2014

IBM PureApplication System (IPAS) - More resources ....

The IBM PureApplication™ System is a platform system designed and tuned specifically for transactional web and database applications. This workload-aware, flexible platform is designed to be easy to deploy, customise, safeguard and manage. Whether you operate in a traditional or private cloud environment, this IBM solution can provide you with superior IT economics.

IPAS gives us a way to rapidly build out infrastructure stacks for solutions such as, for example, IBM Integration Bus, IBM Business Process Manager, IBM Business Monitor etc. using re-usable patterns.

IBM PureSystems Centre

Welcome to the IBM PureSystems Centre highlighting our first-ever family of integrated systems with built in expertise! On the PureSystems Centre, you can access patterns from IBM and IBM Business Partners, updates to systems and patterns, and expertise for maximizing the benefit of systems and patterns. PureSystems patterns are part of a broad portfolio of solutions that accelerate deployment and simplify management for cloud, business, and infrastructure applications.

PureApplication Service on SoftLayer Beta

Accelerate Development of New Enterprise Solutions for the Cloud with Codename BlueMix

Automatic scaling of virtual system pattern instances in IBM PureApplication System

A virtual system pattern is an IBM® PureApplication™ System deployment model that defines the cloud workload as a topology of middleware images. The virtual system pattern model supports only static scaling of virtual system pattern instance nodes. This article explains how to build a virtual application pattern that can implement automatic scaling of the virtual system pattern instance nodes. This technique leverages the virtual application pattern policy, the monitoring framework, and the Virtual System Pattern Clone API.


IBM PureApplication System (IPAS) - Virtual Doodahs

What is a virtual image?

Virtual images provide the operating system and product binary files that are required to create a virtual system instance. Your system comes with preinstalled virtual images that can be extended to customize the operating system and other properties.

What is a virtual system?

Virtual systems implement deployment topologies from one or more virtual images and applications from the system catalog. Your system comes with preinstalled virtual system patterns that can be customized for the topology and configuration of your environment.

What is a virtual application?

Virtual applications are application centric deployments that can be customized to define the various properties and the required quality of service levels. At deployment time, the system determines the infrastructure and middleware that are required to host the virtual application.

Source: IBM PureSystems Centre

Monday 24 February 2014

IBM PureApplication System - My first few hours ... and a command-line already :-)

Whilst attending an IBM PureApplication System (IPAS) training course, one of my colleagues showed me how to download and use the Command-Line Interface (CLI) to access the IPAS management application directly.

As you can see, I have downloaded and unpacked the downloaded ZIP file: -

-rw-r--r--@  1 hayd  staff   9498832 24 Feb 14:35 pure.cli-1.1.0.2.zip

here: -

/Users/hayd/Documents/Docs.ISSW/WebSphere/IPAS/pure.cli

IBM ship a Python-based client with the IPAS software, and kindly provide a Windows (!) batch file to start the Python scripts: -

$ pwd

/Users/hayd/Documents/Docs.ISSW/WebSphere/IPAS/pure.cli/bin

$ ls -al

total 32
drwxr-xr-x@ 7 hayd  staff  238 24 Feb 14:54 .
drwxrwxr-x@ 7 hayd  staff  238 24 Feb 14:50 ..
drwxr-xr-x@ 6 hayd  staff  204 12 Dec 18:40 1.1.0.2-201312121829625
-rwxr-xr-x@ 1 hayd  staff  951 12 Dec 18:40 pure
-rwxr-xr-x@ 1 hayd  staff  575 12 Dec 18:40 pure.bat
-rwxr-xr-x@ 1 hayd  staff  796 12 Dec 18:40 savePassword
-rwxr-xr-x@ 1 hayd  staff  365 12 Dec 18:40 savePassword.bat

Thankfully, there is also a way to start the Python client directly, without needing to resort to Windows :-) which helps with my Mac :-)

However, there is one more hurdle: -

$ ./pure -h ipas01.domain.com -u ipas_admin -p passw0rd

gives me: -

CWZCI0007E: An error occurred while communicating with the appliance at ipas01.domain.com

However, there is a Technote for that: -


<snip>
Local fix

Use the system IP address instead of the hostname in the command
line interface invocation.

Problem summary

A problem with the Java JDK 7  was being encountered when using
the hostname of the system while setting up the connection to
the system.
</snip>

If I instead start the CLI as follows: -

./pure -h 192.168.2.43 -u ipas_admin -p passw0rd

which works a trick: -

Welcome to the IBM PureApplication System CLI.  Enter 'help' if you
need help getting started.
>>> help
The CLI provides an interpreted Jython scripting
environment that enables you to manage the system from a
remote machine.

All of the interactive help information provided by the CLI is also
available at:

    http://publib.boulder.ibm.com/infocenter/psappsys/v1r0m0/index.jsp

The CLI assumes you have some familiarity with
version 2.5.1 of the Python language.  If not, there are many
sources of information available in both printed form and on
the web.

PS I did NOT find it necessary to escape special characters in my password, which is nice :-)

Friday 21 February 2014

Hmmm, kernel_task running hot on Mac OS X 10.9.1 Mavericks - SOLVED ??

I've seen this a few times over the past few weeks ( having upgrading to Mavericks around Christmas-time ).

I'm running 10.9.1 on a 2012 MacBook Pro with Retina Display.

The kernel_task process runs at > 80% CPU utilisation, often hitting 100%, similar to this: -


There're a LOT of hits on Google, relating to the vague symptoms of "kernel_task", high CPU, memory usage etc. including this one from the Apple discussion forums: -


The consensus is that it appears to be related to the audio subsystem in some way, with some people suggesting that the problem only occurs when one wakes the Mac from sleep with the iPhone "smart" headphones plugged in.

In my case, I'm not using wired headphones, as I'm streaming via Bluetooth from the iPhone 5S.

However, I did wonder whether iTunes 11.1.4 might be the villain of the piece - as soon as I exited the application, the kernel_task CPU utilisation dropped back to ~3%.

Interestingly, I've also had a fair number of "iTunes has failed, click here to send a message to Apple" messages ( yes, the precise text is slightly more meaningful than that !! ), when I've woken the MBP up from sleep.

Therefore, I'm wondering if the two may be related.

I'll post some feedback to Apple, and see what happens.

I'll also keep any future "iTunes has barfed" messages so that I can better inform Apple :-)

Wednesday 19 February 2014

Problem with BusinessSpace after IBM Business Monitor 8.0.1.0 to 8.0.1.2 upgrade

So this problem has parallels with an issue about which I blogged a year or so ago: -


albeit for IBM Business Monitor rather than IBM Business Process Manager.

This is what I see in Business Space: -


This is what I see in my logs: -

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/DepEnvBAM801.WebApp.AppSrv01Node.0/SystemOut.log

...
[18/02/14 15:28:23:529 GMT] 00000031 ControllerSer I com.ibm.mm.framework.rest.next.servlet.ControllerServlet logException A checked exception of type [com.ibm.mm.framework.rest.next.exception.LocalizedIOException] occurred during the resolution process, do not log the exception trace to avoid log file spamming. Enable trace logging for [com.ibm.mm.framework.rest.next.exception.ExceptionHelper=all] to log the exceptions. The exception message was: [404: Space not found.]
[18/02/14 15:28:24:000 GMT] 00000031 ControllerSer I com.ibm.mm.framework.rest.next.servlet.ControllerServlet logException A checked exception of type [com.ibm.wps.resolver.servlet.exceptions.SAXIOException] occurred during the resolution process, do not log the exception trace to avoid log file spamming. Enable trace logging for [com.ibm.mm.framework.rest.next.exception.ExceptionHelper=all] to log the exceptions. The exception message was: [400: Illegal character in authority at index 7: http://{com.ibm.bspace}mmServerRootId/widget-catalog/templateLayout.xml?pragma=cache&max-age=1209600&cache-scope=public&vary=none&user-context=false]

So, assuming that the root cause of the problem was the same as before, I thought I'd force BusinessSpace to reset it's templates/spaces/themes, as follows: -

Stop the cluster

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/stopServer.sh DepEnvBAM801.WebApp.AppSrv01Node.0

Change the oobLoadedStatus.properties file

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/BusinessSpace/DepEnvBAM801.WebApp/mm.runtime.prof/public/oobLoadedStatus.properties 

from: -

#Tue Feb 18 15:23:39 GMT 2014
importTemplates.txt=false
importSpaces.txt=false
importThemes.txt=false

to: -

#Tue Feb 18 15:23:39 GMT 2014
importTemplates.txt=true
importSpaces.txt=true
importThemes.txt=true

Start the cluster

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/startServer.sh DepEnvBAM801.WebApp.AppSrv01Node.0

Sadly the same problem with BS persists, BUT we're down to one exception: -

...
[18/02/14 16:12:50:011 GMT] 00000022 ControllerSer I com.ibm.mm.framework.rest.next.servlet.ControllerServlet logException A checked exception of type [com.ibm.wps.resolver.servlet.exceptions.SAXIOException] occurred during the resolution process, do not log the exception trace to avoid log file spamming. Enable trace logging for [com.ibm.mm.framework.rest.next.exception.ExceptionHelper=all] to log the exceptions. The exception message was: [400: Illegal character in authority at index 7: http://{com.ibm.bspace}mmServerRootId/widget-catalog/templateLayout.xml?pragma=cache&max-age=1209600&cache-scope=public&vary=none&user-context=false]

When I looked at the exception in more detail: -

The exception message was: [400: Illegal character in authority at index 7: http://{com.ibm.bspace}mmServerRootId/widget-catalog/templateLayout.xml?pragma=cache&max-age=1209600&cache-scope=public&vary=none&user-context=false]

I wondered if the problem MIGHT be with the REST endpoints, so I checked the REST configuration: -


That could definitely be the issue as port 8443 is an HTTPS port, whereas I have the protocol specified as HTTP.

Having changed the protocol to HTTPS I restarted the cluster again: -

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/stopServer.sh DepEnvBAM801.WebApp.AppSrv01Node.0
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/startServer.sh DepEnvBAM801.WebApp.AppSrv01Node.0

but to no avail :-(

I still the same spinny thing, and the same exception.

I again did the oobLoadedStatus.properties shuffle but again to no avail :-(

In order to double-check whether the problem was related to the front-end IBM HTTP Server (IHS) box, I also confirmed that I see the same issue when accessing BusinessSpace directly: -


Finally, I re-ran the process to upgrade the WebApp cluster: -

cd /opt/IBM/WebSphere/AppServer
./bin/ws_ant.sh -f util/BPMProfileUpgrade.ant -profileName AppSrv01 -Dupgrade=true -Dcluster=DepEnvBAM801.WebApp

but no change :-(

Sadly, I've NOT been able to work out WHY this is occurring.

Rather than spending yet more time on, I'm going to roll back to my last VMware snapshot, and then re-run the update process.

As a complete aside: -

I then checked the logs for the Support cluster, and found: -

com.ibm.ws.exception.RuntimeWarning: com.ibm.ws.webcontainer.exception.WebAppNotLoadedException: Failed to load webapp: Failed to load webapp: Context root /rest/bpm/events/* is already bound. Cannot start application EventEmitterREST

I have two applications: -


one of which is failing to start, both of which listen on the same context root - /rest/bpm/events.

That was the root (!) cause; the first application - IBM_BPM_EMITTER_SERVICE - should've had a context root of /unsupported. Once I changed that, the application started normally :-)

I suspect that was (l)user error - possibly something I mucked up during the upgrade :-(

**UPDATE 5 MARCH 2014**

So, thanks to some excellent support from IBM Support via a PMR, I managed to work out what I was doing wrong.

It was all down to the fact that I was attempting to run the cluster upgrade process against the AppSrv01 profile rather than the Dmgr01 profile.

That also explains why I thought that it was necessary to have the DM started in order for the cluster upgrade process to complete.

The commands to upgrade the clusters needed to be as follows: -

/opt/IBM/WebSphere/AppServer/bin/ws_ant.sh -f /opt/IBM/WebSphere/AppServer/util/BPMProfileUpgrade.ant -profileName Dmgr01 -Dupgrade=true -Dcluster=DepEnvBAM801.AppTarget

/opt/IBM/WebSphere/AppServer/bin/ws_ant.sh -f /opt/IBM/WebSphere/AppServer/util/BPMProfileUpgrade.ant -profileName Dmgr01 -Dupgrade=true -Dcluster=DepEnvBAM801.Support

/opt/IBM/WebSphere/AppServer/bin/ws_ant.sh -f /opt/IBM/WebSphere/AppServer/util/BPMProfileUpgrade.ant -profileName Dmgr01 -Dupgrade=true -Dcluster=DepEnvBAM801.Messaging

/opt/IBM/WebSphere/AppServer/bin/ws_ant.sh -f /opt/IBM/WebSphere/AppServer/util/BPMProfileUpgrade.ant -profileName Dmgr01 -Dupgrade=true -Dcluster=DepEnvBAM801.WebApp


Having run back through the 8.0.1.0 to 8.0.1.2 process, I no longer see the issue with Business Space, which is nice.

Lesson learned, thanks to IBM Support :-)

Monday 17 February 2014

Problems with IBM HTTP Server, WebSphere Plugin, WebSphere Application Server and Virtual Hosts

I was trying to resolve an issue whereby requests for Business Space ( part of IBM Business Monitor ) weren't being routed from IBM HTTP Server via the WebSphere Plugin to WebSphere Application Server

To find out what was going, I changed the error level in the Plugin configuration file: -

/opt/IBM/WebSphere/Plugins/config/webserver/config/webserver/plugin-cfg.xml

from: -

   <Log LogLevel="Error" Name="/opt/IBM/WebSphere/Plugins/logs/webserver/http_plugin.log"/>

to: -

   <Log LogLevel="Debug" Name="/opt/IBM/WebSphere/Plugins/logs/webserver/http_plugin.log"/>

and, having restarted IHS, I saw: -

...
[17/Feb/2014:16:45:00.08133] 00000899 cabcc700 - DEBUG: mod_was_ap22_http: as_child_init pid= 00000899
[17/Feb/2014:16:45:06.13870] 00000899 c4b2f700 - DEBUG: lib_util: parseHostHeader: Host: 'rhel6.uk.ibm.com', port 8443
[17/Feb/2014:16:45:06.13878] 00000899 c4b2f700 - DEBUG: ws_common: websphereCheckConfig: Current time is 1392655506, next stat time is 1392655560
[17/Feb/2014:16:45:06.13880] 00000899 c4b2f700 - DETAIL: ws_common: websphereShouldHandleRequest: trying to match a route for: vhost='rhel6.uk.ibm.com'; uri='/BusinessSpace'
[17/Feb/2014:16:45:06.13883] 00000899 c4b2f700 - DETAIL: ws_common: websphereShouldHandleRequest: No route found
[17/Feb/2014:16:45:06.13894] 00000899 c4b2f700 - DEBUG: mod_was_ap22_http: as_handler: In the app server handler
[17/Feb/2014:16:45:06.13929] 00000899 c4b2f700 - DEBUG: mod_was_ap22_http: in as_logger
[17/Feb/2014:16:45:07.09305] 000008bf cabcc700 - DEBUG: mod_was_ap22_http: as_child_init pid= 000008BF


in: -

/opt/IBM/WebSphere/Plugins/logs/webserver/http_plugin.log

Guess what the problem is ?

Yep, you've guessed it - I'd forgotten to add a Virtual Host entry for WAS for the required port - 8443.

I made, and saved, the change, synchronised the WAS nodes, restarted the appropriate JVM ( the WebApp cluster ), and voila, Business Space can now be accessed via IHS/Plugin: -



Ooops, GSK_ERROR_BAD_KEYFILE_PASSWORD seen with IBM HTTP Server and IBM WebSphere Plugin

So I'm seeing this in my IHS / Plugin installation, specifically here: -

/opt/IBM/WebSphere/Plugins/logs/webserver/http_plugin.log

...
[17/Feb/2014:16:22:39.07772] 00000597 0eaf7700 - ERROR: lib_security: logSSLError: str_security (gsk error 408):  GSK_ERROR_BAD_KEYFILE_PASSWORD
[17/Feb/2014:16:22:39.07775] 00000597 0eaf7700 - ERROR: lib_security: initializeSecurity: Failed to initialize GSK environment. Secure transports are not possible.
[17/Feb/2014:16:22:39.07775] 00000597 0eaf7700 - ERROR: ws_transport: transportInitializeSecurity: Failed to initialize security. Secure transports are not possible.
[17/Feb/2014:16:22:39.07778] 00000597 0eaf7700 - ERROR: ws_server: serverAddTransport: Failed to initialize security. Secure transports are not possible.
[17/Feb/2014:16:22:39.07779] 00000597 0eaf7700 - ERROR: ws_server: serverAddTransport: HTTPS Transport is skipped. IMPORTANT: If a HTTP transport is defined, it will be used for communication to the application server.
...

When I checked my plugin configuration: -

/opt/IBM/WebSphere/Plugins/config/webserver/plugin-cfg.xml

I could see: -

...
         <Transport Hostname="rhel6.uk.ibm.com" Port="9446" Protocol="https">
            <Property Name="keyring" Value="/opt/IBM/WebSphere/Plugins/config/webserver/plugin-key.kdb"/>
            <Property Name="stashfile" Value="/opt/IBM/WebSphere/Plugins/config/webserver/plugin-key.sth"/>
         </Transport>

...

Guess what ?

When I checked: -

/opt/IBM/WebSphere/Plugins/config/webserver

I don't have the plugin KDB or Stash files.

I'd neglected to propagate the KDB etc. from the cell to the IHS/Plugin box.

To achieve this, I clicked this button: -


with this effect: -


Now I have these files: -

plugin-cfg.xml
plugin-key.kdb
plugin-key.sth

here: -

/opt/IBM/WebSphere/Plugins/config/webserver

Thanks to this IBM Technote: -


for pointing me in the right direction.

Using LdapQuery to debug LDAP connection problems in WebSphere Application Server

Problem(Abstract)

How to use LdapQuery web application to debug LDAP configuration problems with IBM® WebSphere® Application Server

Resolving the problem

Use the ldapQuery web application utility to search the LDAP server.
This will allow you to quickly determine if the search is returning what you expect.
Once you have successfully queried the LDAP server, you may use the settings in IBM® WebSphere® Application Serve to enable security to the server.

Useful when:

• Configuring security using an LDAP server for the first time
• Currently using one LDAP server but want to test connections to another
• Planning to change from stand-alone LDAP to federated LDAP servers

IBM Business Process Manager 8.5 - More about BPMConfig

From the IBM Information Centre: -


The BPMConfig command is used to create or extend a typical network deployment environment. For example, it can also be used to create the database scripts and profiles, start and stop the deployment environment, and validate the deployment environment configuration.

Syntax

BPMConfig [-create | -update | -upgrade | -validate configurationFile | -start [configurationFile] | -stop [configurationFile] | -help [actionName]]


The BPMConfig command uses a properties file to configure your environment according to the settings that you specify. Your BPM installation includes several sample configurations files that are provided as a starting point for your configuration. These sample files are composed of common properties and settings for different IBM BPM environments. Before you begin your configuration, select a sample file that most closely resembles the configuration that you want, copy the file, and customize it to suit your own environment.

And this is what happened when I used BPMConfig to create my first Deployment Environment: -

/opt/IBM/WebSphere/AppServer/bin/BPMConfig.sh -create -de Advanced-PC-SingleCluster-DB2.properties

Logging to file /opt/IBM/WebSphere/AppServer/logs/config/BPMConfig_20140214-150812.log.
Validating the profile registry.
[]
Configuring the deployment manager.
The deployment manager profile already exists at /opt/IBM/WebSphere/AppServer/profiles/Dmgr01.
Starting deployment manager profile Dmgr01.
ADMU0116I: Tool information is being logged in file
/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/logs/dmgr/startServer.log
ADMU0128I: Starting tool with the Dmgr01 profile
ADMU3100I: Reading configuration for server: dmgr
ADMU3200I: Server launched. Waiting for initialization status.
ADMU3000I: Server dmgr open for e-business; process id is 21149
Configuring managed node profiles.
A managed node profile already exists at /opt/IBM/WebSphere/AppServer/profiles/AppSrv01.
Retrieving signers.
CWPKI0308I: Adding signer alias "CN=rhel6.uk.ibm.com, OU=Root Ce" to local
keystore "ClientDefaultTrustStore" with the following SHA digest:
FC:FF:4A:AD:1C:56:34:3F:C5:A8:0F:39:5E:06:6C:F9:54:CF:5B:33
Adding the node AppSrv01Node to the cell bpm85Cell.
ADMU0116I: Tool information is being logged in file
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/addNode.log
ADMU0128I: Starting tool with the AppSrv01 profile
CWPKI0309I: All signers from remote keystore already exist in local keystore.
ADMU0001I: Begin federation of node AppSrv01Node with Deployment Manager at
rhel6.uk.ibm.com:8879.
ADMU0009I: Successfully connected to Deployment Manager Server:
rhel6.uk.ibm.com:8879
ADMU0507I: No servers found in configuration under:
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/localhostNode01Cell/nodes/AppSrv01Node/servers
ADMU2010I: Stopping all server processes for node AppSrv01Node
ADMU0024I: Deleting the old backup directory.
ADMU0015I: Backing up the original cell repository.
ADMU0012I: Creating Node Agent configuration for node: AppSrv01Node
ADMU0014I: Adding node AppSrv01Node configuration to cell: bpm85Cell
ADMU0016I: Synchronizing configuration between node and cell.


ADMU0300I: The node AppSrv01Node was successfully added to the bpm85Cell cell.


ADMU0306I: Note:
ADMU0302I: Any cell-level documents from the standalone bpm85Cell configuration
have not been migrated to the new cell.
ADMU0307I: You might want to:
ADMU0303I: Update the configuration on the bpm85Cell Deployment Manager with
values from the old cell-level documents.


ADMU0306I: Note:
ADMU0304I: Because -includeapps was not specified, applications installed on
the standalone node were not installed on the new cell.
ADMU0307I: You might want to:
ADMU0305I: Install applications onto the bpm85Cell cell using wsadmin $AdminApp
or the Administrative Console.


ADMU0003I: Node AppSrv01Node has been successfully federated.
Generating SQL files.
Provisioning cell.
Generating database configuration files to /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/dbscripts/bpm85Cell.
Configuring the databases.
Configuring the cell.
Configuring the deployment manager.
Provisioning deployment environment.
Generating database configuration files to /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/dbscripts/De1.
Performing security configuration.
Creating clusters.
Configuring data sources.
Configuring the databases.
Configuring clusters.
Operation completed successfully
Provisioning managed node AppSrv01Node.
The HTTP and HTTPS ports are added to the virtual hosts list.
Configuring the node.
Creating cluster members.
3
importFile: /opt/IBM/WebSphere/AppServer/BPM/Lombardi/imports/system-toolkit.twx
deploy: false
latestSystemToolkit: true
activateSnapshot: false
importFile: /opt/IBM/WebSphere/AppServer/BPM/Lombardi/imports/system-coaches.twx
deploy: false
latestSystemToolkit: false
activateSnapshot: false
importFile: /opt/IBM/WebSphere/AppServer/BPM/Lombardi/imports/system-dashboards.twx
deploy: false
latestSystemToolkit: false
activateSnapshot: false
importFile: /opt/IBM/WebSphere/AppServer/BPM/Lombardi/imports/governance-toolkit.twx
deploy: false
latestSystemToolkit: false
activateSnapshot: false
importFile: /opt/IBM/WebSphere/AppServer/BPM/Lombardi/imports/content-integration-toolkit.twx
deploy: false
latestSystemToolkit: false
activateSnapshot: false
importFile: /opt/IBM/WebSphere/AppServer/BPM/Lombardi/imports/ssi4bpm-guided-workflow.twx
deploy: false
latestSystemToolkit: false
activateSnapshot: false
importFile: /opt/IBM/WebSphere/AppServer/BPM/Lombardi/imports/process-portal.twx
deploy: true
latestSystemToolkit: false
activateSnapshot: false
importFile: /opt/IBM/WebSphere/AppServer/BPM/Lombardi/imports/saved-search-admin.twx
deploy: true
latestSystemToolkit: false
activateSnapshot: false
importFile: /opt/IBM/WebSphere/AppServer/BPM/Lombardi/imports/standard-hiring-sample.twx
deploy: true
latestSystemToolkit: false
activateSnapshot: false
importFile: /opt/IBM/WebSphere/AppServer/BPM/Lombardi/imports/advanced-hiring-sample.twx
deploy: false
latestSystemToolkit: false
activateSnapshot: false
importFile: /opt/IBM/WebSphere/AppServer/BPM/Lombardi/imports/procurement-sample.twx
deploy: false
latestSystemToolkit: false
activateSnapshot: false
Configuring the REST services end points.
Saving configuration changes...
Synchronizing node AppSrv01Node.
ADMU0116I: Tool information is being logged in file
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/syncNode.log
ADMU0128I: Starting tool with the AppSrv01 profile
ADMU0401I: Begin syncNode operation for node AppSrv01Node with Deployment
Manager rhel6.uk.ibm.com: 8879
ADMU0016I: Synchronizing configuration between node and cell.
ADMU0402I: The configuration for node AppSrv01Node has been synchronized with
Deployment Manager rhel6.uk.ibm.com: 8879
Stopping deployment manager profile Dmgr01.
ADMU0116I: Tool information is being logged in file
/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/logs/dmgr/stopServer.log
ADMU0128I: Starting tool with the Dmgr01 profile
ADMU3100I: Reading configuration for server: dmgr
ADMU3201I: Server stop request issued. Waiting for stop status.
ADMU4000I: Server dmgr stop completed.

The 'BPMConfig.sh -create -de Advanced-PC-SingleCluster-DB2.properties' command completed successfully.

Friday 14 February 2014

Honor Harrington - Shares my Philosophy :-)

"....
Not to mention the fact that the only way someone really learned was by doing, and trying to clear all the obstacles out of someone's path didn't do her any favors, however it seemed at the time. At the very best, it cost them the chance to learn from mistakes. At worst, it simply postponed the time when they ran into a problem they didn't know how to handle . . . and left them fatally overconfident because they thought they did know.
..."

No, not my words, these are the words of David Weber in Ashes of Victory, one of his absolutely brilliant Honor Harrington series of novels, aka The HonorVerse. 

They're available from Baen Books, online from various locations including: -


Steve Gibson from GRC.com, author of Spinrite, designer of SQRL, and expert witness on the excellent Security Now podcast, has links to a number of the HonorVerse series here: -

"Honor Harrington" Complete 16-book series in one ZIP from my site: Kindle/mobi:  iTunes/ePub: 

IBM Business Process Manager 8.5 - If you build it, they will come ...

I'm going back throughout he process of building out an IBM BPM Advanced 8.5 environment, and am looking at the BPMConfig command for the very first time.

The last time I build 8.5, a few weeks back, I just followed the same process as I'd used for 8.0.1 and 7.5, namely: -
  • Install binaries and fixpacks
  • Create databases
  • Create DMgr profile
  • Create Node profile
  • Start DMgr
  • Create ( or import ) Deployment Environment
  • Set up SIbus DB schemas
  • Bootstrap databases
  • Start clusters
I'd also noticed that, with 8.5, the need to bootstrap the DBs appears to have gone, which is nice

However, it looks like, with 8.5, the BPMConfig command may enable me to short-cut the process further.

I'm just playing with it now, but it looks like, when I create my Deployment Environment using BPMConfig, I can also have the same command create my DM and Node profiles, although I imagine that my own process using manage profiles and response files perhaps provides more functionality for aspects such as SSL configuration etc.

I'm off for a play ….

However, in the meantime, here's what the experts say :-)




Thursday 13 February 2014

IBM Operational Decision Manager 8.5 - System Requirements

IBM Operational Decision Manager detailed system requirements




Why am I blogging this ?

Because I know I'll need it again and again and again

( and,yes, I've also got these bookmarked in Foxear - bookmarks from w3Connections sync'd back to my Firefox browsers )

IBM Operational Decision Manager 8.5 - Exception seen on first startup of Decision Server cluster

I've now seen this twice ( and, therefore, it is repeatable ) when I first start my Decision Server cluster - to be more specific, the cluster is automatically started by the build process, via this script: -

export ODM_HOME=/opt/IBM/ODM85/
/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/configureDSCluster.sh -dmgrAdminUsername wasadmin -dmgrAdminPassword passw0rd -clusterPropertiesFile ./configureDSCluster.properties -createNode -targetNodeName DecisionServerNode01 -dmgrHostName rhel6.uk.ibm.com -dmgrPort 8879

This is what I see in the SystemOut.log file: -

view /opt/IBM/WebSphere/AppServer/profiles/DecisionServerNode01/logs/DecisionServerNode01-DSServer/SystemOut.log

...
[13/02/14 13:06:48:807 GMT] 00000067 webapp E com.ibm.ws.webcontainer.webapp.WebApp logError SRVE0293E: [Servlet Error]-[Failed to load listener: ilog.rules.res.console.IlrServletContextListener]: java.lang.ClassNotFoundException: class java.lang.ClassNotFoundException: ilog.rules.res.console.IlrServletContextListener
...
[13/02/14 13:06:48:831 GMT] 00000067 webapp E com.ibm.ws.webcontainer.webapp.WebApp logError SRVE0293E: [Servlet Error]-[Failed to load listener: ilog.rules.jsf.listeners.IlrSessionManagerListener]: java.lang.ClassNotFoundException: class java.lang.ClassNotFoundException: ilog.rules.jsf.listeners.IlrSessionManagerListener
...
[13/02/14 13:06:53:164 GMT] 00000068 webapp E com.ibm.ws.webcontainer.webapp.WebApp logError SRVE0293E: [Servlet Error]-[Failed to load listener: com.ibm.rules.htds.servlet.DecisionServiceManager]: java.lang.ClassNotFoundException: class java.lang.ClassNotFoundException: com.ibm.rules.htds.servlet.DecisionServiceManager

I don't know precisely why it does this BUT the solution is simple :-)

Restart the cluster: -

$ /opt/IBM/WebSphere/AppServer/profiles/DecisionServerNode01/bin/stopServer.sh DecisionServerNode01-DSServer -user wasadmin -password password

ADMU0116I: Tool information is being logged in file
           /opt/IBM/WebSphere/AppServer/profiles/DecisionServerNode01/logs/DecisionServerNode01-DSServer/stopServer.log
ADMU0128I: Starting tool with the DecisionServerNode01 profile
ADMU3100I: Reading configuration for server: DecisionServerNode01-DSServer
ADMU3201I: Server stop request issued. Waiting for stop status.
ADMU4000I: Server DecisionServerNode01-DSServer stop completed.


$ /opt/IBM/WebSphere/AppServer/profiles/DecisionServerNode01/bin/startServer.sh DecisionServerNode01-DSServer

ADMU0116I: Tool information is being logged in file
           /opt/IBM/WebSphere/AppServer/profiles/DecisionServerNode01/logs/DecisionServerNode01-DSServer/startServer.log
ADMU0128I: Starting tool with the DecisionServerNode01 profile
ADMU3100I: Reading configuration for server: DecisionServerNode01-DSServer
ADMU3200I: Server launched. Waiting for initialization status.
ADMU3000I: Server DecisionServerNode01-DSServer open for e-business; process id
           is 61952

and all is well.

PS Love the scripting to cluster Decision Center and Decision Server, makes ODM builds far more fun :-)

Redbook - Configuring and Deploying Open Source with WebSphere Application Server Liberty Profile

Saw this via one of my Twitter correspondents: -

This IBM® Redbooks® publication explains the capabilities of WebSphere® Application Server Liberty profile, whereas, the product is extremely lightweight, easy to install, and very fast to use. It provides a convenient and capable platform for developing and testing your web and OSGi applications. The Liberty profile server is built using OSGi technology and concepts. The fit-for-purpose nature of the run time relies on the dynamic behavior inherent in the OSGi framework and service registry. As bundles are installed or uninstalled from the framework, their services are automatically added or removed from the service registry. The result is a dynamic, composable run time that can be provisioned with only what your application requires and responds dynamically to configuration changes as your application evolves.

This IBM Redbooks publication will help you install, tailor and configure several popular Open Source technologies that can be deployed effectively with the WebSphere Application Server Liberty profile. The following list represents a selection of popular open source toolkits for the Liberty profile server:
> Apache Maven
> Spring Framework
> Hibernate
> Jenkins
> Opscode Chef
> Arquillian
> MongoDB

Each product was selected based on the significant enhancements they provide to the web application development process.

In this IBM Redbooks publication the 'Todo' sample to is used to demonstrate the usage of multiple open source framework/toolkit with Liberty profile server including: Maven, MongoDB, Spring, JPA, Arquillian, Wicket, etc. The 'Todo' sample is a simple application, it can be used to create, update and delete todo items, todo lists, and put the todo items into related todo list.

Chapter 1 - WebSphere Application Server Liberty profile
Chapter 2 - Open Source Frameworks and Toolkit Selection
Chapter 3 – Implementing and testing backend services on Liberty profile server 
Chapter 4 - Continuous integration with Jenkins on Liberty
Chapter 5 - Front-end development on the Liberty profile server
Chapter 6 - Deploying Liberty profile server with Chef
Chapter 7 - Working with 3rd party tools (Apache ActiveMQ, Apache James) on Liberty profile server

Training Paths - IBM Integration Bus / IBM Business Process Manager / IBM Operational Decision Manager

As part of an exchange with a colleague re a high-level scoping document, I nabbed these training paths from the IBM website: -




*UPDATE 10 October 2015*

Those links have mostly changed, so here are the training paths for IIB, BPM and ODM accordingly: -

IBM Integration Bus training paths

IBM Business Process Manager training paths

IBM Operational Decision Manager training paths

Wednesday 12 February 2014

IBM Operational Decision Manager 8.5.1.0 - Problems with missing DB2 Buffer Pool

One about which I'd forgotten.

I saw this exception: -

Failed to execute SQL statement "CREATE TABLESPACE RESDWTS PAGESIZE 32K BUFFERPOOL BP32K".
DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=BP32K, DRIVER=3.65.97

when configuring the DB2 database for an IBM Operational Decision Manager (ODM) 8.5.1.0 Decision Server ( aka Rules Execution Server == RES ) environment.

ODM provides a nice GUI for configuration, and I got hit with this: -

 

I validated this on the DB2 server directly: -

$ db2 connect to resdb
$ db2 "CREATE TABLESPACE RESDWTS PAGESIZE 32K BUFFERPOOL BP32K"

DB21034E  The command was processed as an SQL statement because it was not a 
valid Command Line Processor command.  During SQL processing it returned:
SQL0204N  "BP32K" is an undefined name.  SQLSTATE=42704

Yes, you've guessed it - I'd forgotten to create the Buffer Pool BP32K.

This I did: -

$ db2 create bufferpool BP32K size 8000 pagesize 32 K

DB20000I  The SQL command completed successfully.

and re-ran the ODM wizard; this time it all ended happily :-)

"SECJ0371W: Validation of the LTPA token failed because the token expired with the following info..." - much more useful with WAS 8.5

I'm just getting to grips with WebSphere Application Server (WAS) 8.5.5.1 for the very first time, as part of my first IBM Operational Decision Manager (ODM) 8.5.1.0 delivery.

I just happen to note this WARNING in my SystemOut.log file: -

[12/02/14 18:17:58:817 GMT] 000000b1 LTPAServerObj W   SECJ0371W: Validation of the LTPA token failed because the token expired with the following info: Token expiration Date: Wed Feb 12 16:52:00 GMT 2014, current Date: Wed Feb 12 18:17:58 GMT 2014 Token attributes:  port=8880, username=user:defaultWIMFileBasedRealm/uid=rtsAdmin,o=defaultWIMFileBasedRealm, hostname=rhel6.uk.ibm.com.. This warning might indicate expected behavior. Please refer to technote at http://www-01.ibm.com/support/docview.wss?uid=swg21594981.

Now that is what I call a very useful warning - it's chock full o'detail, includes the details of the WAS port, username, hostname, clearly indicates that this MAY be expected behaviour, and then directs one to an IBM Technote: -


This is a great example of how to do it.

Thanks, WebSphere development team.

PS For the record, this is what I'm running: -

Name                  IBM WebSphere Application Server Network Deployment
Version               8.5.5.1
ID                    ND
Build Level           cf011341.03
Build Date            10/18/13
Package               com.ibm.websphere.ND.v85_8.5.5001.20131018_2242
Architecture          x86-64 (64 bit)
Installed Features    IBM 64-bit WebSphere SDK for Java
                      WebSphere Application Server Full Profile
                      EJBDeploy tool for pre-EJB 3.0 modules
                      Embeddable EJB container
                      Stand-alone thin clients and resource adapters

The WebSphere Contrarian: Options for accelerating application deployment

This from the uber-genius Tom Alcott: -

Looking for ways to speed up application deployment in IBM® WebSphere® Application Server? In this installment, The WebSphere Contrarian outlines how applications are deployed and offers options for accelerating the deployment process. This content is part of the IBM WebSphere Developer Technical Journal.

It's time for the holidays again, which means everyone is hurrying to finish up projects for the year, take care of shopping, and a variety of other traditional year-end tasks. All this activity likely means that you'd welcome any time saving tips, since you're probably dealing with too much to do and too little time to get it all done. In doing my part to improve your efficiency, I'll spend some time in this month's column offering some tips for speeding up application deployment in IBM WebSphere Application Server, which will also apply to products such as IBM WebSphere Portal, IBM Process Server, and others that are based on WebSphere Application Server.

IBM PureApplication System (IPAS) - Getting started

This year, I am starting to look at IPAS for, really, the first time.

Therefore, I'm building a list of things to read, and these two rather useful developerWorks articles popped into my focus, thanks to Twitter.


Part 1 of this article series teaches you how to develop plug-ins for virtual application patterns in IBM® Workload Deployer and IBM PureApplication™ Systems. The examples presented here are also applicable to IBM SmartCloud Application Workload Services. This article walks you through a simple example as it teaches you key concepts necessary to begin developing plug-ins and pattern types. This series complements the Navigating the IBM Cloud article series.


A virtual application pattern defines an abstract application model that is disconnected from the underlying topology. What if you want to enable your solution as a virtual application pattern, but it requires additional functionality not offered by the plug-ins in the existing pattern types? In this case, you need an extension to the out-of-the-box functionality. This second article of the series gives you a concrete, hands-on example on how to extend and customize an existing pattern type.

These are in addition to a previous blog post of mine: -

plus a number of other useful Redbooks ( on iOS, of course ) and developerWorks articles: -

Redbooks

Adopting IBM PureApplication System V1.0

Overview of IBM PureSystems

Platform as a Service with IBM PureApplication System

IBM PureApplication System Best Practices

Creating Composite Application Pattern Models for IBM PureApplication System

developerWorks

Preparing for IBM PureApplication System, Part 1: Onboarding applications overview

Preparing for IBM PureApplication System, Part 2: Is your application ready to become virtual?

Preparing for IBM PureApplication System, Part 3: Choosing a database option

Preparing for IBM PureApplication System, Part 4: Onboarding applications to the cloud using the Advanced Middleware Configuration tool V1.1

Preparing for IBM PureApplication System, Part 5: Developing virtual application patterns for IBM Workload Deployer with Rational Application Developer

Monday 10 February 2014

WAS - How to clear the WebSphere class caches

This is something for which I've not yet had a requirement, but one day, my son, one day :-)

Problem

Instructions on clearing the java class caches in IBM WebSphere Application Server. Both the JVM's shared class cache and WebSphere Application Server's OSGi class cache.

Resolving the problem

IBM Support may ask you to clear the class cache. There are several reasons for this. After an upgrade, it is possible that the class cache's are still holding onto previous versions of classes. It is also possible that the caches became corrupted.

Please remember there are two caches that will need to be cleared, the JVM's cache and the OSGi cache. The server has to be stopped before clearing the cache
.

CWWIM4564I The user registry is now connected to ....

A few of my colleagues have been seeing this "error" message in their WAS SystemOut.log files: -

[2/4/14 13:01:27:694 EST] 00000043 LdapConnectio I com.ibm.ws.wim.adapter.ldap.LdapConnection getDirContext CWWIM4564I  The user registry is now connected to 'ldap://hostname.domainname.com:389' LDAP Server.

repeatedly, in blocks of a few hundred, BUT with over 40K of messages in one hour :-(

Another chap came back and said that he'd seen, and mitigated, this with a wimconfig.xml change.

Initially, I thought it might be my old friend - allowOperationIfReposDown="true"

<snip>
...
<config:realmConfiguration defaultRealm="Collaboration">
<config:realms delimiter="/" name="Collaboration" securityUse="active" allowOperationIfReposDown="true">
<config:participatingBaseEntries name="ou=groups,o=foo"/> <config:participatingBaseEntries name="ou=users,o=foo"/> <config:participatingBaseEntries name="ou=systems,o=foo"/> <config:participatingBaseEntries name="ou=admins,o=foo"/>
...
</snip>

as documented in this Technote: -

What are the consequences of one repository becoming unavailable in a federated environment?

however, it wasn't that one - it was one of which I've not previously been aware: -

<snip>
...
 <config:repositories xsi:type="config:LdapRepositoryType" adapterClassName="com.ibm.ws.wim.adapter.ldap.LdapAdapter"
        id="MyLdap" isExtIdUnique="true" supportAsyncMode="false" supportExternalName="false"
        supportPaging="false" supportSorting="false" supportTransactions="false" supportChangeLog="none"
        certificateFilter="" certificateMapMode="exactdn" ldapServerType="AD" translateRDN="false">
      <config:baseEntries name="DC=myldap,DC=com" nameInRepository="DC=myldap,DC=com"/>
      <config:loginProperties>uid</config:loginProperties>
      <config:ldapServerConfiguration primaryServerQueryTimeInterval="15" returnToPrimaryServer="false"
          sslConfiguration="">
        <config:ldapServers authentication="simple" bindDN="myldap\user"
            bindPassword="{xor}asdfgasdfgasdf==" connectionPool="false" connectTimeout="20"
            derefAliases="always" referal="ignore" sslEnabled="false">
          <config:connections host="myldap.net" port="389"/>
        </config:ldapServers>
      </config:ldapServerConfiguration>
</snip>

This allows WAS to maintain connectivity to failover LDAP servers; apparently, if it is set to TRUE, WAS jumps across to the failover servers more frequently. With it set to FALSE, then WAS will "poll" less frequently.

Obviously, if you only have one LDAP server, then it makes no difference.

I've not yet seen any response back from the original poster as to whether it helps, or not.

Saturday 8 February 2014

WebSphere User Group @ IBM South Bank, London on 25th March, 2014

A timely reminder from Mr Alan Chambers: -

We are pleased to confirm that the next meeting of the WebSphere User Group (UK) will take place on 25th March 2014, to be held in the IBM Client Centre at IBM South Bank, London. There will be no charge for this meeting and as usual we aim to have an excellent agenda lined up, covering a range of current and emerging WebSphere technologies.



Friday 7 February 2014

Installing and configuring an IBM Operational Decision Management golden topology

From IBM developerWorks: -

Learn how to choose and configure deployment topologies for IBM® Operational Decision Management (IBM ODM) in distributed environments. This article explains the essential concepts needed to understand highly available and scalable WebSphere Application Server Network Deployment environments, then introduces the IBM ODM server components and explains the characteristics or constraints of those components that affect deployment decisions. This content is part of the IBM Business Process Management Journal.


Relevant to me as I put together a set of estimates for an upcoming ISSW engagement, installing IBM BPM Advanced 8.5, IBM ODM 8.5 and IBM Business Monitor 8.0.1.

Wednesday 5 February 2014

Developing portlet applications with WDT and Liberty profile

Thanks to @WASdevnet for posting this: -

A quick introduction to using Eclipse with WebSphere Application Server Developer Tools (WDT) to develop portlet applications on Liberty profile with the Portlet Container feature. It provides a simple step-by-step description about how to create a simple new portlet application.




Solved! - Hmm, Firefox and Blogger not playing nicely

For the past few months, I'd noticed that my Blogger account wasn't functioning perfectly when I accessed it using Firefox.

This problem persisted through multiple versions of FF, including the most recent version 27.

This is what I see: -



whereas this is what I should see: -



I've let the problem go for quite a while ( using Chrome as one of my backup browsers ) but I decided to crack it today.

I assumed that it was one of my plugins or add-ons.

Assuming that add-ons were more likely villains, I started by disabling Adblock Plus 2.4.1 but to no avail.

I then tried the excellent Disconnect plugin: -

We crawl the web to find the companies that track people, then Disconnect blocks those companies' tracking requests in your browser.


and boom the Blogger search bar and Sign In features started working again.

I'll tinker with the Disconnect configuration, but at least I have a circumvention.

:-)

*UPDATE*

Sorted - I merely need to tell Disconnect to whitelist rather than blacklist the Blogger site: -






Visual Studio Code - Wow 🙀

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