关于项目夹杂了B/S和C/S中hibernateSession开关的问题

问题如下:在一个高速公路违章车辆管理项目中(总体是B/S,其中还有C/S),采用SSH技术架构,前端监测点监测车辆信息,比如说速度,车牌信息等,然后自动发送到后台中心进行业务处理,其中会有对数据库的操作,管理人员通过浏览器登录该系统,可以进行违章车辆查看等等一系列操作,在B/S这块,session都是采用Spring给提供好的过滤器,dao也是继承HibenateDaoSupport,没有疑问我现在遇到了这样一个问题,前端监测点当监测到车辆信息的时候,会自动发送相关车辆信息给后台业务层,感觉就像个事件一样,车辆触发了监控点,这样就不完全是B/S了,而是我开始所说的C/S了现在,我业务层的事务仍然是交给Spring来处理,对数据库的操作也仍然是交给B/S中的dao处理,不想重新写dao接口的其他实现了,但是我的session开关我就不知道在哪儿处理了,在B/S中是交给Spring的过滤器的,而在这种c/s中,session在哪儿开关了,并且我要确保是和业务层以及dao中同一个Session,简单点说,就相当于在一个应用程序中,使用Spring+Hibernate,session如何处理开关,并且确保业务层dao层,以及我开启的session是同一个session
希望各位大侠们提供具体代码,帮助帮助小弟,非常感谢(附:原本想看下OpenSessionInView中Session是如何处理的,以便参考,但是看不懂)

不管你是通过什么方式来读取Hibernate,就是在业务请求开始的时候,打开Session,在业务请求结束的时候关闭会话.
这就衍生出一个问题,何时才能知道业务请求已经开始,何时才能知道业务请求结束? 这个问题可以转换成一个业务请求的拦截的问题. 拦截首选AOP, 如果不愿意引入第三方框架, 那就用动态代理来实现对业务请求方法的拦截:
拦截到业务请求方法时,打开Session;
执行业务请求方法;
拦截器关闭Session;
这种操作Session的操作模式是与B/S还是C/S无关的, 不妨试试.

看你的C/S方面如何访问你的服务器的,如果是RMI的话延迟加载基本很难了,没别的方法。
看看这个:
[url]http://forum.springframework.org/showthread.php?t=55217[/url]
[url]http://www.iteye.com/problems/6935[/url]

是Spring+Hibernate整合的话,可以用spring的拦截器去关闭Session,在web.xml的配置文件中,用过滤器实现

同意icyiwh的看法。

这个要想实现你的功能,估计在你的DAO层里要有判断是B/S调用,还是C/S调用,不同的调用SESSION的取值就不同,比如说,在业务层里要加逻辑判断如果是C/S调用,那么就要开启一个SESSION,然后将这个SESSION SET到相应的DAO层中的SESSION属性(改写这个属性,默认是SPRING的注入).整个业务层的逻辑执行完后,最后关闭该SESSION(是C/S调用的才关闭,要加判断),这样就做到了DAO层的SESSION是同一个SESSION.并且事务也是同一个

[color=red]这个要想实现你的功能,估计在你的DAO层里要有判断是B/S调用,[/color]
这个说错了应是在业务层