Java @tomcat会话管理器的事务性和淡化问题
我试图在tomcat重启时使用tomcat会话管理器来持久化登录用户的会话,我在会话中处理所有类以实现可序列化,一切正常,在重启时tomcat保持会话,但使用@Transactional(org.springframework.transaction.annotation.Transactional)函数上方的注释,用于保存exmaple的任何事务:Java @tomcat会话管理器的事务性和淡化问题,java,spring-mvc,tomcat,deserialization,cglib,Java,Spring Mvc,Tomcat,Deserialization,Cglib,我试图在tomcat重启时使用tomcat会话管理器来持久化登录用户的会话,我在会话中处理所有类以实现可序列化,一切正常,在重启时tomcat保持会话,但使用@Transactional(org.springframework.transaction.annotation.Transactional)函数上方的注释,用于保存exmaple的任何事务: @Repository("activityLogDao") public class ActivityLogDao exten
@Repository("activityLogDao")
public class ActivityLogDao extends BasicDaoImpl {
@Transactional
public void log(long AccountId) {
try {....}
当再次重新启动tomcat时,它会给我一个序列化错误
de.javakaffee.web.msm.TranscoderDeserializationException: Caught CNFE decoding data
at de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes(JavaSerializationTranscoder.java:186)
at de.javakaffee.web.msm.TranscoderService.deserializeAttributes(TranscoderService.java:167)
at de.javakaffee.web.msm.TranscoderService.deserialize(TranscoderService.java:124)
at de.javakaffee.web.msm.MemcachedSessionService.loadFromMemcached(MemcachedSessionService.java:1155)
at de.javakaffee.web.msm.MemcachedSessionService.findSession(MemcachedSessionService.java:605)
at de.javakaffee.web.msm.MemcachedBackupSessionManager.findSession(MemcachedBackupSessionManager.java:201)
at org.apache.catalina.connector.Request.doGetSession(Request.java:2933)
at org.apache.catalina.connector.Request.getSessionInternal(Request.java:2586)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:431)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at de.javakaffee.web.msm.RequestTrackingHostValve.invoke(RequestTrackingHostValve.java:158)
at de.javakaffee.web.msm.RequestTrackingHostValve.invoke(RequestTrackingHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:676)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:676)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1533)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1489)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: com.comp.ActivityLogDao$$EnhancerBySpringCGLIB$$64dded09
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
我搜索了很多来了解序列化和@Transactional之间的关系,以及它导致反序列化失败的原因,我找不到有用的东西我使用:
- 雄猫8
- 春季MVC
- 爪哇8
- 对于tomcat会话管理器,我使用MemcachedBackupSessionManager