我正在尝试使用默认(@Dependent)范围注入一个无状态ejb,在一个有状态的ejb中使用(@SessionScoped)。
StatelessBean.java
@Stateless
@LocalBean
public class StatelessBean implements Serializable {
private static final long serialVersionUID = -9166485686181431397L;
private long stamp; // + getter/setter
public StatelessBean() {
super();
}
@PostConstruct
void init() {
setStamp(new Random().nextLong());
System.out.println("Created stateless " + getStamp());
}
}
StatefulBean.java
@SessionScoped
@Named("bean")
@Stateful
@LocalBean
public class StatefulBean implements Serializable {
private static final long serialVersionUID = 8358897101178976319L;
@Inject
private StatelessBean statelessBean; // + getter/setter
@PostConstruct
void init() {
System.out.println("Created stateful " + new Random().nextLong());
}
public long getStamp() {
return getStatelessBean().getStamp();
}
}
scope.xhtml
.
.
.
<h:body>
<h:outputText value="#{bean.stamp}" />
</h:body>
</html>
据我了解,
所以,我希望对于每个会话,容器都会注入不同的StatelessBean。但它似乎在所有会议中注入相同的一个。
有关为何发生这种情况的任何帮助?
我正在使用GlassFish 3.1。
感谢。
答案 0 :(得分:0)
我认为你的问题是你的无状态bean并非真正的无状态。容器可以自由重复使用,因为它应该是无状态的,但你将其解释为错误。