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 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-02-27 12:58
@SuperEric,成功了,测试运行正常。这回分布式部署的session处理看起来就清爽多了,再也不需要自己定义拦截器了。分布式和单机在使用上完全没有区别了。
2021-02-27 01:14
@北流家园网,我也遇到这样的问题。后台只要修改代码触发热加载,就会抛这个异常。但因为我前端页面实现了断开自动重连,所以,从使用上来说,避免了出错。只是后台抛这个异常,看起来别扭!