问题标签 [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.
java - 配置 MDB 以侦听多个队列
我正在使用 EJB 3.1,我想配置一个 MDB 来监听多个队列。
我更喜欢通过 XML 定义队列名称,但通过注释定义其他定义。
这可以做到吗?
jakarta-ee - 处理入站消息后如何异步发布新的 JMS 消息?
我们有一个场景,在使用消息驱动 Bean 处理传入消息 A 之后,我们将后续消息 B 写入另一个队列。我们使用的是 Glassfish 3.1。
在这种情况下,一个目标是发布消息 B 可以异步进行,并且不需要是可靠的——也就是说,如果在处理完消息 A 之后我们尝试发布消息 B 并且它失败了,我们不会回滚对消息 A 的处理.
第二个目标是发布消息 B 不应阻塞或扩展覆盖消息 A 的事务的范围。我们希望覆盖消息 A 的事务尽快关闭,而不是在处理消息 B 时保持打开状态。
一个想法是为此目的创建一个带有@Asynchronous 标记的方法的特殊EJB,并在onMessage() 的末尾查找并调用该EJB。但是,我们不确定这是否是这种情况下的最佳做法。
我们对引入一个额外的编排解决方案(例如 ESB)不感兴趣,它可以处理这种情况和更复杂的情况。
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 东西,比如符号等,但也没有用......)
塞巴斯蒂安
jakarta-ee - EJB3.0如何使用MDB
嘿,我是 j2ee 编码的新手。我的问题是关于 MDB。我已经设置了我的 weblogic 11g 服务器。并且队列已经建立。
我已经编写了客户端代码,它是一个将 msg 发送到队列的 java se 客户端。
我可以在我的 weblogic 管理控制台上看到队列中的消息。
但是,我在服务器端的 mdb 没有被调用。
谁能告诉我出了什么问题。我更喜欢使用 java 注释的解决方案。谢谢大家阅读本文。
这是我的服务器代码:
spring - Spring Integration 和 Tomcat 解决方案与 Websphere MDB 解决方案:功能?
我们正在考虑在以下任一方面实施企业集成解决方案之间的选择:
- Spring/Spring 集成/JMS/Spring Web MVC
- Websphere 应用服务器/MDB/Spring
有什么优点/缺点?
对 WAS/MDB 解决方案在功能上的优势特别感兴趣。
干杯
保罗
jakarta-ee - 如何停止向消息驱动 Bean 传递消息?
问题
是否可以(以编程方式)停止消息驱动 Bean,使其不消耗新消息,但像往常一样处理正在运行的事务?
(这是如何在取消部署之前停止消息处理的后续行动? )。
给定
- 带有 JBoss 消息传递的 JBoss 4.2.3
- 根据 EJB 2.0 的消息驱动 Bean
失败的尝试
- 我想使用 MBean 方法
stopDelivery
,但遗憾的是它会立即关闭事务(请参阅错误#EJBTHREE-1870),从而导致很多异常。 - 我试图在 JMX 控制台中将最大池大小减少到 0,但活动会话的数量根本不受影响。
- 我可以停止队列,但我必须
NameNotFoundException
在生产者中处理 s 。
java - WAS 7.0 - MDB 中的默认拦截器
我在使用 Websphere 7.0 AS 中的默认拦截器向 MDB 提供建议时遇到问题。我已经使用 Glassfish AS 测试了相同的代码,它工作正常。奇怪的是,WAS 拦截器适用于无状态 bean,但不适用于 MDB。
weblogic - Weblogic MDB 实例变为零并且队列中的消息未被拾取
我通过本地绑定从 MQ 队列读取 MDB。有时我们注意到来自 MQ 队列的消息没有被拾取队列深度增加到 50000 并且实例数变为零。执行线程总数为 25。一台物理机中有 8 台托管服务器。
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”标签。
java - 使用消息驱动 Bean (MDB) 生成新的 Java 线程
我可以从 MDB 中启动 /spawn 新的 java 线程吗?我需要从 MDB 中的代码进行一些并行处理,然后将控件返回给 MDB。
要求:消息来到 MDB ,然后进行一些代码处理。然后启动两个新的从属线程,它们执行一些并行工作。直到那时 MDB 正在等待。当线程完成工作时。然后控制权返回给MDB,MDB完成相关的final/cleanup工作。
从 MDB 启动一个新线程(Runnable)是个好主意吗?如果不是,那么应该有什么替代方案?