Java SE 17에서 -- 불법 액세스 플래그 제거를 통해 Java 의 캡슐화가 증가되었습니다. JDK 내부를 숨기는 것 외에도 모듈 하나가 내보내지지 않은 다른 모듈 유형에 액세스하지 못하게 합니다.
이로 인해 개인 필드 및 메소드 값에 액세스해야 하므로 원격 EJB 에서 메소드 호출의 값을 리턴하고 매개변수에 대한 IIOP 직렬화에 문제가 발생할 수 있다.
이 변경으로 인한 문제는 일반적으로 일반 java.rmi.MarshalException으로 표시됩니다.
문제를 해결하려면 실패가 발생한 클라이언트 또는 서버에서 필수 모듈을 열어야 합니다. 기본적으로 Liberty 는 일반적으로 사용되는 여러 모듈을 엽니다. Liberty에 의해 이미 열려 있는 모듈을 보려면 wlp/lib/platform/java/java9.options 파일을 검토하십시오. 추가적인 추가 명령문은 jvm.options 파일에 추가되어야 합니다. 예를 들어,
--add-opens
java.base/java.lang= ALL-UNNAMED
이러한 변경사항에 대한 자세한 정보는 를 참조하십시오. JEP 403: JDK Internals 문자열을 캡슐화하십시오.