【发布时间】:2012-01-04 02:32:53
【问题描述】:
如果我使用 JMS 将请求范围的 CDI bean 注入到 @MessageDriven EJB 中,如下所示,我是否可以假设任何给定的 Foo 实例一次只能由单个 onMessage 调用使用?
换句话说,在下面的示例中,我是否可以安全地使用 Foo 对象中的成员变量来跨子例程存储状态,类似于 JSF @RequestScoped 托管 bean?
请注意,如果相同的 Foo 对象从一个 onMessage 调用到下一个调用顺序回收,则可以,只要每个 MessageDrivenBean 实例都有自己的 Foo 实例,这样两个请求会同时处理孤立。
@MessageDriven
public class MessageDrivenBean implements MessageListener {
@Inject
private Foo foo;
public void onMessage(Message m) {
foo.doSomething();
}
}
@Named
@RequestScoped
public class Foo {
private String property;
public void doSomething() {
property = ...;
}
}
【问题讨论】:
标签: jakarta-ee jms java-ee-6 cdi message-driven-bean