浏览 3643 次
锁定老帖子 主题:为什么EJB3.0里面没有了home接口
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-12-12
但是在EJB3.0里面取消了这个接口,从JDNI查找的结果不是Home类,而直接是一个EJB的实例,代码如下: InitialContext context = new InitialContext(); Cart cart = (Cart) context.lookup("CartBean"); 注:Cart是一个Stateful的SessionBean. 如果这个Cart跟2.0一样也是一个RMI Stub的话,那么所有从JNDI查找出来的类应该是连接到同一个Skeleton的,这样的话应该是所有的Client得到的EJB状态是一样的。。。 但事实不是,每个客户端查找出来的EJB实例互相的状态是没有影响的,这个到底是为什么呢? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-12-12
EJB3就是为了简化这些东西而开发出来的。并不是没有了,而是被屏蔽了。
你不用担心拿到的EJB对象的生存状态,这些统一由容器管理。只要是在JNDI中注册了这个名字,那么就可以拿来直接用。 你说的这个Bean是有状态SessionBean,当然不会有互相影响的问题。 |
|
返回顶楼 | |
发表时间:2007-12-12
我个人觉得还是有必要去了解这些东西的,要不然Robin也不会费力的去写EJB实现原理了。EJB这个东西虽然屏蔽了很多东西,EJB虽然屏蔽了很多东西,比如分布式和事务,但是如果要使用好EJB还是要了解他到底是如何实现的。很多时候对EJB的滥用就是因为对这个东西不够了解造成的。
|
|
返回顶楼 | |
发表时间:2007-12-12
对于上面的问题我有一些思路了,虽然不同的客户端拿到是连接到同一个Skeleton的Stub但是在远程方法调用的时候会有一个唯一的id生成来标示不同的客户端,这样就实现了不同客户端的状态的隔离。就像http的Session id一样。
不知道我说得对不对 |
|
返回顶楼 | |