Я пытаюсь внедрить ejb без состояния с областью по умолчанию (@Dependent), в 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>
Как я понимаю,
- Нельзя указывать область действия для bean-компонента без состояния, кроме @ зависимого.
- Если вы внедрите объект @-зависимой области действия, он следует жизненному циклу клиента.Он никогда не передается.
Итак, я ожидаю, что для каждого сеанса контейнер будет вводить разные StatelessBean.Но, похоже, он вводит один и тот же во всех сеансах.
Любая помощь в том, почему это происходит?
Я использую GlassFish 3.1.
Спасибо.