如果我有使用JMS注入到@MessageDriven
EJB中的请求作用域CDI bean,我可以假设任何给定的Foo
实例一次只能被一个onMessage
调用使用?@RequestScoped CDI注入到@MessageDriven bean
换句话说,在下面的示例中,我可以安全地使用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 = ...;
}
}
太棒了。这正是我所希望的,并且我通过将实例计数器放置在注入对象上进行了确认。 (它一开始并没有这样做,事实证明我从javax.faces中导入了@ RequestScoped注解,而不是正确的javax.enterprise注解。) – wrschneider 2011-12-16 22:16:56