将 JMS 消息从 MDB 显示到视图(JSF、SWING Applet 或其他任何)



我目前正在开发一个JMS系统。我已经能够开发发布服务器(JSF),订阅者(MDB),并且可以从MDB的onMessage方法将JMS消息打印到控制台。

我的问题是我无法在视图中显示它们:JSF,Applet或JTextArea摆动。

如何从 MDB 的 onMessage 方法调用给定小程序的 JTextArea?我试图从 MDB 实例化一个小程序对象

例如: TestApplet tst = new TestApplet() :然后进入onMessage方法,在将消息提取到变量testMessage我尝试:tst.textAtrea.append(testMessage);

在这里,我从容器中得到了一个错误。

除了上面的例子,我将不胜感激我的问题的任何其他解决方案(只想在视图中显示 JMS 消息,而不仅仅是在控制台上)

从 MDB 调用小程序的一部分是个坏主意。在成功执行 onMessage 方法之前,不会使用消息。我宁愿尝试将消息放在某个存储系统(文件或数据库)中,然后从这些资源中显示。

在您的方案中,您不能真正将 MDB 与 Swing 客户端一起使用。

相反

  • 删除 MDB
  • 实现独立的命令行 Swing 客户端以直接侦听队列。
  • 如果您在 Swing 应用程序中使用MessageListener,那么您也将在那里使用onMessage方法。
  • 无论如何,您必须注意从另一个线程更新 Swing 组件的方式: 您可以在此处找到详细信息:我们是否应该使用 EventQueue.invokeLater 在 Java 桌面应用程序中进行任何 GUI 更新?

任何其他客户端类型(JSF、小程序)将更加困难。

最新更新