Mar*_*hin 10 singleton annotations ejb javabeans
我有一个EJB,它需要是一个单独的和有状态的,因为它将成为一种连接池.我的问题是:
@Singleton注释定义EJB,那么默认情况下它是否为有状态,还是我必须同时定义它@Stateful?@Stateless注释吗?试图找到一些关于此的文件,但到目前为止没有运气,所以有知识的人请分享你的智慧,也许还有一两个链接.
per*_*ssf 13
EJB 教程显示EJB可以是Singleton或Stateful或Stateless.我从未试图使用过多个这样的注释,但我相信正确的做法是只使用其中一个注释.
从该链接:
Singleton会话bean在客户端调用之间保持其状态
所以,对你的问题:
如果我使用@Singleton注释定义EJB,那么它默认是有状态的还是我还必须用@Stateful定义它?
如果对于有状态你的意思是维持其状态的能力,答案是:是的,默认情况下,单身人士将是有状态的.
请记住,在某些特定情况下,Singleton的行为不像Singleton,请阅读本文.通常,如果您不在群集之外并且避免使用默认构造函数,则不会运行此类风险:您需要始终使用EJB的引用,方法是将EJB注入另一个EJB或Web客户端,方法是:
@EJB MyEJB myEJB;
Run Code Online (Sandbox Code Playgroud)
最后,看一下Java EE 6教程中关于EJB生命周期的这一部分,解释有状态和其他EJB之间的主要区别在于容器在其生命周期中被钝化的能力.这种差异是严格来说"单身人士默认有状态"这一陈述不正确的主要原因,但在你的问题背景下是正确的.