JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容么?
看到有网友提到这个问题,差了查资料,其实这两个问题都是有肯定答案的,不过最好还是不要这样做。如果session里面所有的对象都是序列化的,应该可以把HttpSession作为一个参数传到EJB的方法,这样的话就是值传递,相当于这个HttpSession是自读的,如果在EJB里面改变session的值,不会影响到Servlet容器里面的HttpSession,但是因为EJB的远程接口之间是使用远程引
·
看到有网友提到这个问题,差了查资料,其实这两个问题都是有肯定答案的,不过最好还是不要这样做。
如果session里面所有的对象都是序列化的,应该可以把HttpSession作为一个参数传到EJB的方法,这样的话就是值传递,相当于这个HttpSession是自读的,如果在EJB里面改变session的值,不会影响到Servlet容器里面的HttpSession,但是因为EJB的远程接口之间是使用远程引用,也就是引用传递, 所以把HttpSession作为参数传到EJB对象是可能的,但是这样是有违面向对象的原则的,因为这样的话就在EJB和前端的HttpSession之间创建了一个不必要的依赖关系,而且这样的话EJB对基于Http的客户端也产生了依赖(EJB也有可能给非Http的客户端服务的),其实与其传一整个HttpSession对象到EJB, 还不如另外创建一个类似结构的对象过去,然后在EJB进行处理以后然后在返回客户端。
如果session里面所有的对象都是序列化的,应该可以把HttpSession作为一个参数传到EJB的方法,这样的话就是值传递,相当于这个HttpSession是自读的,如果在EJB里面改变session的值,不会影响到Servlet容器里面的HttpSession,但是因为EJB的远程接口之间是使用远程引用,也就是引用传递, 所以把HttpSession作为参数传到EJB对象是可能的,但是这样是有违面向对象的原则的,因为这样的话就在EJB和前端的HttpSession之间创建了一个不必要的依赖关系,而且这样的话EJB对基于Http的客户端也产生了依赖(EJB也有可能给非Http的客户端服务的),其实与其传一整个HttpSession对象到EJB, 还不如另外创建一个类似结构的对象过去,然后在EJB进行处理以后然后在返回客户端。
更多推荐
已为社区贡献2条内容
所有评论(0)