Ferne EJB-Aufrufe können auf Java SE 17 fehlschlagen

In Java SE 17 wurde die Kapselung von Java durch das Entfernen der Markierung -- illegal-access erhöht. Zusätzlich zum Ausblenden von JDK-Internals stoppt dies auch ein Modul aus dem Zugriff auf Typen eines anderen Moduls, die nicht exportiert werden. Dies kann Probleme mit der IIOP serielle Anordnung für die Parameter und Rückgabewerte für Verfahrensaufrufe für ferne EJBs verursachen, da auf nicht öffentliche Feld-und Verfahrenswerte zugegriffen werden muss.

Probleme aufgrund dieser Änderung werden in der Regel als generische java.rmi.MarshalExceptionangezeigt.

Um alle Probleme zu beheben, müssen Sie alle erforderlichen Module auf dem Client oder Server öffnen, auf dem der Fehler auftritt. Standardmäßig werden in Liberty mehrere gängige Module geöffnet. Um die Module anzuzeigen, die bereits von Liberty geöffnet wurden, sehen Sie in der Datei wlp/lib/platform/java/java9.options nach. Alle zusätzlichen offenen Anweisungen sollten der Datei jvm.options hinzugefügt werden. Zum Beispiel:

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

Weitere Informationen zu diesen Änderungen finden Sie in der Veröffentlichung JEP 403: Stark einbinden JDK Internals.