每次去请求一次后台controller 就会出现rg.eclipse.jetty.server.session.UnwriteableSessionDataException:

2018-10-31 17:24:04

[WARN]-[Thread: qtp984213526-14]-[org.eclipse.jetty.server.session.SessionHandler.complete()]: 

org.eclipse.jetty.server.session.UnwriteableSessionDataException: Unwriteable session node0xyx88gn7c20ootfof94vyqf50 for node0__0.0.0.0

at org.eclipse.jetty.server.session.FileSessionDataStore.doStore(FileSessionDataStore.java:376)

at org.eclipse.jetty.server.session.AbstractSessionDataStore.store(AbstractSessionDataStore.java:103)

at org.eclipse.jetty.server.session.AbstractSessionCache.put(AbstractSessionCache.java:537)

at org.eclipse.jetty.server.session.SessionHandler.complete(SessionHandler.java:371)

at org.eclipse.jetty.server.session.SessionHandler.complete(SessionHandler.java:388)

at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1577)

at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)

at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)

at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)

at org.eclipse.jetty.server.Server.handle(Server.java:503)

at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)

at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)

at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)

at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)

at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)

at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)

at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)

at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)

at java.lang.Thread.run(Thread.java:745)

Caused by: java.io.NotSerializableException: java.lang.ThreadLocal

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)

at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)

at org.eclipse.jetty.server.session.FileSessionDataStore.save(FileSessionDataStore.java:537)

at org.eclipse.jetty.server.session.FileSessionDataStore.doStore(FileSessionDataStore.java:369)

... 23 more







每次发起请求就会出现这个异常 但是不影响使用 是应该序列化 没有序列化吗

评论区

JFinal

2018-10-31 19:25

应该是你往 session 中存放了一类数据,这类数据无法被 session 持久化

看一下 JettyServer.java 源码的 void persistSession(Server server) 方法,是用来在重启项目时先保存 session 到文件之中,便于在开发类似登录功能时免除反复的登录,提升开发体验

解决办法是找到那个被保存在 session 中,而不能被持久化的对象,不要将它放在 session 之中,注意这个对象可能深藏在对象的对象的对象之中,所以要根据异常提示细心追踪

还有一个办法是继承一下 JettyServer,在报异常的地方用一个 try catch ,不让它抛出异常

michelle

2018-11-01 10:04

@JFinal 感谢波哥, 这个异常是不是不影响 正常使用啊,还有我要是部署到生产环境 走tomcat就不会有这个异常了,这个只是用jettyServer 启动的时候才报是不

JFinal

2018-11-01 11:02

@michelle 这个功能仅仅是开发时用的,功能在 JettyServer.java 中,你生产环境完全用不到这个类,所以生产环境完全无影响

chcode

2019-04-12 17:30

我用udertow的时候也遇到类似的问题,我找了半天也没找到是哪个对象没有实现序列化

JFinal

2019-04-12 17:36

@chcode 仔细看异常提示,其中会告诉你是哪个对象不能被存放

jettyserver

2019-09-02 16:38

我也遇到数类似的问题,报错原因:Caused by: java.io.NotSerializableException: com.jfinal.plugin.activerecord.Table,搞了半天还是解决不了,怎么办?

JFinal

2019-09-02 21:22

@jettyserver 不要将 Table 这个对象放缓存,这个对象没有实现 Serializable 接口

热门反馈

扫码入社