Friday, 23 June 2017

IBM Business Process Manager 8.5.7 Cumulative Fix 2017-06 Released


Update to IBM BPM V8.5.7 Cumulative Fix 2017.06 to experience all of the highlights, such as these added abilities and improvements:

IBM BPM on Cloud

• Reduce overhead and downtime for client applications by using the new service accounts for password administration

IBM BPM

• Develop user interfaces more easily
• Get usage metrics by using IBM Cloud Product Insights
• Determine artifact usage in the web IBM Process Designer
• Experience enhanced abilities to discover and integrate services in the web Process Designer

IBM Process Federation Server 

• Import saved searches from federated IBM BPM systems into Process Federation Server


Develop user interfaces more easily

The BPM UI toolkit, which is based on the Salient Process SPARK UI toolkit, is now available with IBM BPM CF2017.06 to help you more easily develop even better user interfaces. This toolkit provides many powerful controls, including charting controls with bidirectional support. Plus, it is fully integrated with the web IBM Process Designer so you can benefit from various functions, such the ability to preview controls in the graphical theme editor.

The BPM UI toolkit is now the default toolkit. It provides equivalent controls to the legacy UI toolkits and includes many new controls. Although the Coaches and Responsive Coaches toolkits are deprecated, coaches that use these toolkits still work. Use the new BPM UI controls for new development and to replace existing coach implementations as required. To become familiar with the controls in the new toolkit, explore the Discover BPM UI sample. For more information, see Controls in the BPM UI toolkit.

Furthermore, for coaching and troubleshooting assistance, IBM BPM now provides guidance as you develop and test your coach-based user interfaces to ensure optimal UI performance. For more information, see Accessing coach performance statistics.

Get usage metrics by using IBM Cloud Product Insights

To get various usage metrics, you can register your IBM BPM instances with Cloud Product Insights. For more information, see Getting server usage metrics by using IBM Cloud Product Insights. For more information about Cloud Product Insights, see Getting started with Product Insights.

Determine artifact usage in the web Process Designer

When you work with an artifact in the web Process Designer, it is useful to know where the artifact is used so that you can see the impact of potential changes that you want to make. For example, before you change a business object in a process application, you can see the processes and services in that process application that use the business object. Use the web Process Designer References feature to view the artifacts in the current process application that use a particular library item and also the artifacts that the library item uses. For more information, see Determining artifact usage.

Experience enhanced abilities to discover and integrate services in the web Process Designer

In the web Process Designer, you can discover and integrate services in an IBM BPM process service flow:
• A new tutorial explains how to integrate an external IBM Blockchain service that is defined by using Hyperledger Composer in a business process as a REST service. For more information, see Invoking a REST API service.
• Drag a service from the library onto a service flow diagram. For more information, see Adding a service from the library.
• IBM Operational Decision Manager business rules. For more information, see Using IBM ODM business rules.

And it's on Fix Central here

Wednesday, 21 June 2017

IBM Redbook - Governing Operational Decisions in an Enterprise Scalable Way

Penned, in part, by two of my immediate colleagues in the IBM Professional Cloud Services here in the UK :-)

This IBM® Redbooks® publication introduces operational decision governance and describes in details how to implement it using the IBM Operational Decision Manager (ODM) platform. ODM allows businesses to automate and manage day to day operational decisions. It provides an integrated repository and management components for line-of-business, subject-matter experts to directly participate in the definition and governance of rules-based, decision logic, organized in decision services. Governance of changes to decision services is of particular importance and value.

This book describes how organizations can choose between the built-in ODM decision governance framework or a custom governance based on manually managed branches. Related topics such as access control, permissions and user management are covered and give a full view on decision service governance. You will find this book valuable if you are using or considering the usage of an operational decision management system in your organization, either with ODM on-premises or ODM on Cloud offerings.

This book was written to help assist the following target audience in applying Decision Management technology successfully: IT Project Managers, need to understand how Decision Governance differs from IT Governance and how ODM straddles both worlds to facilitate agile change.

IT Technical Architects, need to understand how to architect ODM to sit inside both the IT and business worlds.
Business Analyst, need to understand the processes for changing business policies using ODM Decision Center.
Business Rule Development Team, need to understand the best way to structure rule projects for scalability and maintainability.


Table of contents

Chapter 1. Introduction
Chapter 2. Decision governance for project managers
Chapter 3. Roles and responsibilities in governing decisions
Chapter 4. Securing Decision Center 
Chapter 5. Designing decision services
Chapter 6. Processes
Chapter 7. Decision Governance Framework
Chapter 8. Deployment
Chapter 9. ODM DevOps
Chapter 10. ODM on Cloud
Chapter 11. Branching and merging
Chapter 12. Conclusion
Appendix A. Acronyms

