Java SE 17 では、--illegal-access フラグの除去によって Java のカプセル化が増加しました。 これは、JDK 内部を隠すことに加えて、あるモジュールが別のモジュールのエクスポートされないタイプにアクセスしないようにもします。
プライベート・フィールドおよびメソッドの値へのアクセスが必要なため、これにより、リモート EJB でのメソッド呼び出しでパラメーターおよび戻り値の IIOP シリアライゼーションの問題が起こる可能性があります。
通常、この変更による問題は汎用 java.rmi.MarshalException で表されます。
問題を修正するには、障害が発生するクライアントまたはサーバーで必要なすべてのモジュールをオープンする必要があります。 デフォルトで、Liberty はいくつかの一般的に使用されるモジュールをオープンします。 Liberty によって既にオープンされているモジュールを確認するには、wlp/lib/platform/java/java9.options ファイルを参照してください。 追加の open ステートメントは jvm.options ファイルに追加する必要があります。 例:
--add-opens
java.base/java.lang=ALL-UNNAMED
これらの変更について詳しくは、 を参照してください。 JEP 403: JDK 内部を強くカプセル化します。