访问服务器静态资源的时候老是报错!Unable to deserialize into session。用到了redis

请叫我峰子 2016-11-25 03:00:24
现在tomcat服务配置了redis,但是不知道为什么有一个请求去访问静态资源的时候,老是报下边的错误。求指教!!!
Nov 25, 2016 2:46:13 PM com.orangefunction.tomcat.redissessions.RedisSessionManager sessionFromSerializedData
SEVERE: Unable to deserialize into session
java.lang.ClassNotFoundException: com.xxx.UserInfo
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1891)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1734)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.apache.catalina.util.CustomObjectInputStream.resolveClass(CustomObjectInputStream.java:151)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1609)
at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1075)
at com.orangefunction.tomcat.redissessions.RedisSession.readObjectData(RedisSession.java:116)
at com.orangefunction.tomcat.redissessions.JavaSerializer.deserializeInto(JavaSerializer.java:78)
at com.orangefunction.tomcat.redissessions.RedisSessionManager.sessionFromSerializedData(RedisSessionManager.java:534)
at com.orangefunction.tomcat.redissessions.RedisSessionManager.findSession(RedisSessionManager.java:436)
at org.apache.catalina.connector.Request.doGetSession(Request.java:3028)
at org.apache.catalina.connector.Request.getSessionInternal(Request.java:2642)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:430)
at com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve.invoke(RedisSessionHandlerValve.java:26)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:744)

Nov 25, 2016 2:46:13 PM com.orangefunction.tomcat.redissessions.RedisSessionManager sessionFromSerializedData
SEVERE: Unable to deserialize into session
java.lang.ClassNotFoundException: com.xxx.UserInfo
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1891)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1734)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.apache.catalina.util.CustomObjectInputStream.resolveClass(CustomObjectInputStream.java:151)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1609)
at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1075)
at com.orangefunction.tomcat.redissessions.RedisSession.readObjectData(RedisSession.java:116)
at com.orangefunction.tomcat.redissessions.JavaSerializer.deserializeInto(JavaSerializer.java:78)
at com.orangefunction.tomcat.redissessions.RedisSessionManager.sessionFromSerializedData(RedisSessionManager.java:534)
at com.orangefunction.tomcat.redissessions.RedisSessionManager.findSession(RedisSessionManager.java:436)
at org.apache.catalina.connector.Request.doGetSession(Request.java:3028)
at org.apache.catalina.connector.Request.getSessionInternal(Request.java:2642)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:466)
at com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve.invoke(RedisSessionHandlerValve.java:26)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:744)
...全文
1167 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
执着的小菜鸟 2017-09-12
  • 打赏
  • 举报
回复
楼主你好,我也遇到同样的问题,但是菜鸟一枚,我的applicationcontext里写了所有dao的bean,你说的 把bean单独取了出来,打了个jar包放到了tomcat的lib下边 是把所有的这些bean都复制到一个文件里,然后打成jar包吗,望指教
请叫我峰子 2017-08-22
  • 打赏
  • 举报
回复
引用 19 楼 ten1123love 的回复:
请问资源路径需要保留的话要怎么改才能解决问题。
我把bean单独取了出来,打了个jar包放到了tomcat的lib下边,就可以了
请叫我峰子 2017-08-22
  • 打赏
  • 举报
回复
我把bean单独取了出来,打了个jar包放到了tomcat的lib下边,就可以了
ten1123love 2017-08-18
  • 打赏
  • 举报
回复
请问资源路径需要保留的话要怎么改才能解决问题。
sky997283411 2016-12-08
  • 打赏
  • 举报
回复
我也遇到和你说的一样的问题,请问下大神是怎么解决的,急急!!!!!
请叫我峰子 2016-12-02
  • 打赏
  • 举报
回复
知道问题所在了。 这个应该不是redis和序列化这块的问题。这个确实是因为没有找到class。 具体是因为,我在配置tomcat的时候,配置了两个context,其中一个context配置了项目路径。另一个则是配置的项目访问资源的路径。访问资源的时候,走到了资源路径下边。但是这个时候session中存了用户的信息。这个时候redis反序列化的时候就会在资源路径下去找对应的类。所以导致了报错。
请叫我峰子 2016-11-25
  • 打赏
  • 举报