Monday, 19 June 2017

NullPointerException seen when using BPMConfig.sh to create a second IBM BPM Deployment Environment

I saw this earlier whilst attempting to create a second Deployment Environment, of type Process Server, within an existing BPM Advanced 8.5.7 cell, which already had a Process Centre Deployment Environment therein: -

/opt/ibm/WebSphere/AppServer/bin/BPMConfig.sh -create -de /mnt/ResponseFiles/Advanced-PS-ThreeClusters-DB2.properties

Logging to file /opt/ibm/WebSphere/AppServer/logs/config/BPMConfig_20170619-153221.log.
The 'BPMConfig.sh -create -de /mnt/ResponseFiles/Advanced-PS-ThreeClusters-DB2.properties' command failed. For more information, see the log file /opt/ibm/WebSphere/AppServer/logs/config/BPMConfig_20170619-153221.log.

I checked the logs: -

cat /opt/ibm/WebSphere/AppServer/logs/config/BPMConfig_20170619-153221.log

[19/06/17 15:39:01:391 BST] 00000001 WccmHelper    < com.ibm.bpm.config.util.ws.WccmHelper getBPMCellConfigExtension RETURN null
[19/06/17 15:39:01:391 BST] 00000001 BPMConfig     E com.ibm.bpm.config.BPMConfig main <Null Message>
                                 java.lang.NullPointerException
at com.ibm.bpm.config.BPMConfig.checkCellScopedDB(BPMConfig.java:1097)
at com.ibm.bpm.config.BPMConfig.configureDeploymentEnvironment(BPMConfig.java:641)


cat /opt/ibm/WebSphere/AppServer/logs/config/ffdc_20170619-153853/ffdc.2985516112090437880.txt 

[19/06/17 15:39:01:404 BST]     FFDC Exception:java.lang.NullPointerException SourceId:com.ibm.bpm.config.BPMConfig.main ProbeId:202 Reporter:java.lang.Class@5f390df3
java.lang.NullPointerException
at com.ibm.bpm.config.BPMConfig.checkCellScopedDB(BPMConfig.java:1097)
at com.ibm.bpm.config.BPMConfig.configureDeploymentEnvironment(BPMConfig.java:641)
at com.ibm.bpm.config.BPMConfig$Actions.createDe(BPMConfig.java:4437)

This led me to check the properties file - - within which I had: -

bpm.cell.name=PSCell1

whereas it should've been: -

bpm.cell.name=PSCell1

because I'm adding a second DE to an existing cell, with its profiles, Deployment Manager and Nodes.

Once I changed it ….

IBM BPM and DB2 and Permissions and Users and So On and So Forth :-)

I've seen this exception: -

com.ibm.db2.jcc.am.SqlSyntaxErrorException: com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DB2USER1.LSW_SYSTEM_SCHEMA, DRIVER=4.18.60

before, as per these posts: -



However, this time it's subtly different.

gives us an SQL exception code, which DB2 can debug for us: -

db2 ? SQL0204

which returns: -

SQL0204N  "<name>" is an undefined name.

Note that the exception relates to DB2USER1.LSW_SYSTEM_SCHEMA whereas we have: -

db2 list tables for all|grep -i LSW_SYSTEM

LSW_SYSTEM                      BPMDB2USER      T     2017-06-15-10.19.40.987764
LSW_SYSTEM_SCHEMA               BPMDB2USER      T     2017-06-15-10.19.41.033429


This reflects a time when we tried/failed to use a Unix / DB2 user account that was LONGER than eight characters: -

DB2 - Still 8 characters after all these years ...

Looking at the scripts that WAS generates for the database here: -

/opt/IBM/WebSphere/AppServer/profiles/PSDmgr01/dbscripts/

I can see that the schema name has been correctly set by the BPMConfig.sh tool when we rebuilt the Deployment Environment with the new shorter user - db2user1: -

