我正在使用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