如果我有使用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