Gen 8.6 Java EJB server is deployed to a Liberty Application Server server instance.
Gen 8.6 Web Generation client is also deployed to a separate Liberty server instance to the EJB server.
The client is using remote EJBRMI to call the server and so the client commcfg.properties files has:*=EJBRMI Y fqdn:2809 server_ear_file
(fqdn is the Fully Qualified Domain Name of the Liberty EJB server instance host)
Trying to call an EJB which has a Procedure Step (PStep) name containing NLS characters results in this error:[Function: EJBRMIDynamicCoopFlow.processException.EJBRMI.Exception]javax.ejb.EJBException: nested exception is: java.rmi.RemoteException: CORBA BAD_OPERATION 0 No; nested exception is: org.omg.CORBA.BAD_OPERATION: : vmcid: 0x0 minor code: 0x0 completed: No
Calling any other EJB server which does not have NLS characters in the Procedure Step (Pstep) name is successful.
Gen 8.6 plus "Add Support for Liberty Application Server (Phase 2)" PTFs which provide the remote EJBRMI support (Gen 8.6 Solutions & Patches)
This was found to be due to an issue with IBM's Liberty CORBA implementation, and how NLS characters are handled when present in a corbaname URL.
The problem only occurs when the client is running under a different Liberty instance than the Liberty EJB server instance.
The problem can occur with any type of Gen client application i.e.
The Gen runtimes have been updated to address "CORBA BAD OPERATION" communication errors between a client and a server.
However, similar CORBA errors may be encountered for these scenarios:
In such cases the following solutions have been tested successfully:
-Dfile.encoding=iso-8859-1 -Djava.awt.headless=false-Dfile.encoding=iso-8859-1 NOTES:
Initially when the problem was found using JDK 21 on Windows the encoding setting "-Dfile.encoding=COMPAT" was tested successfully.
However it was not successful when tested on Linux.
The Linux server had a locale already set to UTF-8. The COMPAT encoding looks at the OS and locale settings to determine how to set the file.encoding property.
Since the locale was already UTF-8, the file.encoding property continued to be set to UTF-8 even when using the COMPAT encoding. So that is likely why using COMPAT had no effect.
For the suggestion to use a file encoding of iso-8859-1, some users may need to use different values, for example:
To determine the default charset of the JDK this command can be used:java -XshowSettings -version
Liberty documentation references:
Open Liberty > Docs overview > Reference > Server configuration
Open Liberty > Docs overview > Reference > Directory locations and properties