Le chiamate remote EJB potrebbero non avere esito positivo in Java SE 17

In Java SE 17, l'incapsulamento di Java è stato incrementato attraverso la rimozione del flag --illegal-access. Oltre a nascondere gli interni JDK, ciò impedisce anche ad un modulo di accedere ai tipi di un altro modulo che non vengono esportati. Ciò può causare problemi nella serializzazione IIOP dei parametri e restituire i valori per le chiamate del metodo su EJB remoti, poiché è necessario accedere al campo privato e ai valori del metodo.

I problemi dovuti a questa modifica appariranno generalmente come una generica java.rmi.MarshalException.

Per risolvere eventuali problemi, sarà necessario aprire tutti i moduli richiesti sul client o sul server in cui si verifica l'errore. Per impostazione predefinita, Liberty apre diversi moduli comunemente utilizzati. Per vedere i moduli già aperti da Liberty, accedere al file wlp/lib/platform/java/java9.options. È necessario aggiungere al file jvm.options le eventuali ulteriori istruzioni aperte. Ad esempio:

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

Per ulteriori informazioni su queste modifiche, consultare JEP 403: incapsulare fortemente JDK Internals.