【发布时间】:2012-11-21 14:46:18
【问题描述】:
我正在尝试了解 CDI 事件的工作原理,以便在我的应用程序中实现它们的使用,其结构如下: 我有一个启动套接字服务器的 JCA 资源适配器。 然后我有一个映射为该资源适配器端点的 MDB。 现在,当我通过套接字服务器收到一条消息时,我想将此消息通知一个无状态 bean 池。此消息包含无状态会话 Bean 所需的数据,以根据来自 Web 服务的其他一些请求执行某些工作。
我创建了一个实现本地和远程接口的无状态会话 bean。 本地的声明了一个listenToRegistration方法。
@Stateless(...)
public class myBean implements MyRemoteInterface,MyLocalInterface{
...
public void listenToEvent(@Observes EventMessage eventMessage){
logger.info("gotcha!");
}
}
本地接口是这样定义的
@Local
public interface MyLocalInterface {
public void listenToEvent(@Observes EventMessage eventMessage);
}
从JCA Resource Adapter接收的MDB是这样的
@MessageDriven(...)
public class messagerMDB implements MessageEndpoint {
@Inject
Event<EventMessage> events;
...
@Override
public void onMessage(String message) throws Exception {
...
events.fire(message);
}
}
现在,假设在某个时间点我的池中有 20 个 myBean 实例。 当我收到一条消息时,我希望阅读 20 次“gotcha”。我说的对吗?
【问题讨论】:
标签: jakarta-ee ejb cdi