Remote EJB calls might fail on Java SE 17

In Java SE 17, the encapsulation of Java was increased through the removal of the --illegal-access flag. In addition to hiding JDK internals this also stops one module from accessing types of another module that are not exported. This can cause issues with IIOP serialization for the parameters and return values for method calls on remote EJBs since private field and method values must be accessed.

Issues due to this change will generally appear as a generic java.rmi.MarshalException.

To fix any issues, you will need to open any required modules on the client or server where the failure occurs. By default, Liberty opens several commonly used modules. To see the modules already opened by Liberty, look in the wlp/lib/platform/java/java9.options file. Any additional open statements should be added to the jvm.options file. For example:

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

For more information on these changes, see JEP 403: Strongly Encapsulate JDK Internals.