Gen 8.6 Open Liberty EJBRMI TIRM158E "org.omg.CORBA.INTERNAL: : vmcid: 0x0 ..."
search cancel

Gen 8.6 Open Liberty EJBRMI TIRM158E "org.omg.CORBA.INTERNAL: : vmcid: 0x0 ..."

book

Article ID: 403583

calendar_today

Updated On:

Products

Gen Gen - Run Time Distributed

Issue/Introduction

Running Gen 8.6 Java Web client/ EJB server application under Open Liberty with JDK 17 using remote EJBRMI.
Most transactions are successful but when the EJB uses Import/Export numeric view attributes with the Decimal Precision flag enabled this error occurs:

TIRM030E: Application failed - Updates have been backed out
TIRM031E: Failing procedure exit data follows:
TIRM032E: Last or current action block id = 0022020161
TIRM033E: Last or current action block name = C_PRECISION
TIRM034E: Last or current database statement = 0
TIRM035E: Current statement being processed = 0000000027
TIRM037E: Fatal Error was encountered ***
TIRM158E: A communication error was encountered on the client
[Function: EJBRMIDynamicCoopFlow.processException.EJBRMI.Exception]javax.ejb.EJBException: nested exception is: java.rmi.RemoteException: CORBA INTERNAL 0 No; nested exception is:
org.omg.CORBA.INTERNAL: : vmcid: 0x0 minor code: 0x0 completed: No
TIRM046E: Processing terminated ***
TIRM044E: Press OK to continue ***

The commcfg.properties files has:
*=EJBRMI Y fqdn:2809 server_ear_file

(fqdn is the host Fully Qualified Domain Name)

The Liberty server.xml file has:
 <httpEndpoint host="*" httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>
 <iiopEndpoint host="fqdn" id="defaultIiopEndpoint" iiopPort="2809"/>

Environment

Gen 8.6 plus "Add Support for Liberty Application Server (Phase 2)" PTFs which provide the remote EJBRMI support (Gen 8.6 Solutions & Patches)

Cause

Add CMIDEBUG to the commcfg.properties file and redeploy the client .ear file e.g.
CMIDEBUG = ON C:/temp/open_liberty.out

Retesting generated this output with an error relating to java.math.BigDecimal:

==========
07/08/25-11:02:19:744[Default Executor-thread-1]: EJBRMIContext.getLibertyEjbStubObject(): Attempting Remote lookup of corbaname::fqdn:2809#ejb/global/COOP07SVR/P305/S_PRECISION!coop07%5C.S_PRECISION_Remote using BaseContext
07/08/25-11:02:19:767[Default Executor-thread-1]: EJBRMIContext.getLibertyEjbStubObject(): Found corbaname::fqdn:2809#ejb/global/COOP07SVR/P305/S_PRECISION!coop07%5C.S_PRECISION_Remote using BaseContext
07/08/25-11:02:19:767[Default Executor-thread-1]: EJBRMIContext.getEjbCallMethod(): Selected interface "coop07.S_PRECISION_Remote"
07/08/25-11:02:19:767[Default Executor-thread-1]: EJBRMIContext.getEjbCallMethod(): Found 'SPrecisioncall' method on EJB Interface: coop07.S_PRECISION_Remote
07/08/25-11:02:19:767[Default Executor-thread-1]: EJBRMIContext.createEjbProxyStubData(): EJB Proxy Stub Object cached in hashtable Object: com.ca.gen.odc.coopflow.ejbrmi.EJBRMIContext$EjbProxyStubData@601af510
07/08/25-11:02:19:767[Default Executor-thread-1]: EJBRMIBeanInstance.doFlow(): Converting coop07.SPREC_IA to External View coop07.SPrecisionImport
07/08/25-11:02:19:775[Default Executor-thread-1]: EJBRMIBeanInstance.doFlow(): Caught InvocationTargetException, throwing: javax.ejb.EJBException: nested exception is: java.rmi.RemoteException: CORBA INTERNAL 0 No; nested exception is:
org.omg.CORBA.INTERNAL: :  vmcid: 0x0 minor code: 0x0  completed: No
07/08/25-11:02:19:775[Default Executor-thread-1]: EJBRMIDynamicCoopFlow.processException.EJBRMI.Exception(): javax.ejb.EJBException: nested exception is: java.rmi.RemoteException: CORBA INTERNAL 0 No; nested exception is:
org.omg.CORBA.INTERNAL: :  vmcid: 0x0 minor code: 0x0  completed: No
07/08/25-11:02:19:776[Default Executor-thread-1]: EJBRMIDynamicCoopFlow.processException.EJBRMI.Exception(): Stack Trace:
07/08/25-11:02:19:776[Default Executor-thread-1]: javax.ejb.EJBException: nested exception is: java.rmi.RemoteException: CORBA INTERNAL 0 No; nested exception is:
org.omg.CORBA.INTERNAL: :  vmcid: 0x0 minor code: 0x0  completed: No
at coop07._S_PRECISION_Remote_Stub.SPrecisioncall(_S_PRECISION_Remote_Stub.java:1101)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
Caused by: java.rmi.RemoteException: CORBA INTERNAL 0 No; nested exception is:
org.omg.CORBA.INTERNAL: :  vmcid: 0x0 minor code: 0x0  completed: No
at org.apache.yoko.rmi.impl.UtilImpl.createRemoteException(UtilImpl.java:206)
at org.apache.yoko.rmi.impl.UtilImpl.mapSystemException(UtilImpl.java:133)
at javax.rmi.CORBA.Util.mapSystemException(Util.java:84)
at coop07._S_PRECISION_Remote_Stub.SPrecisioncall(_S_PRECISION_Remote_Stub.java:1)
... 90 more
Caused by: org.omg.CORBA.INTERNAL: :  vmcid: 0x0 minor code: 0x0  completed: No
at org.apache.yoko.util.Exceptions.as(Exceptions.java:37)
...
... 90 more
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make private void java.math.BigDecimal.readObject(java.io.ObjectInputStream) throws java.io.IOException,java.lang.ClassNotFoundException accessible: module java.base does not "opens java.math" to unnamed module @65c33003
...
... 131 more

