问题标签 [message-driven-bean]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8164 浏览

java - 配置 MDB 以侦听多个队列

我正在使用 EJB 3.1,我想配置一个 MDB 来监听多个队列。
我更喜欢通过 XML 定义队列名称,但通过注释定义其他定义。
这可以做到吗?

0 投票
1 回答
119 浏览

jakarta-ee - 处理入站消息后如何异步发布新的 JMS 消息?

我们有一个场景,在使用消息驱动 Bean 处理传入消息 A 之后,我们将后续消息 B 写入另一个队列。我们使用的是 Glassfish 3.1。

在这种情况下,一个目标是发布消息 B 可以异步进行,并且不需要是可靠的——也就是说,如果在处理完消息 A 之后我们尝试发布消息 B 并且它失败了,我们不会回滚对消息 A 的处理.

第二个目标是发布消息 B 不应阻塞或扩展覆盖消息 A 的事务的范围。我们希望覆盖消息 A 的事务尽快关闭,而不是在处理消息 B 时保持打开状态。

一个想法是为此目的创建一个带有@Asynchronous 标记的方法的特殊EJB,并在onMessage() 的末尾查找并调用该EJB。但是,我们不确定这是否是这种情况下的最佳做法。

我们对引入一个额外的编排解决方案(例如 ESB)不感兴趣,它可以处理这种情况和更复杂的情况。

0 投票
2 回答
2303 浏览

java - 同步 MDB 通信,最大池大小问题

我正在使用带有 Glassfish 的 Java Enterprise (3.1)。我有两个单独的 EAR,它们通过 JMS 同步通信。进一步来说:

EAR1 使用 JMS 消息来告诉 EAR2 做什么。EAR1 开始侦听来自 EAR2 (QueueReceiver.receive) 的回答。EAR2 接收到消息并进行相应的处理,然后将 JMS 消息连同输出一起发送回 EAR1。

这一切都很好。直到我得到这个例外:

所以看起来容器没有重用 MDB。相反,它会创建新的,直到我达到极限。我知道这是因为 EAR2 中的 MDB 使用 JMS 发回结果。我的猜测是,MDB 实例中仍然分配了一些资源,这会导致这种行为。

如果我只是使用 MDB 打印收到的消息,我可以整天继续发送消息,所以它肯定与 JMS 连接有关。

我已经在这两天了,所以如果有人愿意提供一些帮助,将不胜感激。

此代码整天有效:

虽然这个没有:

(我也尝试过使用更新更花哨的 EJB 东西,比如符号等,但也没有用......)

塞巴斯蒂安

0 投票
1 回答
6501 浏览

jakarta-ee - EJB3.0如何使用MDB

嘿,我是 j2ee 编码的新手。我的问题是关于 MDB。我已经设置了我的 weblogic 11g 服务器。并且队列已经建立。

我已经编写了客户端代码,它是一个将 msg 发送到队列的 java se 客户端。

我可以在我的 weblogic 管理控制台上看到队列中的消息。

但是,我在服务器端的 mdb 没有被调用。

谁能告诉我出了什么问题。我更喜欢使用 java 注释的解决方案。谢谢大家阅读本文。

这是我的服务器代码:

0 投票
1 回答
1358 浏览

spring - Spring Integration 和 Tomcat 解决方案与 Websphere MDB 解决方案:功能?

我们正在考虑在以下任一方面实施企业集成解决方案之间的选择:

  • Spring/Spring 集成/JMS/Spring Web MVC
  • Websphere 应用服务器/MDB/Spring

有什么优点/缺点?

对 WAS/MDB 解决方案在功能上的优势特别感兴趣。

干杯

保罗

0 投票
1 回答
2501 浏览

jakarta-ee - 如何停止向消息驱动 Bean 传递消息?

问题

是否可以(以编程方式)停止消息驱动 Bean,使其不消耗新消息,但像往常一样处理正在运行的事务?

(这是如何在取消部署之前停止消息处理的后续行动? )。