PSCell1.PSCell1De1/DB2/PSBPMDB/createSchema_Advanced.sql:CREATE TABLE db2user1.LSW_SYSTEM (
PSCell1.PSCell1De1/DB2/PSBPMDB/createSchema_Advanced.sql:ALTER TABLE db2user1.LSW_SYSTEM ADD CONSTRAINT "PROPKEY" CHECK (CHARACTER_LENGTH("PROPKEY",CODEUNITS16) <= 256)  ENFORCED ENABLE QUERY OPTIMIZATION
PSCell1.PSCell1De1/DB2/PSBPMDB/createSchema_Advanced.sql:ALTER TABLE db2user1.LSW_SYSTEM ADD CONSTRAINT "PROPVALUE" CHECK (CHARACTER_LENGTH("PROPVALUE",CODEUNITS16) <= 256)  ENFORCED ENABLE QUERY OPTIMIZATION
...
PSCell1.PSCell1De1/DB2/PSBPMDB/createSchema_Advanced.sql:    db2user1.LSW_SYSTEM("PROPKEY",
PSCell1.PSCell1De1/DB2/PSBPMDB/createSchema_Advanced.sql:    db2user1.LSW_SYSTEM_SCHEMA("PROPNAME",


but I'm guessing that we didn't drop/recreate the databases after that change :-(

Now to test …

For the record, I initially thought that this was a permissions error, and started looking at this: -


with: -

SELECT * FROM SYSIBMADM.PRIVILEGES WHERE AUTHID = 'DB2USER1' AND AUTHIDTYPE = 'U'

and: -

db2 grant dbadm on database to user db2user1

Can you say "Red herring" ??

Friday, 16 June 2017

WebSphere Liberty Collectives - Deploying Node.JS using REST

This is definitely a Work-In-Progress …..

Using this as input: -


I started by using a REST client within Chrome ( called Restlet ): -


with this JSON as input: -

{
  "rule":"Node.js Server Rule",
  "hosts":["wlpn.uk.ibm.com"],
  "variables": [
    { "name":"applicationPackage","value":"helloworld-1.0.0.tgz" },
    { "name":"serverName", "value":"Server1" },
    { "name":"clusterName", "value":"Cluster1" },
    { "name":"keystorePassword", "value":"passw0rd" },
    { "name":"applicationDir", "value":"/home/wasadmin/" }
  ]
}


to deploy a Node.JS server via this URL ( POST ): -


I went one step further and used this JSON: -

{
   "host": "wlpn.uk.ibm.com",
   "userDir":"/home/wasadmin/wlpn",
   "serverName":"Server1"
}


to undeploy the same.

I then translated that into command-line commands (!) using Curl: -

curl -d "@deploy.json" -H "Content-Type: application/json" -X POST https://wlpc.uk.ibm.com:9443/ibm/api/collective/v1/deployment/deploy --insecure -i -u wasadmin:passw0rd

and: -

curl -d "@undeploy.json" -H "Content-Type: application/json" -X POST https://wlpc.uk.ibm.com:9443/ibm/api/collective/v1/deployment/undeploy --insecure -i -u wasadmin:passw0rd

deploy.json

{
  "rule":"Node.js Server Rule",
  "hosts":["wlpn.uk.ibm.com"],
  "variables": [
    { "name":"applicationPackage","value":"helloworld-1.0.0.tgz" },
    { "name":"serverName", "value":"Server1" },
    { "name":"clusterName", "value":"Cluster1" },
    { "name":"keystorePassword", "value":"passw0rd" },
    { "name":"applicationDir", "value":"/home/wasadmin/" }
  ]
}


undeploy.json

{
   "host": "wlpn.uk.ibm.com",
   "userDir":"/home/wasadmin/wlpn",
   "serverName":"Server1"
}


Next I need to do the same to start and stop my servers …..

Node.JS - Unknown SSL protocol error

So I've been tinkering with HTTPS servers in Node.JS, and was following this thread: -


which has one create a public/private key pair, and then generate a self-signed certificate.

Having done this, I created a simple server: -

server.js 

var http = require('https');
var fs = require('fs');
 
var options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
};

var server = http.createServer(options, function(req, res) {
    res.writeHead(200);
    res.write('<p>Hello world!</p>');
    res.end();
});
 
var port = 10001;
server.listen(port, function() {
    console.log('server listening on port ' + port);
});

which I then started: -

node server.js 

server listening on port 10001

However, when I tried to connect to it: -

I got this: -

curl: (35) Unknown SSL protocol error in connection to localhost:-9838

and this: -


from Firefox, and this from Chrome: -


Thankfully, Google came to me aid - AGAIN !!

This post: -


suggested that the problem might be that the key length, of the private key, is wrong.

I checked: -

openssl rsa -in key.pem -text -noout

which reported: -

...
Private-Key: (512 bit)
...

I validated this by checking the certificate: -

openssl x509 -in cert.pem -text -noout

Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            89:66:62:89:72:dd:66:ff
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=GB, ST=Hampshire, L=Winchester, O=IBM, OU=Cloud, CN=Dave Hay/emailAddress=david_hay@uk.ibm.com
        Validity
            Not Before: Jun 16 15:14:36 2017 GMT
            Not After : Oct 31 15:14:36 2044 GMT
        Subject: C=GB, ST=Hampshire, L=Winchester, O=IBM, OU=Cloud, CN=Dave Hay/emailAddress=david_hay@uk.ibm.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (512 bit)
                Modulus (512 bit):
                    00:d3:fc:99:16:f7:a0:2a:e5:a5:53:09:55:7e:5f:
                    63:f3:d6:98:92:39:56:7c:71:fb:ca:5f:75:af:c4:
                    1f:78:d8:a3:23:1a:ca:e2:d5:f1:a6:43:61:2b:51:
                    e8:39:f5:43:77:4a:59:ae:8c:f5:22:a3:82:51:52:
                    45:12:c2:bf:95
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha1WithRSAEncryption
        c9:76:2b:eb:c6:39:ad:ce:3d:0c:cb:8d:28:26:95:82:68:c4:
        cb:e6:06:fa:62:62:b8:ea:8d:13:47:7f:92:c4:0c:e6:d1:97:
        1c:ec:f1:01:e5:63:be:e5:f4:f4:cd:09:76:3f:55:75:72:2a:
        d2:c3:58:2a:c6:1f:64:50:ae:60


I regenerated the key pair: -

openssl genrsa -out key.pem 2048

and then regenerated the certificate: -

openssl req -new -key key.pem -out csr.pem
openssl x509 -req -days 9999 -in csr.pem -signkey key.pem -out cert.pem
rm csr.pem


and validated the key: -

openssl rsa -in key.pem -text -noout

Private-Key: (2048 bit)
...

and the certificate: -

openssl x509 -in cert.pem -text -noout

Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            aa:3b:0b:19:b8:7c:e5:42
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=GB, ST=Hampshire, L=Winchester, O=IBM, OU=Cloud, CN=Dave Hay/emailAddress=david_hay@uk.ibm.com
        Validity
            Not Before: Jun 16 15:28:55 2017 GMT
            Not After : Oct 31 15:28:55 2044 GMT
        Subject: C=GB, ST=Hampshire, L=Winchester, O=IBM, OU=Cloud, CN=Dave Hay/emailAddress=david_hay@uk.ibm.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (2048 bit)
                Modulus (2048 bit):

...

I then restarted my server

node server.js

and tested: -


<p>Hello world!</p>

and now Chrome is happy: -


and Firefox is happy: -


Obviously both browsers mark me down for using a self-signed certificate, but I can live with that.

I've since turned my Node.JS server into a Node module, and deployed it to WebSphere Liberty Profile and the IBM Node.JS runtime, as part of an IBM API Connect test ...

IBM Rational Software Architect Designer on macOS - java.lang.RuntimeException: No application id has been found.

I hit this today: -


having installed IBM Rational Software Architect Designer 9.6 on my Mac.

Looking at the log: -

cat /Users/davidhay/.eclipse/org.eclipse.platform_4.6.1_443275834_macosx_cocoa_x86_64/configuration/1497623600763.log.

!SESSION Fri Jun 16 15:33:20 BST 2017 ------------------------------------------
!ENTRY org.eclipse.equinox.launcher 4 0 2017-06-16 15:33:20.767
!MESSAGE Could not find extension: com.ibm.cds
!SESSION 2017-06-16 15:33:20.690 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.8.0_131
java.vendor=Oracle Corporation
BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=en_GB
Framework arguments:  -product com.ibm.rational.rsa.product.v95.ide
Command-line arguments:  -os macosx -ws cocoa -arch x86_64 -product com.ibm.rational.rsa.product.v95.ide

!ENTRY org.eclipse.osgi 4 0 2017-06-16 15:33:21.684
!MESSAGE Bundle com.ibm.cds not found.

!ENTRY org.eclipse.equinox.app 0 0 2017-06-16 15:33:24.789
!MESSAGE Product com.ibm.rational.rsa.product.v95.ide could not be found.

!ENTRY org.eclipse.osgi 4 0 2017-06-16 15:33:31.004
!MESSAGE Application error
!STACK 1
java.lang.RuntimeException: No application id has been found.
at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:242)
at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
at org.eclipse.equinox.launcher.Main.run(Main.java:1519)



My IBM colleague, Aiden, hit the same problem yesterday: -


and found the solution: -

vi /Applications/IBM/SoftwareDeliveryPlatform/RSA.app/Contents/MacOS/ExecuteScript 

and change from: -

$ECLIPSE_APP -product com.ibm.rational.rsa.product.v95.ide &

to: -

$ECLIPSE_APP -product com.ibm.rational.rsa.product.v95.ide &

Can you say "Doh!" ?? I bet you can ...

Thursday, 8 June 2017

After Atom on Centos, Atom on Ubuntu is soooo much easier

After yesterday's post: -

Using Atom Text Editor on CentOS Linux

doing it on Ubuntu is SOO much easier: -

Download it

wget https://atom.io/download/deb

Install it

sudo dpkg --install /home/hayd/Downloads/atom-amd64.deb

Fix up the dependencies ( including Git )

sudo apt-get -f install

Use it

atom

Job's a good 'un

Installing Ubuntu Server - Your installation CD-ROM couldn’t be mounted

I was seeing this issue today: -

Your installation CD-ROM couldn't be mounted. This probably means that the CD-ROM was not in the drive. If so you can insert it and try again.

Retry mounting the CD-ROM?

whilst trying to install a new Ubuntu 17.04 box.

I'd downloaded Ubuntu from here: -


which resulted in a 685 MB ISO image: -

-rw-r--r--@  1 davidhay  staff  718274560  8 Jun 07:12 ubuntu-17.04-server-amd64.iso

which I "ripped" to a handy USB3-capable hard drive: -

sudo dd if=/Volumes/DaveHaySSD/Software/Ubuntu/ubuntu-17.04-server-amd64.iso of=/dev/disk3 bs=1m

Password:
685+0 records in
685+0 records out
718274560 bytes transferred in 22.509606 secs (31909690 bytes/sec)


This AskUbuntu post: -


had the answer ( of course !! ).

For some strange reason, Ubuntu doesn't seem to like installing from a USB drive, and seems to expect a physical CD-ROM ( I know, right ? ).

The solution is to fool the installer: -

(1) Use [Alt][F2] to open a command-line ( it's BusyBox which I've seen many times before )
(2) Mount the USB disk as though it were the CD-ROM - mount /dev/sdb /cdrom
(3) Use [Alt][F1] to return to the GUI installer
(4) Choose Detect and mount CD-ROM

And off we go ….


Wednesday, 7 June 2017

Using Atom Text Editor on CentOS Linux

I've been recently converted to the Atom text editor on my Mac, so thought that I'd do the same on my newly minted Linux box, which is running CentOS: -

cat /etc/redhat-release

CentOS Linux release 7.3.1611 (Core)

Having downloaded Atom from here: -

https://atom.io/download/rpm

I ended up with the following RPM: -

-rw-rw-r--.  1 hayd hayd 99606115 Jun  7 11:10 atom.x86_64.rpm

and tried/failed to install it: -

sudo rpm -ivh atom.x86_64.rpm

error: Failed dependencies:
    libXss.so.1()(64bit) is needed by atom-1.17.2-0.1.x86_64

I assumed that the solution would be simple; merely install the missing library: -

sudo yum install -y libXss.so.1

Amongst other things, this installed

libXScrnSaver-1.2.2-6.1.el7.i686.rpm

However, when I retried the installation: -

sudo rpm -ivh atom.x86_64.rpm

it again failed with: -

error: Failed dependencies:
    libXss.so.1()(64bit) is needed by atom-1.17.2-0.1.x86_64

When I thought further, I realised that I'd merely installed the 32-bit version of libXScreenSaver ( i686 ), whereas I was trying to install the 64-bit version of Atom.

I re-ran my installation: -

sudo yum install -y libXss.so*

which pulled libXScrnSaver.x86_64 0:1.2.2-6.1.el7

This time around, I was able to happily install Atom: -

sudo rpm -ivh atom.x86_64.rpm

Preparing...                          ################################# [100%]
Updating / installing...
   1:atom-1.17.2-0.1                  ################################# [100%]

Tuesday, 6 June 2017

WebSphere Liberty Profile - What Have We Got ?

This is a useful way to see what's installed within a WebSphere Liberty Profile (WLP) installation: -

/opt/IBM/wlp/bin/productInfo featureInfo --output=/tmp/featureListOutput.txt

cat /tmp/featureListOutput.txt 

...
adminCenter-1.0 [1.0.0]
apiDiscovery-1.0 [1.0.0]
appClientSupport-1.0 [1.0.0]
appSecurity-1.0 [1.1.0]
appSecurity-2.0 [1.0.0]
appSecurityClient-1.0 [1.0.0]
batch-1.0 [1.0.0]
batchManagement-1.0 [1.0.0]
beanValidation-1.0 [1.0.0]
beanValidation-1.1 [1.0.0]
bells-1.0 [1.0.0]
bluemixUtility-1.0 [1.0.0]
blueprint-1.0 [1.0.0]
cdi-1.0 [1.0.0]
cdi-1.2 [1.0.0]
cloudant-1.0 [1.0.0]
clusterMember-1.0 [1.0.0]
collectiveController-1.0 [1.0.0]
collectiveMember-1.0 [1.0.0]
concurrent-1.0 [1.0.0]
constrainedDelegation-1.0 [1.0.0]
couchdb-1.0 [1.0.0]
distributedMap-1.0 [1.0.0]
ejb-3.2 [1.0.0]
ejbHome-3.2 [1.0.0]
ejbLite-3.1 [1.0.0]
ejbLite-3.2 [1.0.0]
ejbPersistentTimer-3.2 [1.0.0]
ejbRemote-3.2 [1.0.0]
el-3.0 [3.0.0]
eventLogging-1.0 [1.0.0]
federatedRegistry-1.0 [1.0.0]
httpWhiteboard-1.0 [1.0.0]
j2eeManagement-1.1 [1.1.0]
jacc-1.5 [1.0.0]
jaspic-1.1 [1.0.0]


over and above the version subcommand e.g.

/opt/IBM/wlp/bin/server version

WebSphere Application Server 17.0.0.1 (1.0.16.cl170120170227-0220) on IBM J9 VM, version pxa6480sr3fp12-20160919_01 (SR3 FP12) (en_GB)

etc.

With thanks to this blog: -


for the inspiration.

Monday, 5 June 2017

WebSphere Liberty Profile - Tracing

I've not yet got to the bottom of this, but I'm seeing this: -

[05/06/17 17:02:52:531 BST] 00000022 y.authentication.jaas.modules.UsernameAndPasswordLoginModule A CWWKS1100A: Authentication did not succeed for user ID wasadmin. An invalid user ID or password was specified.
[05/06/17 17:02:52:594 BST] 00000024 y.authentication.jaas.modules.UsernameAndPasswordLoginModule A CWWKS1100A: Authentication did not succeed for user ID wasadmin. An invalid user ID or password was specified.
[05/06/17 17:02:52:616 BST] 00000031 y.authentication.jaas.modules.UsernameAndPasswordLoginModule A CWWKS1100A: Authentication did not succeed for user ID wasadmin. An invalid user ID or password was specified.

in the messages.log file on my WebSphere Liberty Profile Collective Controller, whilst trying to register a remote host: -

wlpn-collective registerHost hostname=wlpn.uk.ibm.com --host=wlpc.uk.ibm.com --port=9443 –-user=admin --password=passw0rd --rpcUser=wasadmin --rpcUserPassword=passw0rd —autoAcceptCertificates

Whilst debugging, I wanted to enable some tracing.

This is what I did: -

Update server.xml

vi /opt/IBM/work/servers/cc/server.xml

Add trace specification

    <logging traceSpecification="com.ibm.ws.security.*=all:com.ibm.ws.webcontainer.security.*=all"/>

Watch the trace

tail -f /opt/IBM/work/servers/cc/logs/trace.log

[05/06/17 17:02:52:531 BST] 00000022 id=c258be29 m.ws.security.quickstart.internal.QuickStartSecurityRegistry > checkPassword Entry
                                                                                                               wasadmin
                                                                                                               <sensitive java.lang.String@6f65828e>
[05/06/17 17:02:52:531 BST] 00000022 id=c258be29 m.ws.security.quickstart.internal.QuickStartSecurityRegistry < checkPassword Exit
                                                                                                               null
[05/06/17 17:02:52:531 BST] 00000022 id=         y.authentication.jaas.modules.UsernameAndPasswordLoginModule A CWWKS1100A: Authentication did not succeed for user ID wasadmin. An invalid user ID or password was specified.
[05/06/17 17:02:52:563 BST] 00000022 id=         com.ibm.ws.security.authentication.AuthenticationException   > <init> Entry
                                                                                                               CWWKS1100A: Authentication did not succeed for user ID wasadmin. An invalid user ID or password was specified.
[05/06/17 17:02:52:563 BST] 00000022 id=f47e0a6e com.ibm.ws.security.authentication.AuthenticationException   < <init> Exit
                                                                                                               com.ibm.ws.security.authentication.AuthenticationException: CWWKS1100A: Authentication did not succeed for user ID wasadmin. An invalid user ID or password was specified.
        at com.ibm.ws.security.authentication.jaas.modules.UsernameAndPasswordLoginModule.login(UsernameAndPasswordLoginModule.java:81)
        at com.ibm.ws.kernel.boot.security.LoginModuleProxy.login(LoginModuleProxy.java:53)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
        at java.lang.reflect.Method.invoke(Method.java:508)
        at javax.security.auth.login.LoginContext.invoke(LoginContext.java:788)
        at javax.security.auth.login.LoginContext.access$000(LoginContext.java:196)
        at javax.security.auth.login.LoginContext$4.run(LoginContext.java:698)
        at javax.security.auth.login.LoginContext$4.run(LoginContext.java:696)
        at java.security.AccessController.doPrivileged(AccessController.java:650)
        at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:696)
        at javax.security.auth.login.LoginContext.login(LoginContext.java:597)
        at com.ibm.ws.security.authentication.internal.jaas.JAASServiceImpl.doLoginContext(JAASServiceImpl.java:344)
        at com.ibm.ws.security.authentication.internal.jaas.JAASServiceImpl.performLogin(JAASServiceImpl.java:330)
        at com.ibm.ws.security.authentication.internal.jaas.JAASServiceImpl.performLogin(JAASServiceImpl.java:315)
        at com.ibm.ws.security.authentication.internal.AuthenticationServiceImpl.performJAASLogin(AuthenticationServiceImpl.java:458)
        at com.ibm.ws.security.authentication.internal.AuthenticationServiceImpl.authenticate(AuthenticationServiceImpl.java:203)
        at com.ibm.ws.webcontainer.security.internal.BasicAuthAuthenticator.basicAuthenticate(BasicAuthAuthenticator.java:127)
        at com.ibm.ws.webcontainer.security.internal.BasicAuthAuthenticator.handleBasicAuth(BasicAuthAuthenticator.java:118)
        at com.ibm.ws.webcontainer.security.internal.BasicAuthAuthenticator.authenticate(BasicAuthAuthenticator.java:71)
        at com.ibm.ws.webcontainer.security.WebAuthenticatorProxy.authenticate(WebAuthenticatorProxy.java:93)
        at com.ibm.ws.webcontainer.security.WebAppSecurityCollaboratorImpl.authenticateRequest(WebAppSecurityCollaboratorImpl.java:1050)
        at com.ibm.ws.webcontainer.security.WebAppSecurityCollaboratorImpl.determineWebReply(WebAppSecurityCollaboratorImpl.java:849)
        at com.ibm.ws.webcontainer.security.WebAppSecurityCollaboratorImpl.performSecurityChecks(WebAppSecurityCollaboratorImpl.java:609)
        at com.ibm.ws.webcontainer.security.WebAppSecurityCollaboratorImpl.preInvoke(WebAppSecurityCollaboratorImpl.java:532)
        at com.ibm.wsspi.webcontainer.collaborator.CollaboratorHelper.preInvokeCollaborators(CollaboratorHelper.java:458)
        at com.ibm.ws.webcontainer.osgi.collaborator.CollaboratorHelperImpl.preInvokeCollaborators(CollaboratorHelperImpl.java:267)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1125)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4956)
        at com.ibm.ws.webcontainer31.osgi.webapp.WebApp31.handleRequest(WebApp31.java:525)
        at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.handleRequest(DynamicVirtualHost.java:315)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1014)
        at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:280)
        at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:967)
        at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.wrapHandlerAndExecute(HttpDispatcherLink.java:359)
        at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.ready(HttpDispatcherLink.java:318)
        at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:471)
        at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleNewRequest(HttpInboundLink.java:405)
        at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.processRequest(HttpInboundLink.java:285)
        at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.ready(HttpInboundLink.java:256)
        at com.ibm.ws.channel.ssl.internal.SSLConnectionLink.determineNextChannel(SSLConnectionLink.java:1043)
        at com.ibm.ws.channel.ssl.internal.SSLConnectionLink$MyReadCompletedCallback.complete(SSLConnectionLink.java:632)
        at com.ibm.ws.channel.ssl.internal.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1777)
        at com.ibm.ws.tcpchannel.internal.WorkQueueManager.requestComplete(WorkQueueManager.java:504)
        at com.ibm.ws.tcpchannel.internal.WorkQueueManager.attemptIO(WorkQueueManager.java:574)
        at com.ibm.ws.tcpchannel.internal.WorkQueueManager.workerRun(WorkQueueManager.java:929)
        at com.ibm.ws.tcpchannel.internal.WorkQueueManager$Worker.run(WorkQueueManager.java:1018)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1153)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.lang.Thread.run(Thread.java:785)

