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