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

spring - 在 EAR 中发现错误的 Spring AppContext

我有一个包含多个 MDB 的 EAR。每个 MDB jar 都有自己的应用程序上下文。当消息到达时,我可以从日志中看到相应的 MDB 初始化,但它从不同的 MDB 获取应用程序上下文!

我认为每个 EJB 都应该有自己的类加载器。似乎没有。如何强制每个 MDB 加载自己的应用程序上下文?

我正在使用 WebSphere 7。

我的项目结构是:

mdb jar 的内容是:

0 投票
1 回答
9270 浏览

jakarta-ee - JMS 消费者和消息驱动 Bean (MDB) 有什么区别

异步 JMS(Java 消息服务)消费者与实际 MDB(消息驱动 Bean)之间有什么区别。我看到的唯一区别是 MDB 类具有@MessageDriven异步 JMS 使用者没有的注释。

还有什么我想念的吗?

0 投票
1 回答
265 浏览

hibernate - 如何使用 JPA/Hibernate 在数据库中处理具有唯一约束的多线程插入?

在消息驱动的 bean 中,我将条目持久保存到具有唯一条目的查找表中。基本上我使用标准 api 创建一个选择语句,如果我没有找到一个条目,我创建一个。

目前此代码遇到 mysql 错误,因为在某些情况下,此条目创建 ( em.persist(entry)) 会违反我数据库上的唯一约束。我的 mdb 的另一个实例在我没有找到它并且在我创建它之前创建了查找条目。

我该如何处理这个同步问题,所以仍然只有一个条目?

0 投票
2 回答
1794 浏览

multithreading - 消息驱动 Bean (MDB) 是否与其他 EJB bean 受到相同的限制?

在消息驱动的 Bean 中,我是否受限于会话 Bean(EJB3 或 EJB3.1)的相同规则,即:

  • 使用 java.lang.reflect Java Reflection API 访问通过 Java 运行时环境的安全规则不可用的信息
  • 读取或写入非最终静态字段
  • 使用 this 来引用方法参数或结果中的实例
  • 访问 Java 编程语言规则不可用的包(和类)
  • 在包中定义一个类
  • 使用 java.awt 包创建用户界面
  • 创建或修改类加载器和安全管理器
  • 重定向输入、输出和错误流
  • 获取代码源的安全策略信息
  • 访问或修改安全配置对象
  • 创建或管理线程
  • 使用线程同步原语与其他企业 bean 实例同步访问
  • 停止 Java 虚拟机
  • 加载本机库
  • 在网络套接字上侦听、接受连接或多播
  • 更改 java.net.Socket 或 java.net.ServerSocket 中的套接字工厂,或更改 java.net.URL 的流处理程序工厂。
  • 直接读取或写入文件描述符
  • 在文件系统中创建、修改或删除文件
  • 使用 Java 序列化协议的子类和对象替换特性
0 投票
1 回答
1535 浏览

jms - MDB 在此异常后停止工作

我有一个企业事件驱动的应用程序。我有 16 个从 JMS 队列中读取的 MDB。当我遇到一些不受控制的异常时,我收到了这个堆栈:

在此之后,所有 MDB 都停止从队列中读取数据,并且需要重新启动应用程序。

这是 MDB onMessage 代码:

任何想法?亲切的问候马西莫

0 投票
1 回答
446 浏览

java - 在 ejbTimeout 结束之前,MDB onMessage 不会开始。它不应该异步启动吗?

我们有一个javax.ejb.TimedObject像这样将消息排队到 MDB...

当我调试这个(在 Weblogic 10.3.1.0 上)时,我越过了 sender.sent(txtMsg) 行,我希望我的 onMessage 断点几乎立即被击中。直到我让 ejbTimeout 运行(实际上是当我退出 TimerImpl.timerExpired 时),它才达到我的断点。消息队列位于生成消息的同一台服务器上。

对我来说,这似乎很奇怪。

  • MDB 消息不是异步发送的吗?
  • 这可能是配置问题还是它应该如何工作?
0 投票
1 回答
534 浏览

dependency-injection - 将字符串注入消息驱动 Bean

我想用字符串配置我的一个 mdb 的行为。我创建了一个 setMessageType 方法,并希望通过 ejb-jar(部署描述符)中的配置将标识符字符串注入 mdb。

我知道如何在 ejb-jar 中声明一个 bean,但我如何控制依赖注入?

问候,

桂冠

0 投票
2 回答
861 浏览

java - EJB/MDB 应用程序中的 DI

我目前正在开发一个在 IBM Websphere Application Server 7 (Java EE 5) 上运行的小型 EJB 应用程序。该应用程序主要由一个 MDB 组成,用于侦听传入的 MQ 消息,这些消息被转换并存储在 DB 中。目前我正在使用很多单例/工厂来共享配置、映射、数据源查找等。但这实际上导致了一些非常难以测试的代码。解决方案可能是使用(简单)DI 框架,如 guice/spring 来注入不同的实例。问题是:在哪里放置初始化/设置代码?应用程序的主要入口点在哪里?如何将实例注入 MDB?

0 投票
1 回答
2271 浏览

jakarta-ee - 如何在取消部署之前停止消息处理?

鉴于:

  • JMS 消息队列。
  • 一种定时服务,它定期(从数据库)将消息放入该队列。
  • 从队列中读取的 JEE6 消息驱动 bean。
  • 计时器服务和消息驱动 bean 是不同部署单元的一部分。

问题:

只要消息在处理中,消息驱动的 bean 就不能在不破坏工作流状态的情况下取消部署。因此,我们首先停止计时器服务并等待所有消息完成。

有没有办法自动化这种行为?或者如果计时器服务仍在运行,是否可以防止取消部署?我们目前使用的是 JBoss 4.2.3。

非解决方案:

  • 重构部署单元,因为它会涉及多个部门。
  • 我知道不会涵盖系统崩溃,并且防弹解决方案应该包括恢复策略。
0 投票
1 回答
2471 浏览

jms - 如何在 JBoss AS 下创建一个侦听 Oracle AQ 队列的 MDB?

我需要在 JBoss AS 5.1 下运行的 Java EE 应用程序中监听 Oracle AQ 队列。

我设法使用 Oracle 的 JMS 客户端库创建了一个常规的 JMS 客户端,但由于这是一个 Java EE 应用程序,我真的很想使用 MDB。

我真的找不到任何关于此的文档,也找不到让我使用 JCA 执行此操作的资源适配器。

谁能告诉我要让它工作需要什么?