...

With thanks to this: -


Thursday, 1 June 2017

WebSphere Liberty Profile 17.0.0.1 - Where to go to download

This from: -



etc.


WebSphere Liberty Profile - Silent Installation

This is a TL;DR; taken from a document that I'm writing on the use of Liberty Collectives and Node.JS runtimes.

This is the bit where I set up and install Java and WLP: -

Starting Point

-rwxr-xr-x. 1 wasadmin wasadmins 116037545 Jun  1 08:42 ibm-java-jre-8.0-3.12-x86_64-archive.bin
-rw-r--r--. 1 wasadmin wasadmins 149840706 Jun  1 08:50 wlp-base-all-17.0.0.1.jar


Create File System for WLP and Java

mkdir /opt/IBM

Create User and Group

groupadd wasadmins
useradd -g wasadmins -d /home/wasadmin wasadmin
echo "passw0rd" | passwd wasadmin --stdin
chown -R wasadmin:wasadmins /opt/IBM


Setup Silent Installation Response File for Java

vi ~/installer.properties

Append: -

INSTALLER_UI=silent
USER_INSTALL_DIR=/opt/IBM/Java
LICENSE_ACCEPTED=TRUE


Install Java

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

Validate Java

/opt/IBM/Java/jre/bin/java -version

java version "1.8.0"
Java(TM) SE Runtime Environment (build pxa6480sr3fp12-20160919_01(SR3 FP12))
IBM J9 VM (build 2.8, JRE 1.8.0 Linux amd64-64 Compressed References 20160915_318796 (JIT enabled, AOT enabled)
J9VM - R28_Java8_SR3_20160915_0912_B318796
JIT  - tr.r14.java.green_20160818_122998
GC   - R28_Java8_SR3_20160915_0912_B318796_CMPRSS
J9CL - 20160915_318796)
JCL - 20160914_01 based on Oracle jdk8u101-b13


