Ubuntu 20.04 Released

Canonical has just released Ubuntu v20.04.
http://releases.ubuntu.com/20.04/

Super-fast, easy to use and free, the Ubuntu operating system powers millions of desktops, netbooks and servers around the world. Ubuntu does everything you need it to. It’ll work with your existing PC files, printers, cameras and MP3 players. And it comes with thousands of free apps.

Regards,
Roger Lacroix
Capitalware Inc.

Linux, Open Source, Operating Systems Comments Off on Ubuntu 20.04 Released

WooHoo! I have a brand new toy today!

Today, I got a brand new z/OS v2.4 image (aka mainframe) from the IBM Z Dallas ISV Center.

They set it up with lots of toys to play with.

  • IBM MQ v9.0.1
  • DB2 V11 and V12
  • IBM V13, V14 and V15
  • CICS V5 R5

In my original request, I asked for a queue manager for IBM MQ V8.0 and IBM MQ V9.1. I have sent an email to IBM ISV support requesting those queue managers be added.

Oh so much work needs to be done to get this new beast ready for prime time. 🙂 Fun, fun, fun!

Regards,
Roger Lacroix
Capitalware Inc.

Capitalware, z/OS Comments Off on WooHoo! I have a brand new toy today!

IBM MQ v9.0 End of Service Date

The end of service date for IBM MQ v9.0 on distributed platforms (Linux, Unix, Windows and IBM i) is September 30, 2021. The IBM MQ Software lifecycle page is at:
https://www.ibm.com/support/pages/announcement-end-support-ibm-mq-90

Regards,
Roger Lacroix
Capitalware Inc.

IBM i (OS/400), IBM MQ, Linux, Unix, Windows Comments Off on IBM MQ v9.0 End of Service Date

IBM MQ, Java and MQ MI and/or MQ HA

Sometimes you come across things that make you just scratch your head and say who the hell wrote this @#$% code. I’m not trying to say that I’m the world’s greatest programmer but some of the shit that the MQ/Java team writes just makes my head spin. They need to share what they’re smoking!

IBM’s line is that if you want MQ MI (Multi-Instance) or MQ HA (High Availability) support for Java applications then use JMS or use a CCDT file with your Java application (non-JMS).

Years ago, I heard about simply separating the IP addresses and/or hostnames with a comma (‘,’) in the HOST_NAME_PROPERTY property for a Hashtable or hostname field of MQEnvironment class. I thought I had tested it and it worked but clearly not.

So, this blog posting is on IBM MQ classes for Java (aka WebSphere MQ classes for Java) and the use of the non-default queue manager port of 1414 and MQ MI or MQ HA.

If your queue manager’s listener is on port 1414 and you have Java applications (non-JMS) using MQ MI or MQ HA then life for you is super easy and NOT complicated. Here’s a coding example:

Hashtable<String,Object> mqht = new Hashtable<String,Object>();
mqht.put(CMQC.CHANNEL_PROPERTY, "TEST.CHL");
mqht.put(CMQC.HOST_NAME_PROPERTY, "cw-serv01,cw-serv02");
mqht.put(CMQC.PORT_PROPERTY, new Integer(1414));
MQQueueManager qMgr = new MQQueueManager("MQA1", mqht);

Or you can simplify it to:

Hashtable<String,Object> mqht = new Hashtable<String,Object>();
mqht.put(CMQC.CHANNEL_PROPERTY, "TEST.CHL");
mqht.put(CMQC.HOST_NAME_PROPERTY, "cw-serv01,cw-serv02");
MQQueueManager qMgr = new MQQueueManager("MQA1", mqht);

So, what if your queue manager’s listener is NOT on port 1414 and you have Java applications (non-JMS) using MQ MI or MQ HA then life is really tricky but can be done if you are careful.

Note: IBM MQ classes for Java (non-JMS) does NOT support the Hashtable property of WMQ_CONNECTION_NAME_LIST (aka “connectionNameList”) like JMS, XMS or C#.

I’ll run through some examples. Here’s my setup:

– Queue Manager name: MQA1 Active/Passive setup
– Queue Manager listener port #: 5555
– HA servers: cw-serv01 and cw-serv02

MQA1 is currently running on cw-serv01.

In my Java program, if I do:

Hashtable<String,Object> mqht = new Hashtable<String,Object>();
mqht.put(CMQC.CHANNEL_PROPERTY, "TEST.CHL");
mqht.put(CMQC.HOST_NAME_PROPERTY, "cw-serv01,cw-serv02");
mqht.put(CMQC.PORT_PROPERTY, new Integer(5555));
MQQueueManager qMgr = new MQQueueManager("MQA1", mqht);

I get error:
com.ibm.mq.jmqi.JmqiException: CC=2;RC=2538;AMQ9204: Connection to host ‘cw-serv02(5555)’ rejected. [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2538;AMQ9205: The host name supplied is not valid. [3=cw-serv02,4=TCP]],3=cw-serv02(5555),5=RemoteTCPConnection.resolveHostname]

