Websphere 8.5 CDI触发Observer多次

时间:2014-10-22 08:20:10

标签: cdi java-ee-6 websphere-8

我正在使用Websphere 8.5并且遇到一个简单的CDI事件的问题。

发射EJB是无状态的并且发出一次事件。我在pojos构造函数中使用断点测试了它,因此没有其他地方可以触发此事件。

我已经检查了我的导入,但是我使用了正确的导入。有没有人发现我的错误或我只是在另一个错误中运行? CDI的实施似乎已经过时了。

我在没有TransactionAttribute且在调试模式之外进行了测试。不会改变任何东西。

提前致谢! 米

import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.enterprise.event.Event;
import javax.enterprise.event.Observes;
import javax.enterprise.event.TransactionPhase;

@Stateless
public class CreateService {
   // Injecting the emitter
   @Inject
   private Event<CreateEvent> createEmitter;

   public void create(String id) {
      // fire the create event
      CreateEvent event = new CreateEvent(id);
      createEmitter.fire(event);
   }

   @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
   public void postCreate(@Observes(during = TransactionPhase.AFTER_SUCCESS) CreateEvent event) {
      System.out.println("Received " + event.getId());
   }
}

事件生产者和消费者在同一个EJB中。

public class CreateEvent {
    private String id;


    public CreateEvent() {
    }

    public CreateEvent(String id) {
        super();
        this.id = id;
    }

    public String id() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "CreateEvent ["
                + (id != null ? "id=" + id
                        : "") + "]";
    }
}

[10/22/14 9:58:53:231 CEST] 000000a2 SystemOut     O   Received A622665
[10/22/14 9:58:53:231 CEST] 000000a2 SystemOut     O   Received A622665
[10/22/14 9:58:53:231 CEST] 000000a2 SystemOut     O   Received A622665
[10/22/14 9:58:53:246 CEST] 000000a2 SystemOut     O   Received A622665
[10/22/14 9:58:53:246 CEST] 000000a2 SystemOut     O   Received A622665

0 个答案:

没有答案