Setup Path

vi ~/.bashrc

Append: -

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


source ~/.bashrc

Validate Java

java -version

java version "1.8.0"
Java(TM) SE Runtime Environment (build pxa6480sr3fp12-20160919_01(SR3 FP12))
IBM J9 VM (build 2.8, JRE 1.8.0 Linux amd64-64 Compressed References 20160915_318796 (JIT enabled, AOT enabled)
J9VM - R28_Java8_SR3_20160915_0912_B318796
JIT  - tr.r14.java.green_20160818_122998
GC   - R28_Java8_SR3_20160915_0912_B318796_CMPRSS
J9CL - 20160915_318796)
JCL - 20160914_01 based on Oracle jdk8u101-b13


Install WLP

java -jar wlp-base-all-17.0.0.1.jar --acceptLicense /opt/IBM

Before you can use, extract, or install IBM WebSphere Application
Server V9.0.0.3, you must accept the terms of IMPORTANT: READ CAREFULLY
and additional license information. Please read the following license
agreements carefully.


The --acceptLicense argument was found. This indicates that you have
accepted the terms of the license agreement.


Extracting files to /opt/IBM/wlp
Successfully extracted all product files.

Setup Server Environment File for WLP

vi /opt/IBM/wlp/etc/server.env

Append: -

