java 系统关闭事件如何浏览器相关的触发

有一个系统a,当系统a关闭时,会触发一些事件;
现在的问题是:如何准确触发?

一般关闭系统有几种方式:
1. 大家习惯直接点击浏览器页面的“×”来关闭;
2.点击系统里的“退出系统”按钮来关闭;

点击浏览器页面的×来关闭时:
在jsp页面设置:window.close() window.beforeload()啥的,但这个我用ie浏览器能触发,而且这个能触发不是很稳定,时灵时不灵的;其他浏览器里window方法不管用;这个好像跟浏览器兼容性有关;
用HttpSessionListen来监听,但session的生命周期是设定好的特定时间,你不能保证客户一定是在这个时间里退出系统的,这两者没法同步,逻辑上没法用;

故想问问大家都是怎么处理的?
这个功能是为了做单点登录功能,单点登录的基本逻辑是:一个用户登录后把门锁着,禁止其他地点的同一用户再登录,等这一用户退出时,得把门打开,允许其他地的同一用户登录;所以用户退出时得把门打开,难点在如何判定捕捉到用户退出事件;

数据库可以记录该账号用户最后退出时间,然后别的地点同一账号登录的时候把当前账号的最后退出时间取出来进行判断,如果没有退出时间说明该账号正在登陆,如果有时间就说明没有登录 就可以登录