I’ve found couple of those little problems which took me a day to resolve – but which are obvious when you understand the problem.
The problems
I was trying to connect the Health Center in Eclipse to the Health agent in Liberty on z/OS.
The first problem was the health center agent on z/OS could not connect to the port. This was due to bad TCPIP configuration
The second problem was I could not connect to it from Eclipse. I had configured the port to be on the local rather than external interface.
My setup
In my jvm.options I had
-Xhealthcenter:level=off,readonly=off,jmx=on,port=1972
Problem 1: The health center agent on z/OS could not connect to the port
In the Liberty startup output I received (after about a timeout of about a minute)
SEVERE: Health Center agent failed to start. java.io.IOException: Cannot bind to URL [rmi://S0W1:1972/jmxrmi]: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host:
Where my system is called S0W1.
It is trying to connect to system S0W1 port 1972, and failing.
TSO PING S0W1 gave
CS 3.1: Pinging host S0W1.DAL-EBIS.IHOST.COM (172.26.1.2)
Ping #1 timed out
This was a surprise to me – I was expecting it to be my local z/OS machine…. I do not have an interface with address 172.26.1.2. This explains why it timed out.
In my ADCD.Z31B.TCPPARMS(GBLTDATA) I had
S0W1: HOSTNAME S0W1
;
;
; NOTE - Use either DOMAINORIGIN/DOMAIN or SEARCH to specify your domain
; origin value
;
; DOMAINORIGIN or DOMAIN statement
; ================================
; DOMAINORIGIN or DOMAIN specifies the domain origin that will be
; appended to host names passed to the resolver. If a host name
; ends with a dot, then the domain origin will not be appended to the
; host name.
;
DOMAINORIGIN DAL-EBIS.IHOST.COM
Because S0W1 did not end with a dot – TCPIP put the DOMAINORIGIN on the end.
ADCD.Z31B.TCPPARMS(ZPDTIPN1)
had
172.26.1.2 S0W1.DAL-EBIS.IHOST.COM S0W1
127.0.0.1 LOCALHOST
Which says for S0W1…. use IP address 172.26.1.2.
I changed this to
S0W1: HOSTNAME S0W1.
127.0.0.1 S0W1
127.0.0.1 LOCALHOST
With these changes, I restarted TCPIP, and told the resolver to use the updated configuration.
F RESOLVER,REFRESH,SETUP=ADCD.Z31b.TCPPARMS(GBLRESOL)
I then got
INFO: Health Center agent started on port 1972.
So my first success. However…
Problem 2 : I could not connect Eclipse to the port
… once I had managed to get get the server to connect to the port. When the server issues a TCPIP binds to a port, you need to specify the IP address and port. I had configured the hostname S0W1 as the local interface (127.0.0.1). When I tried to connect from Eclipse, I was trying to connect to port 1972 on interface 10.1.1.2 – which had not been configured!
The Liberty output had
WARNING: RMI TCP Accept-1972: accept loop for erverSocket[addr=0.0.0.0/0.0.0.0, localport=1972] throws java.io.IOException: EDC5122I Input/output error. (errno2=0x12B804B9)
I changed ADCD.Z31B.TCPPARMS(ZPDTIPN1) to have
10.1.1.2 S0W1
127.0.0.1 LOCALHOST
so the name S0W1 is associated with interface 10.1.1.2. I started restart TCPIP and the resolver and it manage to connect. It only took a day to resolve these problems.