Its like MQ client library skipped over the first hostname (cw-serv01). But no. It attempted the connection on port number 1414. Seriously. Even though, the PORT_PROPERTY property is correctly set to 5555.

If I do (reverse the order of the hostnames):

Hashtable<String,Object> mqht = new Hashtable<String,Object>();
mqht.put(CMQC.CHANNEL_PROPERTY, "TEST.CHL");
mqht.put(CMQC.HOST_NAME_PROPERTY, "cw-serv02,cw-serv01");
mqht.put(CMQC.PORT_PROPERTY, new Integer(5555));
MQQueueManager qMgr = new MQQueueManager("MQA1", mqht);

Then it works, but it takes about 3 seconds for the connection. Which makes sense since MQA1 is not running on cw-serv02. But note: it would have been trying port number 1414 rather than 5555, so it would have failed anyway.

Of course, IBM is deleting pretty much all useful information at developer works web site. Pretty damn sad! Anyway, Josh found a cached google page here from 2014 where someone was having an issue with MQ MI and a Java application using a CCDT file. With a little bit of deduction and testing, I discovered what the hell was going on under the covers. And it is really stupid.

So, what test did I do that started to shed light onto the situation. I removed the PORT_PROPERTY from the first test and I flipped the order of hostnames and I explicitly set port number in the HOST_NAME_PROPERTY field.

Hashtable<String,Object> mqht = new Hashtable<String,Object>();
mqht.put(CMQC.CHANNEL_PROPERTY, "TEST.CHL");
mqht.put(CMQC.HOST_NAME_PROPERTY, "cw-serv02(5555),cw-serv01(5555)");
MQQueueManager qMgr = new MQQueueManager("MQA1", mqht);

And I got the following error:
com.ibm.mq.jmqi.JmqiException: CC=2;RC=2538;AMQ9204: Connection to host ‘cw-serv01(5555)(1414)’ rejected. [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2538;AMQ9205: The host name supplied is not valid. [3=cw-serv01(5555),4=TCP]],3=cw-serv01(5555)(1414),5=RemoteTCPConnection.parseConnectionName]

Notice how it says: cw-serv01(5555)(1414).

So, I did a whole bunch of testing changing:
– first value in the HOST_NAME_PROPERTY setting i.e. with & without port number
– second value in the HOST_NAME_PROPERTY setting i.e. with & without port number
– setting & not setting the PORT_PROPERTY value

So, what did I discover? Well, MQ MI and/or MQ HA is supported for Java applications (non-JMS) under the following very exact rules:

(1) The first hostname or IP address MUST have the port number explicitly set.
(2) The second hostname or IP address must NOT have the port number explicitly set.
(3) The PORT_PROPERTY property MUST be set to the correct value for the 2nd hostname or IP address.

Here is the correct way to set the information in the Hashtable for use with MQ MI and/or MQ HA:

Hashtable<String,Object> mqht = new Hashtable<String,Object>();
mqht.put(CMQC.CHANNEL_PROPERTY, "TEST.CHL");
mqht.put(CMQC.HOST_NAME_PROPERTY, "cw-serv01(5555),cw-serv02");
mqht.put(CMQC.PORT_PROPERTY, new Integer(5555));
MQQueueManager qMgr = new MQQueueManager("MQA1", mqht);

Ok, just to bake your noodle a little more, if you take the above working example and decide to remove the 2nd hostname, you would expect it to work, right?

Hashtable<String,Object> mqht = new Hashtable<String,Object>();
mqht.put(CMQC.CHANNEL_PROPERTY, "TEST.CHL");
mqht.put(CMQC.HOST_NAME_PROPERTY, "cw-serv01(5555)");
mqht.put(CMQC.PORT_PROPERTY, new Integer(5555));
MQQueueManager qMgr = new MQQueueManager("MQA1", mqht);

But no. You get the following error:
com.ibm.mq.jmqi.JmqiException: CC=2;RC=2538;AMQ9204: Connection to host ‘cw-serv01(5555)(5555)’ rejected. [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2538;AMQ9205: The host name supplied is not valid. [3=cw-serv01(5555),4=TCP]],3=cw-serv01(5555)(5555),5=RemoteTCPConnection.parseConnectionName]

If you have only 1 hostname or IP address then you CANNOT explicitly set the port number in the HOST_NAME_PROPERTY property. You need to do the following:

Hashtable<String,Object> mqht = new Hashtable<String,Object>();
mqht.put(CMQC.CHANNEL_PROPERTY, "TEST.CHL");
mqht.put(CMQC.HOST_NAME_PROPERTY, "cw-serv01");
mqht.put(CMQC.PORT_PROPERTY, new Integer(5555));
MQQueueManager qMgr = new MQQueueManager("MQA1", mqht);

So, does your head hurt too? Who the #$@#% comes up with this shit?

Regards,
Roger Lacroix
Capitalware Inc.

