Если у меня есть bean-объект CDI с областью запроса, внедренный в EJB @MessageDriven
с использованием JMS, как показано ниже, могу ли я предположить, что любой данный экземпляр Foo
будет использоваться только одним вызовом onMessage
одновременно?
Другими словами, в следующем примере можно ли безопасно использовать переменные-члены в объекте Foo
для хранения состояния в подпрограммах, аналогично управляемому компоненту JSF @RequestScoped
?
Обратите внимание, что все в порядке, если один и тот же объект 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 = ...;
}
}