如何解决Tomcat会话管理器的@事务和脱盐问题
我试图使用tomcat会话管理器在tomcat重新启动时保持已登录用户的会话,我在会话中处理了所有类以实现可序列化,一切正常,并且tomcat在重新启动时保留了会话,但是当使用 @时在函数上方的事务性(org.springframework.transaction.annotation.Transactional)注释可保留任何事务,例如:
@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 之间的关系,以及为什么序列化失败的原因,我无法提供有用的信息!
我正在使用:
- Tomcat 8
- Spring MVC
- Java 8
- 对于tomcat会话管理器,我使用MemcachedBackupSessionManager
任何帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。