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 outTIRM031E: Failing procedure exit data follows:TIRM032E: Last or current action block id = 0022020161TIRM033E: Last or current action block name = C_PRECISIONTIRM034E: Last or current database statement = 0TIRM035E: Current statement being processed = 0000000027TIRM037E: 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: NoTIRM046E: 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"/>
Gen 8.6 plus "Add Support for Liberty Application Server (Phase 2)" PTFs which provide the remote EJBRMI support (Gen 8.6 Solutions & Patches)
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 BaseContext07/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 BaseContext07/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_Remote07/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@601af51007/08/25-11:02:19:767[Default Executor-thread-1]: EJBRMIBeanInstance.doFlow(): Converting coop07.SPREC_IA to External View coop07.SPrecisionImport07/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: No07/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: No07/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: Noat 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: Noat 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 moreCaused by: org.omg.CORBA.INTERNAL: : vmcid: 0x0 minor code: 0x0 completed: Noat org.apache.yoko.util.Exceptions.as(Exceptions.java:37)...... 90 moreCaused 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: Noat 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 connections07/08/25-11:02:19:779[Default Executor-thread-1]: JDBCTransactionManager::rollback(): Rolledback all connections07/08/25-11:02:19:780[Default Executor-thread-1]: ServletResult.getErrors():TIRM030E: Application failed - Updates have been backed outTIRM031E: Failing procedure exit data follows:TIRM032E: Last or current action block id = 0022020161TIRM033E: Last or current action block name = C_PRECISIONTIRM034E: Last or current database statement = 0TIRM035E: Current statement being processed = 0000000027TIRM037E: 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.
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-opensjava.base/java.math=ALL-UNNAMED
NOTES: