我在某处读到,Cometd 是特定于容器的,我们无法注入(inject)到 EJB 容器中。我有一个应用程序,其中定义了 MDB,并且收到的消息应该以某种方式发送到 Web 客户端。可能吗?
我很感激任何意见。谢谢。
最佳答案
CometD 不是特定于容器的,它可以在任何使用异步 Servlet 的 Servlet 3 容器中工作。
CometD 依赖 Jetty其实现的类,并且在 Jetty 中部署时扩展性最好,但也有用户在 Tomcat、GlassFish 等中部署 CometD。
话虽如此,如果您将 CometD 部署到 JEE 服务器中并拥有 MDB,则可以轻松地将 MDB 消息转换为 CometD 消息,并让 CometD 将其发送给客户端。
如何将 MDB 连接到 CometD 的实际细节取决于您使用的框架(例如 Spring、CDI、自定义等),但通常 MDB 需要查找/通知 CometD 服务,并拥有 CometD 服务广播 CometD 消息。
您可以找到CometD server-side tutorial与您需要的非常相似(尽管它不使用 MDB)。在该教程中,MDB 的角色由 StockPriceEmitter
类扮演。
另请参阅 CometD reference manual欲了解更多信息。
关于java - 当我在消息驱动 bean 上收到 JMS 消息时,如何通知 cometd 服务器实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22209712/