만약 Order service에서 Order 객체를 세션에 넣은 상태에서 Account service에 접속할 시, Account service에서 역직렬화를 할 수 있어야 하기 때문에 Order 클래스를 찾는다.
하지만 Account service에 Order 클래스가 정의되어 있지 않다면, 역직렬화를 못하기 때문에 에러가 발생한다.
따라서 세션에 남은 객체들의 타입은 모든 서비스에서 다 정의될 필요가 있다.
에러 코드: 500
에러 메시지:
org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to deserialize payload. Is the byte array a result of corresponding serialization for DefaultDeserializer?; nested exception is org.springframework.core.NestedIOException: Failed to deserialize object type; nested exception is java.lang.ClassNotFoundException: org.mybatis.jpetstore.domain.Order
org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.deserialize(JdkSerializationRedisSerializer.java:84)
org.springframework.data.redis.core.AbstractOperations.deserializeHashValue(AbstractOperations.java:355)
org.springframework.data.redis.core.AbstractOperations.deserializeHashMap(AbstractOperations.java:299)
org.springframework.data.redis.core.DefaultHashOperations.entries(DefaultHashOperations.java:247)
org.springframework.data.redis.core.DefaultBoundHashOperations.entries(DefaultBoundHashOperations.java:183)
org.springframework.session.data.redis.RedisIndexedSessionRepository.getSession(RedisIndexedSessionRepository.java:457)
org.springframework.session.data.redis.RedisIndexedSessionRepository.findById(RedisIndexedSessionRepository.java:429)
org.springframework.session.data.redis.RedisIndexedSessionRepository.findById(RedisIndexedSessionRepository.java:251)
org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper.getRequestedSession(SessionRepositoryFilter.java:356)
org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper.getSession(SessionRepositoryFilter.java:290)
org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper.getSession(SessionRepositoryFilter.java:193)
org.springframework.web.util.WebUtils.getSessionId(WebUtils.java:359)
org.springframework.web.servlet.FrameworkServlet.publishRequestHandledEvent(FrameworkServlet.java:1145)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1023)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
javax.servlet.http.HttpServlet.service(HttpServlet.java:529)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:142)
org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:82)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)
만약 Order service에서 Order 객체를 세션에 넣은 상태에서 Account service에 접속할 시, Account service에서 역직렬화를 할 수 있어야 하기 때문에 Order 클래스를 찾는다.
하지만 Account service에 Order 클래스가 정의되어 있지 않다면, 역직렬화를 못하기 때문에 에러가 발생한다.
따라서 세션에 남은 객체들의 타입은 모든 서비스에서 다 정의될 필요가 있다.
에러 코드: 500
에러 메시지: