2021-03-08 15:36

@一路走来 web应用如果部署成多实例实现负载均衡和故障转移,肯定就需要使用分布式session了啊。登录可以使用cookie,也可以集成单点登录,但也会需要这种分布式session的。并不是分布式都是做api接口的。

2021-03-05 11:02

@JFinal 看来还是有不少人很期待JFinal的Redis插件能支持哨兵或则集群模式的。强烈建议官方能跟根据redisson重新封装一套redis插件。除了能对redis读写,还能支持例如分布式锁这些高级功能。

2021-03-05 10:57

@海哥 JBoot已经做得很好了。我也从JBoot里学了很多东西。只是我这里自己封装了一套方便自己开发使用。自从换到undertow上,也就不再考虑其他web容器了。只要能让我尽快打完收工,尽早回家陪“女朋友”就行了。^_^

2021-03-03 11:29

@北流家园网 结合@JFinal的解释以及websocket的特性,websocket的session是不能序列化的。你这个问题,要通过两个步骤解决:第一:解决后台抛的异常问题,我观察在热加载的时候,其实是要回调onStop方法的,在这个方法里,关闭所有已经连上的websocket的session。这样就不会抛那个XNIO007007: Thread is terminating异常了。第二步,你的客户端一定要增加断线重连机制,我是通过发心跳实现的断线重连。这样,你后台一旦触发热部署,会先关闭所有已经连接的websocket,然后客户端会触发断线重连,就会重新连接上服务器。回复通信。

2021-03-02 12:11

@JFinal 可以。分享里好像不能传附件,那个SessionManager代码需要传上来。

2021-03-02 09:41

@JFinal,已经搞定了,就是退出的时候,如果有正在通信的websocket,就会抛这个异常,说通道已经关闭。我在退出之前,把所有连接都关闭。就没事了。
另外,我在另外一个反馈里提的把自定义的SessionManager配置进undertow也已经搞定了。当然,如果波总能官方内置肯定是更好。

2021-03-01 15:06

@JFinal 没有带-9参数,带-9参数,就没有onStop的回调了。我刚才考虑是不是因为有客户端已经连上到这个服务器端实例,然后我退出服务,websocket服务器还在和客户端连接着,然后就会抛这个异常。我刚才在onStop里把该服务实例里所有创建的websocket的session都close掉。就没有这个异常抛出了。对强迫症来说,看起来清爽多了。

2021-03-01 14:12

@JFinal,我的也有这个问题,用到undertow的websocket。正常使用环境的时候有几百个用户在线,后台用3个实例做分布式websocket,如果服务器端用jfinal.sh stop停止的时候,该实例会抛这个异常。因为我的前端做了故障重连机制,所以客户端会自动重连到其他服务器端。只是这个异常看起来很别扭。下面提示贴图:


截屏2021-03-01 下午2.01.57.jpg

2021-02-27 12:58

@SuperEric,成功了,测试运行正常。这回分布式部署的session处理看起来就清爽多了,再也不需要自己定义拦截器了。分布式和单机在使用上完全没有区别了。

2021-02-27 01:14

@北流家园网,我也遇到这样的问题。后台只要修改代码触发热加载,就会抛这个异常。但因为我前端页面实现了断开自动重连,所以,从使用上来说,避免了出错。只是后台抛这个异常,看起来别扭!

2021-02-24 15:09

建议把所有字符集都统一成utf8,微软很气蛋,总是默认gbk或则iso8859-1

2021-02-24 15:08

没有要求,从最早的版本到最新的版本,都是兼容的。

2021-02-22 15:56

字符集,字符集,字符集!重要的事情说三遍!