# Specify WLP working directory
WLP_USER_DIR=/opt/IBM/work
# Specify Java Home
JAVA_HOME=/opt/IBM/Java/jre/


Validate WLP

/opt/IBM/wlp/bin/server version

WebSphere Application Server 17.0.0.1 (1.0.16.cl170120170227-0220) on IBM J9 VM, version pxa6480sr3fp12-20160919_01 (SR3 FP12) (en_GB)

IBM Data Server Manager

This came to my attention via @wesmorgan on Twitter: -

IBM® Data Server Manager is a simple, scalable, and smart solution to administer, monitor, manage, and optimize the performance of DB2 for Linux, UNIX and Windows databases across the enterprise. It is easy to deploy and cloud-ready. It simplifies database administrative tasks for both expert and novice users. With one simple Data Server Manager server installation, you can access any DB2 for Linux, UNIX and Windows or DB2 for z/OS and BigInsights systems without the need to install or update any client code. Data Server Manager consolidates information from multiple systems in a single graphical interface that is accessible from any standard web browser.

Data Server Manager offers a lightweight setup option for real-time monitoring and administration. The optional repository database can record monitoring metrics for historical analysis, identify storage access patterns for capacity planning, and track configuration changes for problem determination. Automated, expert advice from a holistic view of the database and intelligent alerts based on trends and statistics help optimize application performance, reduce the need for specialized skills and lower total cost of ownership.

Data Server Manager comes in two editions:

• Data Server Manager Base Edition offers database development, administration and basic performance monitoring capabilities to all DB2 for Linux, UNIX and Windows and DB2 for z/OS clients at no charge. 

For DB2 for z/OS, Data Server Manager Base Edition offers advanced capabilities with centralized configuration management available in the DB2 Administration Solution Pack for z/OS. DB2 Query Workload Tuner for z/OS takes advantage of Data Server Manager architecture either as an individual product or component of the DB2 Performance Solution Pack for z/OS.
• Data Server Manager Enterprise Edition offers advanced capabilities including enhanced monitoring, centralized configuration management, refined performance management and query tuning capabilities with expert advice. Data Server Manager Enterprise Edition is packaged with DB2 for Linux, UNIX and Windows advanced editions or DB2 for Linux, UNIX and Windows Performance Management Offering for non-advanced DB2 for Linux, UNIX and Windows Editions.