我是新来的EJB。 我写了作用域@SessionScoped有状态会话bean。 然后,我将注入到EJB我的servlet。
@Local
@SessionScoped
@Statueful
public class CartServiceImpl implements CartService {
private int i = 0;
public int getI() {
return i++;
}
}
在我的servlet
@Inject
private CartService cartService;
.
.
.
out.print(cartService.getI());
然后我打开两个浏览器(IE,FF),并击中这个servlet。 在IE中我看到输出从0开始到n。 在Firefox中也看到我的输出从0开始到n。
然后,我创建创建具有瓶和战争的耳朵。 罐子包含了所有的EJB。 战争包含的servlet。
这是我如何注入EJB到servlet
@Resource(lookup = "java:app/ejb-beginner-ejb/CartServiceImpl")
private CartService cartService;
然后我试图请求来自IE和FF相同的servlet和我得到意想不到的输出。
输出是如下
在IE中我请求第一次,我得到0作为输出。 然后我刷新页面,我得到1作为输出。 然后,我搬到FF,发送请求的第一时间,我得到2作为输出,而不是0。然后我移动到IE和刷新页面,我得到3输出,而不是2。
我的理解是应用程序服务器创建状态EJB的只有一个实例。 我怎样才能解决这个问题?
是什么在战争中包装EJB和一个jar模块分开包装它们之间的区别?