HPE NonStop, IBM i (OS/400), IBM MQ, IBM MQ Appliance, Java, Linux, macOS (Mac OS X), Programming, Raspberry Pi, Unix, Windows, z/OS Comments Off on IBM MQ, Java and MQ MI and/or MQ HA

IBM MQ Fix Pack 9.1.0.5 Released

IBM has just released Fix Pack 9.1.0.5 for IBM MQ V9.1 LTS:
https://www.ibm.com/support/pages/node/6090700

Regards,
Roger Lacroix
Capitalware Inc.

Fix Packs for MQ, IBM i (OS/400), IBM MQ, Linux, Unix, Windows Comments Off on IBM MQ Fix Pack 9.1.0.5 Released

End of Service Date: IBM MQ v8.0 & IBM MQ Appliance M2000

The end of service date for IBM MQ v8.0 on AIX, HP-UX, IBM i, Linux, Solaris, Windows, z/OS and IBM MQ Appliance M2000 is April 30, 2020. Here is the IBM MQ announcement page:
https://www.ibm.com/support/pages/announcement-end-support-ibm-mq-80-and-ibm-mq-appliance-m2000

Regards,
Roger Lacroix
Capitalware Inc.

IBM i (OS/400), IBM MQ, IBM MQ Appliance, Linux, Unix, Windows, z/OS Comments Off on End of Service Date: IBM MQ v8.0 & IBM MQ Appliance M2000

IBM MQ V9.1.5 Announced

IBM has announced IBM MQ V9.1.5 for Multiplatforms:
https://www-01.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/9/877/ENUSZP20-0119/index.html
Planned availability for IBM MQ V9.1.5 is April 2, 2020 for Electronic software delivery.

Ian Harwood of IBM wrote a blog posting summarizing the IBM V9.1.5 CD release.
https://community.ibm.com/community/user/imwuc/blogs/ian-harwood1/2020/04/02/mq915ga

IBM MQ (aka WebSphere MQ) homepage
https://www.ibm.com/products/mq

Regards,
Roger Lacroix
Capitalware Inc.

Fix Packs for MQ, IBM MQ, IBM MQ Appliance, Linux, Unix, Windows, z/OS Comments Off on IBM MQ V9.1.5 Announced

Working from Home – Loneliness / Self-Isolation

Chris Hadfield is a retired astronaut. You may remember him from his rendition of Space Oddity on the International Space Station (ISS) in 2013.

He spent 166 days in space. So, if you are feeling lonely, depressed or don’t know how you will handle working from home then watch the following:

Regards,
Roger Lacroix
Capitalware Inc.

Education, General Comments Off on Working from Home – Loneliness / Self-Isolation

New: Capitalware Software Lifecycle Pages

Earlier this week, a customer asked if we could publish a software lifecycle page for MQAUSX. Since, I wasn’t knee deep into fixing a bug, I figured I would create a Software Lifecycle page for each commercial product.

Each lifecycle page has 3 columns: version, general availability and end of support. The version number is clickable that will take the user to the particular product’s announcement page.

Note: I started the blog in December 2010. Hence, the announcement pages only go back to then.

Regards,
Roger Lacroix
Capitalware Inc.

Capitalware, MQ Auditor, MQ Authenticate User Security Exit, MQ Batch Toolkit, MQ Channel Connection Inspector, MQ Channel Encryption, MQ Channel Throttler, MQ Enterprise Security Suite, MQ Message Encryption, MQ Message Replication, MQ Standard Security Exit, MQ Visual Browse, MQ Visual Edit Comments Off on New: Capitalware Software Lifecycle Pages

Nerd PSA on Coronavirus aka COVID-19

The other day I wrote about Coronavirus aka COVID-19 and my wife, Cynthia (a pharmacist) has found out more information that I’ll share with the rest of the nerds out there. 🙂

New information:

  • If you have blood type ‘A’, then hide, hide, hide. You can read these articles: here and here.
  • Do not take ibuprofen – take Tylenol instead. You can read this article.

Attention young people: In USA, 40% of the people in ICU are between the age of 20 and 54!!!

Recap from other posting:

  • There is a strong link between people with cardiac diseases, hypertension, diabetes and COVID-19. You can read these articles: here, here and here.
  • There is a strong link between people with vitamin D deficiency (northern people) and COVID-19. You can read these articles: here and here.

So, the cardiac diseases, hypertension and diabetes link explains why it appears to affect older people because young people tend not to have these issues.

Basically, if you are on drugs for cardiac diseases, hypertension, diabetes then you have 3 to 5 times more receptors, hence, a greater probably of getting COVID-19 and with more receptors means more attachment of the virus. i.e. It is like comparing cheap glue with Krazy or Gorilla glue. You don’t want to have COVID-19 make a strong bond to you!! Hence, if you don’t know what medicine you are taking ask your doctor or pharmacist. I just happen to be lucky that my wife is a pharmacist.

Regards,
Roger Lacroix
Capitalware Inc.

General Comments Off on Nerd PSA on Coronavirus aka COVID-19