fan*_*ncy 2 annotations ejb javabeans java-ee
我是JavaEE和EJB的新手.我用它做了我的前几步,但是基本的注释有很多东西,我不会得到,无论我花了多少时间用Google搜索和阅读电子书.也许有人可以帮忙或给我一个很好的解释.
@ Stateful/@ Stateless我想我理解了基本概念.但是默认使用哪一个?
@ManagedBean/@ Named @Named Annotaion是否与@ManagedBean相同,仅使用自定义名称?
@ Sessionscoped/@Requestscoped这些会干扰@Stateful/@ Stateless吗?根据我的理解,将@Stateless与@Sessionscoped配对是没有意义的,因为@Stateless bean位于服务器上的这个"Bean-Pool"中,用于单方法调用而不是用于持久的任务.根据这个逻辑,我认为拥有一个@Requestscoped @Stateful bean是没有意义的,因为在初始HTTP-Request之后,你的Bean与客户端"断开连接".
我让我的程序工作,但如果我有效率,如果我真的不知道我在做什么,我怎么能现在?
AD 1.无是"默认".一个EJB必须声明为一个EJB,你用它标注做,要么@Stateless,@Stateful,@Singleton,@MessageDriven.
如果您没有它们而不是EJB,那么就无法定义"默认"值.
AD 2. @ManagedBean事实上有两个:javax.faces one和javax.annotation one
坦率地说,我不知道在哪里@ManagedBean,从javax.annotation被真正使用.它声明bean 由容器管理,因此它的生命周期受到控制 - 但是容器控制它的是什么?不知何故,我觉得因为有它的过时@Named,javax.faces @ManagedBean,EJB的注释和批注CDI -所有的人都自己的注解的类定义为管理,但明确规定了管理它们的容器.
@Named定义了一个可以在JSF视图(UEL表达式)中使用的CDI bean.@ManagedBean定义一个JSF托管bean.通常它们可以互换使用,但是您应该注意一些差异,例如,@Named您使用的bean无法注释为JSF,@ViewScoped因为@ViewScoped只能应用于JSF托管bean.
AD 3.我认为您不应将CDI范围与EJB范围混合使用.这是经常混淆的事情,如果未来的Java EE解决这个问题会很好.
EJB bean(@Stateless/ @Stateful)有自己的生命周期和CDI bean(@SessionScoped,@RequestScoped)有自己的生命周期.
我不确定你会通过混合这些注释得到什么 - 也许是一个例外,也许是一些黑魔法的错误,或者它可能实际上按你的意愿工作.
我想它完全依赖于实现者,因为我不记得它在EJB/CDI规范中的定义.我不会依赖它.
| 归档时间: |
|
| 查看次数: |
591 次 |
| 最近记录: |