@RequestScoped Внедрение CDI в компонент @MessageDriven

Если у меня есть компонент 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 = ...;
     }
 }
6
задан wrschneider 3 January 2012 в 18:32
поделиться