session에 document를 레디스를 통해 저장했다가 다른 WAS에서 세션을 로드시 cglib proxy 객체 때문에 다시 로드하지 못하는 이슈를 해결하기 위해 찾아보면서 방법들을 정리해본다.
1. 데이터를 전달해야될경우 시리얼라이즈 하기 위해 DTO에 매핑한다.
2. dbref 어노테이션으로 lazy loading을 했을 경우 해당 필드는 LazyLoadingProxy에 캐스팅할수 있다.
//target db ref field
if (object instanceof LazyLoadingProxy) {
LazyLoadingProxy proxy = (LazyLoadingProxy)object;
target = proxy.getTarget();
}
3. spring cglib proxy객체를 생성한것이기 때문에 리플렉션으로 접근하는 방법도 있다.
Field field = object.getXX().getClass().getDeclaredField("CGLIB$CALLBACK_0");
field.setAccessible(true);
Object dynamicAdvisedInterceptor = field.get(object.getXX());
Field resultField = dynamicAdvisedInterceptor.getClass().getDeclaredField("result");
resultField.setAccessible(true);
....
'Spring' 카테고리의 다른 글
2) Spring Boot Validation - Custom Annotation (0) | 2019.12.02 |
---|---|
Spring Boot POST Encoding EUC-KR 한글깨짐(UTF-8)현상 (1) | 2019.11.18 |
1) Spring Boot Validation - Annotation 메세지 & Exception 에러 발생시 동작 설명 (0) | 2019.06.14 |
Spring Boot Jwt인증시 static 리소스 CSRF토큰 재발급 문제 (0) | 2019.06.11 |
몽고디비 Spring Data Mongodb 설정 (auth 및 replicaSet ) (0) | 2019.04.12 |
댓글