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

任何帮助!

ruanhuibao 回答:Tomcat会话管理器的@事务和脱盐问题

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1329425.html

大家都在问