07/08/25-11:02:19:776[Default Executor-thread-1]: CSUException(): CSUException created:
07/08/25-11:02:19:776[Default Executor-thread-1]: com.ca.gen.csu.exception.CSUException:  [Function: EJBRMIDynamicCoopFlow.processException.EJBRMI.Exception]javax.ejb.EJBException: nested exception is: java.rmi.RemoteException: CORBA INTERNAL 0 No; nested exception is:
org.omg.CORBA.INTERNAL: :  vmcid: 0x0 minor code: 0x0  completed: No
at com.ca.gen.odc.coopflow.ejbrmi.EJBRMIDynamicCoopFlow.processException(Unknown Source)
...

07/08/25-11:02:19:779[Default Executor-thread-1]: JDBCTransactionManager::rollback(): Attempting to rollback all connections
07/08/25-11:02:19:779[Default Executor-thread-1]: JDBCTransactionManager::rollback(): Rolledback all connections
07/08/25-11:02:19:780[Default Executor-thread-1]: ServletResult.getErrors():
TIRM030E: Application failed - Updates have been backed out
TIRM031E: Failing procedure exit data follows:
TIRM032E: Last or current action block id = 0022020161
TIRM033E: Last or current action block name = C_PRECISION
TIRM034E: Last or current database statement = 0
TIRM035E: Current statement being processed = 0000000027
TIRM037E: Fatal Error was encountered ***
TIRM158E: A communication error was encountered on the client
 [Function: EJBRMIDynamicCoopFlow.processException.EJBRMI.Exception]javax.ejb.EJBException: nested exception is: java.rmi.RemoteException: CORBA INTERNAL 0 No; nested exception is:
org.omg.CORBA.INTERNAL: :  vmcid: 0x0 minor code: 0x0  completed: No

TIRM046E: Processing terminated ***
TIRM044E: Press OK to continue ***
==========

NOTE: When attributes have the Decimal Precision flag enabled Gen generates BigDecimal datatypes in the Java generated code.

Resolution

This is a known problem with JDK 17

Azure / azure-sdk-for-java Public > [BUG] Cannot de/serialize and persist BigDecimals with jdk-17
OpenLiberty / open-liberty > ejbRemote-3.2 InaccessibleObjectException with Java 17

Use the workaround from the link above i.e.
Add these lines to existing Liberty file /wlp/lib/platform/java/java9.options:

--add-opens
java.base/java.math=ALL-UNNAMED


NOTES
:

  • If using separate instances of Liberty for client and server deployment then both instances will require the above workaround.
  • The same problem occurs with JDK 21
  • The problem does not occur with JDK 11 or earlier.