回复
引用 12 楼 wangjian223344 的回复:
对反序列化保持对象的唯一性的。 我怕你是复制的别的类的
加了,但是还是会有这样的问题。会不会是tomcat配置的问题?
请叫我峰子 2016-11-25
  • 打赏
  • 举报
回复
引用 14 楼 wangjian223344 的回复:
这个需要有的,不然不一定出什么问题。
那我晚上试试。
魔都 2016-11-25
  • 打赏
  • 举报
回复
这个需要有的,不然不一定出什么问题。
请叫我峰子 2016-11-25
  • 打赏
  • 举报
回复
引用 12 楼 wangjian223344 的回复:
对反序列化保持对象的唯一性的。 我怕你是复制的别的类的
这个bean里边是没有加这个。难道是这个的问题?
魔都 2016-11-25
  • 打赏
  • 举报
回复
对反序列化保持对象的唯一性的。 我怕你是复制的别的类的
请叫我峰子 2016-11-25
  • 打赏
  • 举报
回复
引用 10 楼 wangjian223344 的回复:
Serializable 的id 是不是一样了?不行改一下包的层次结构。再看看
你是说private static final long serialVersionUID = -3028420210672693463L; 这个吗?
魔都 2016-11-25
  • 打赏
  • 举报
回复
Serializable 的id 是不是一样了?不行改一下包的层次结构。再看看
请叫我峰子 2016-11-25
  • 打赏
  • 举报
回复
引用 8 楼 wangjian223344 的回复:
重写equals
没有不一样,都是一些属性和get,set方法。
魔都 2016-11-25
  • 打赏
  • 举报
回复
重写equals
魔都 2016-11-25
  • 打赏
  • 举报
回复
你这个类有什么跟别的类不一样的地方吗。比如象有重用equals 等
请叫我峰子 2016-11-25
  • 打赏
  • 举报
回复
引用 1 楼 wlwlwlwl015 的回复:
java.lang.ClassNotFoundException: com.xxx.UserInfo 找到这个类~ 你检查下web中间件下的这个类有没有被编译?
有个很奇怪的现象,就是我在一个已经登陆的浏览器上,会报这样的错误。但是如果在别的浏览器就不会有问题。会不会是因为有这个请求有带sessionid的原因?
请叫我峰子 2016-11-25
  • 打赏
  • 举报
回复
引用 4 楼 wlwlwlwl015 的回复:
[quote=引用 3 楼 u014725244 的回复:] [quote=引用 1 楼 wlwlwlwl015 的回复:] java.lang.ClassNotFoundException: com.xxx.UserInfo 找到这个类~ 你检查下web中间件下的这个类有没有被编译?
首先这个类是一个登陆的时候用到的用户信息的类,我现在是可以登录上来的,跳转页面也是正常的,而且看了classes文件里边这个是有的。[/quote]你这个类有继承Serializable吗?反序列化失败~ 还有检查一下包名是否一致[/quote] 是有继承Serializable的,而且,报名和报错的是一样的。
小灯光环 2016-11-25
  • 打赏
  • 举报
回复
引用 3 楼 u014725244 的回复:
[quote=引用 1 楼 wlwlwlwl015 的回复:]
java.lang.ClassNotFoundException: com.xxx.UserInfo 找到这个类~
你检查下web中间件下的这个类有没有被编译?

首先这个类是一个登陆的时候用到的用户信息的类,我现在是可以登录上来的,跳转页面也是正常的,而且看了classes文件里边这个是有的。[/quote]你这个类有继承Serializable吗?反序列化失败~ 还有检查一下包名是否一致
请叫我峰子 2016-11-25
  • 打赏
  • 举报
回复
引用 1 楼 wlwlwlwl015 的回复:
java.lang.ClassNotFoundException: com.xxx.UserInfo 找到这个类~ 你检查下web中间件下的这个类有没有被编译?
首先这个类是一个登陆的时候用到的用户信息的类,我现在是可以登录上来的,跳转页面也是正常的,而且看了classes文件里边这个是有的。
加载更多回复(2)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