0
我想将ejb3注入与jndi查找方法进行对比,注入是否将特定的代理实例绑定到servlet?如果是这样,那么在集群环境中,如此紧密的运行时绑定可能会导致效率低下。在servlet中ejb3注入的并发含义是什么?
我想将ejb3注入与jndi查找方法进行对比,注入是否将特定的代理实例绑定到servlet?如果是这样,那么在集群环境中,如此紧密的运行时绑定可能会导致效率低下。在servlet中ejb3注入的并发含义是什么?
对于无状态,EJB代理与它的支持实例(通常是共用池)是一对多的,并且可以安全地注入到servlet中。
对于Singleton,EJB代理与它的后台实例是1对1的,但容器(或bean)负责确保并发调用是安全的还是不允许的,这取决于每个方法的业务逻辑。 @AccessTimeout可以用来控制等待锁定的时间。
对于有状态,EJB代理与其背景实例是1对1,并且不安全,无法注入到servlet中。从EJB 3.1开始,有状态会话Bean并发性允许一些安全性,但由于有状态会话Bean超时,将有状态会话Bean注入到Servlet中不太可能有用。
干净的答案。另外,@AccessTimeout是一种很好的方式来指定与多线程访问相关的“如果我的bean正忙”情况。对大量并发系统有明确的好友,并可供所有会话bean使用。 – 2011-06-08 03:51:04
谢谢:-)。更新了注意SFSB并发的答案(尽管我仍然没有将SFSB注入到servlet中很有用)。 – 2011-06-08 23:15:05
没错,你可能会想要查看它,并保存它的请求或者可能将它塞入会话中。注意无状态bean上的@AccessTimeout指定可以等待池中的实例多长时间。在单例中,它指定了您可能等待获得锁的时间。 – 2011-06-09 00:01:50