java - 当我在消息驱动 bean 上收到 JMS 消息时,如何通知 cometd 服务器实例?

标签 java servlets ejb atmosphere cometd

我在某处读到,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/

相关文章:

Java 小服务程序 : RequestDispatcher doesn't work doesn't redirect paths

java - servlet 的 doGet 内的数据库查询

java - 动态远程EJB调用

java - 如何使用 multipart/form-data 发布 ajax 调用?

java - 1分钟内未成功则中止操作

java - 使用什么代替 ArrayList 对数据进行分组?

java - FileChannel.read(ByteBuffer) 是否像 RandomAccessFile.readFully(byte[]) 一样工作?

java - EJB-GWT。通知 GWT(javaScript) 客户端发生的一些事件

java - EJB 的类名

java - 示例多线程程序