客户端创建的session和服务端的session是一一对应的吧,通过sessionId来关联?
客户端创建的session基本和服务端有些相似,都是会保存唯一标示sessionid,还有其他session的配置
客户端的session有时会无端的变为null 您遇到过这种情况吗 而且这个session有关联关系 不会出现垃圾回收的情况
session不可能为null的,只能说session里面的connection为null,getSession返回的对象不可能为null。
但是进行了几次execute就自己变为null 很奇怪
你们是不是自己是设置session为null啊
这个肯定没有
你今天操作客户端做连接了吗?假如有,一定会有Authenticating user
的日志的,不然就是你连错数据库了
这个异常不是每次都出现,偶尔出现
那你贴debug的打印吧,从代码层面看,这个对象通过池拿到就不可能是null,只有有用户说出现null,那是人家自己设置为null了,初始化session的时候为null,但是拿session失败了,流程还是往下走
我们就一个库 不会连错库的
不管是否偶尔,你只要今天操作了,服务就一定有日志,所以先确定服务端有没有收到消息,都没收到消息,你的连接就有可能连的不是这个服务。
有今天的日志 我刚才看错文件了
库保证没有连错
现在代码层面是这样的:
我们利用threadlocal来实现了每个线程都会维护一个session,再利用动态代理来释放session:
现在偶尔会出现三个问题:
1、就是上面的提到的session过期 auth报的
2、每个线程返回内容有串行 A线程返回了B线程的内容
3、broken pipe
你可以把你们的代码打包出来,我看下,你们应该多线程用了session,不然问题2不会出现,问题3肯定连接断开了,要么服务端重启过,要么就是连接idle时间过长,连接断开了
每一个线程都拥有独立的session 多线程情况下 也是线程安全的呀
并且sessionid都是不一样的
太多用户用错了,你还是贴出来吧,后面版本应该就不会这样了。