问题标签 [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 投票
3 回答
790 浏览

java - 跨实例同步对 MDB 方法的访问

我有一个消息驱动 Bean,它接收审计消息。这些消息还包含有关被审计系统的信息。当接收到消息时,如果系统不存在,MDB 可以创建系统或重用现有系统。

我的挑战是,当同时收到来自新系统的大量消息时,会创建多个 MDB 实例,最终可能会创建重复的系统。向数据库添加约束是解决它的一种方法。有没有办法避免应用程序中的这些重复,在这种情况下是MDB?

0 投票
2 回答
3034 浏览

java - ActiveMQ 消费者执行延迟

我看到一个队列没有备份的问题,但是消费者实际执行 JMS 消息的时间在创建后 100 到 200 秒之间(通过 JMSTimestamp-CurrentTime 测量)。

队列的流量相当低,每分钟不到 30 条消息。我能够通过重新启动 ActiveMQ 来解决这个问题,之后消息在创建后不到 1 毫秒的时间内启动。

我正在使用 ActiveMQ 5.4.1,在 MDB 中完成的工作的正常总执行时间少于 2 毫秒。在延迟时,ActiveMQ 日志中没有错误消息,CPU 低且内存充足。

似乎消费者正在将消息从队列中拉出,但出于某种原因坐在它们上面。

是否存在一些可能导致此问题的配置问题?

编辑:

我的MDB的第一行如下:

0 投票
2 回答
4467 浏览

websphere - 如何使用 MDB 从队列中按顺序读取消息?

我有一个监听 WebSphere MQ 的 MDB。它不会按照队列接收到的顺序接收消息。我怎样才能让它按那个顺序阅读?可能吗?我不应该使用 MDB。

0 投票
3 回答
3719 浏览

deployment - jBoss部署消息驱动bean规范违规

我有一个 java EE 应用程序,它有一个消息驱动 bean,它在 JBoss 4 上运行良好,但是当我为 JBoss 6 配置项目并在其上部署时,我收到此错误;

但是我的 bean 有 onMessage 方法!那时它也不会在 jboss 4 上工作。

为什么我会收到这个错误!?

编辑:

有问题的课程看起来像这样

编辑 2: 这是 jboss.xml 相关部分

编辑3:

我刚刚从项目中删除了我所有的 jar,并且只重新添加了相关的(也来自新版本)以消除 NoClassDefFound 错误。问题仍然存在。

编辑: 任何方向,我应该看哪个区域?我的项目,或 jboss-configration,或部署设置?

0 投票
1 回答
463 浏览

java - MDB 中的 JDK 5 文件/流读取超时 API

是否有用于读取文件和/或读取超时流的 JDK 5 或更早版本的 API?此外,当包装在 MDB 中时,此 API 必须是安全的。仅供参考:我已经研究过使用 FutureResult、TimedCallable 类等;我得出的结论是,在 MDB 中使用这些是不可取的,因为 1. 这些不是 JDK 原生类,并且 2. 线程是在 MDB 中产生的;所以我需要另一个解决方案。

此外,我相信任何解决方案都需要线程,因为必须有一个读取线程和一个管理读取线程的及时性并在必要时阻止它的线程。因此,这样的行为在 MDB 内部是非法的吗?如果所说的 API 是 JDK 的原生 API,这是否可以安全地实现?

0 投票
4 回答
16659 浏览

java - EJB 和线程

据我了解,从 EJB 中生成线程是非法的,因为它可能会干扰 EJB 的生命周期。但是,使用 JDK 中预定义的 Java 类在 EJB(特别是 MDB)中内部产生和处理线程(例如 Executor)是否违法?

0 投票
1 回答
728 浏览

java - MDB 如何从服务器环境获取连接设置

我有一个消息驱动的 bean,它连接到远程 HornetQ JMS 提供程序(生产/测试不同)。

连接设置要么存储在 sun-ejb-jar.xml 中,要么作为 @ActivationConfigProperty 注释直接存储在 MDB 类中。

由于所有这些设置都与 ear 文件捆绑在一起,因此当您想在不同环境中进行测试时,部署过程会非常麻烦,因为您必须记住始终更改设置。

您对如何让我的应用程序从服务器读取此设置有任何想法吗?

我想创建一些自定义资源并使用@Resource 读取它们,但我不知道如何让MDB 读取这些设置,因为@Resource 注入AFAIK 发生在MDB 已经初始化之后......

编辑

澄清一下:我正在寻找的是类似 sun-ejb-jar.xml 配置文件,我应该将其安装在具有特定配置的每台服务器上(例如,不同的 JMS 提供程序 - 主题/队列等)。但我的耳朵应用程序应该保持不变。它应该自动从每个服务器加载环境。是否有意义?

0 投票
1 回答
1946 浏览

java-ee-6 - CDI 注入如何在 MDB 和 @Scheduled bean 中工作?

我正在开发一个部署在 JBoss 6 Final 上的大型 Java EE 6 应用程序。我当前的任务涉及始终使用@Inject 而不是@EJB,但是我在某些类型的bean 上遇到了一些问题,特别是@MessageDriven beans 和带有@Scheduled 方法的bean。

发生的情况是,如果我对时间不走运(对于@Schedule),或者如果在启动时 MDB 的队列中有消息,bean 的实例化将失败,因为注入的资源(它们本身是 EJB)尚未绑定.

因为我使用@Inject,所以我猜测EJB 容器认为我的bean 已经准备好了,因为容器本身并不关心@Inject;它可能只是假设由于没有@EJB 注入,bean 已准备好使用。然后,注入的 CDI 代理将失败,因为要注入的资源实际上尚未绑定。

小例子:

上面的示例可能不会经常失败,因为只有两个 bean,但是我正在处理的项目绑定了很多 EJB,这会放大问题。但它可能会失败,因为不能保证首先绑定 MySupportingBean,如果在绑定 MySupportingBean 之前调用 onTimeout,则 MyScheduledBean 的实例化将失败。如果我改用 @EJB,则在满足对 MySupportingBean 的依赖之前,不会绑定 MyScheduledBean。

请注意,该示例不会在 onTimeout 本身失败,而是在 CDI 尝试注入 MySupportingBean 时失败。

我在不同的论坛上阅读了很多帖子,很多人认为@Inject 总是更好。一般来说,我同意,但他们如何处理@Schedule 或@MessageDriven 与@Inject 结合?以我的经验,在这些情况下 bean 是否可以工作归结为运气不好,并且 bean 将任意失败,具体取决于 EJB 的部署顺序以及何时调用 @Schedule 或 onMessage。

0 投票
2 回答
6116 浏览

java - 如何启用 MessageDrivenContext 注入?

我想在 JavaEE MDB 中明确设置一个事务回滚:

但是容器不要求setMessageDrivenContext我,我得到一个NullPointerException. 我需要什么魔法酱来注入上下文?

0 投票
1 回答
533 浏览

jakarta-ee - 从 MDB 中获取队列名称

是否可以从 MDB 中推断出绑定队列或侦听器端口的名称?