给定

  • 带有 JBoss 消息传递的 JBoss 4.2.3
  • 根据 EJB 2.0 的消息驱动 Bean

失败的尝试

  • 我想使用 MBean 方法stopDelivery,但遗憾的是它会立即关闭事务(请参阅错误#EJBTHREE-1870),从而导致很多异常。
  • 我试图在 JMX 控制台中将最大池大小减少到 0,但活动会话的数量根本不受影响。
  • 我可以停止队列,但我必须NameNotFoundException在生产者中处理 s 。
0 投票
1 回答
325 浏览

java - WAS 7.0 - MDB 中的默认拦截器

我在使用 Websphere 7.0 AS 中的默认拦截器向 MDB 提供建议时遇到问题。我已经使用 Glassfish AS 测试了相同的代码,它工作正常。奇怪的是,WAS 拦截器适用于无状态 bean,但不适用于 MDB。

0 投票
1 回答
882 浏览

weblogic - Weblogic MDB 实例变为零并且队列中的消息未被拾取

我通过本地绑定从 MQ 队列读取 MDB。有时我们注意到来自 MQ 队列的消息没有被拾取队列深度增加到 50000 并且实例数变为零。执行线程总数为 25。一台物理机中有 8 台托管服务器。

0 投票
2 回答
9033 浏览

deployment - 在 WebSphere 7 中将队列绑定到 EJB 3.0 MDB

我正在编写或尝试编写 WebSphere 7 上的 Baby's First MDB。我几乎没有头发了,我已经全力以赴试图让事情正常工作。看来我已经正确设置了所有内容但是当我将消息放入关联的队列时我没有得到任何响应。

这是 EAR 文件设置:

我找不到在 ejb-jar.xml 中定义队列的 JNDI 名称的任何语法,所以我改为:

  • 定义 WebSphere 激活规范。名称 SimpleMDBActivationSpec,JNDI 名称 jms/SimpleActivationSpec,目标 jms/SimpleMDBQueue。
  • 定义一个 WebSphere 队列。名称 SimpleMDBQueue,JNDI 名称 jms/SimpleMDBQueue,队列名称 SIMPLE.MDB.QUEUE。
  • 定义一个 MQ 队列,命名为 SIMPLE.MDB.QUEUE。
  • 部署 EAR 文件。在部署期间,我被要求输入绑定信息。我选择激活规范,然后将目标资源 JNDI 名称和目标 JNDI 名称分别指向激活规范和队列。

(MDB代码没有注解。)此时,app指向spec和queue,spec指向queue——belt和suspensers。自然地,我想应用程序因此知道队列。满怀希望,我在队列上放了一条消息,然后……什么也没有。onMessage 事件应该使用 System.out 来记录消息。我没有看到任何消息。

这方面的明确文件因缺席而引人注目。谷歌提供了很多结果,但没有一个详细说明配置如何组合在一起。有很多关于 ibm-ejb-jar-bnd.xmi 的建议,但该文件的示例是神秘的,充满了不透明的数字,没有解释它们是如何生成的,或者它们如何与配置的其他部分相关联。

看在上帝的份上。我要做的就是部署一个 MDB,并在我将消息放入队列时让它写“Hello, world”。我使用 vi 和 ant 作为我的开发和构建工具。那里的任何人都可以告诉我我缺少什么吗?

编辑:添加了“zos”标签。

0 投票
4 回答
3326 浏览

java - 使用消息驱动 Bean (MDB) 生成新的 Java 线程

我可以从 MDB 中启动 /spawn 新的 java 线程吗?我需要从 MDB 中的代码进行一些并行处理,然后将控件返回给 MDB。

要求:消息来到 MDB ,然后进行一些代码处理。然后启动两个新的从属线程,它们执行一些并行工作。直到那时 MDB 正在等待。当线程完成工作时。然后控制权返回给MDB,MDB完成相关的final/cleanup工作。

从 MDB 启动一个新线程(Runnable)是个好主意吗?如果不是,那么应该有什么替代方案?