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 내부 강력 캡슐화를 참조하십시오.