在EJB环境中是否有一些行为类似于.wait()和.notify()的东西?

2024-02-18

我知道我不能修改 EJB 容器中的线程,因此我不知道如何在 EJB 环境中以正确的方式执行以下操作:

涉及的有:

  • 无状态会话 Bean“客户端”
  • 无状态会话 Bean“服务器”
  • 消息队列“队列”
  • 消息驱动 Bean“Mdb”处理来自“队列”的消息
  • n 无状态会话 Bean W1 到 Wn

场景是:

Client调用一个方法Server,它又发送几条消息到Queue。在那之后,Server做一些其他的事情。同时,Mdb消费一条消息,调用Wi它做了一些相当长的计算,并得到结果。现在Mdb将结果给出Server. When Server获取其发送的每条消息的所有“结果”,它对来自的结果进行更多计算Ws,并将结果返回到Client.

我的问题:

在 Java SE 中,我只需执行 .wait() 即可Server等待结果Ws,之后Server发送消息后完成工作。然后mdb当它设置结果时会 .notify() 。正如规范所述,由于我不能在 EJB 容器中修改线程,因此我迷失了方向,因为我没有找到任何适当的方法来在 EJB 环境中实现相同的行为。

任何有关该问题的帮助将不胜感激,提前致谢。

P.S.:我正在使用 JBoss 5.1.0,以防有任何特定于供应商的措施来解决该问题。


对此的适当解决方案是消息传递的“请求/响应”模式。简而言之,您可以通过消息传递系统通过发送消息并等待响应消息来执行“同步”操作(所有这些在 J2EE 世界中都是合法的)。在实践中,您可以通过多种方式实现此目的,但一般的想法是,您发送带有某种唯一标识符的请求消息,然后使用为您指定的请求 ID 设置的消息过滤器来等待响应消息。已发送(这通常是“correlationId”字段 http://docs.oracle.com/javaee/5/api/javax/jms/Message.html#setJMSCorrelationID%28java.lang.String%29是用来)。 MDB 将获取请求消息,处理它们,并使用请求消息中指定的唯一标识符发送响应消息。你可以用一个队列来完成所有这些,或者你可以使用单独的请求/响应队列,或者你可以做一些疯狂的事情,比如创建“临时”响应队列 http://docs.oracle.com/javaee/5/api/javax/jms/QueueSession.html#createTemporaryQueue%28%29(每个请求)。您可以使用以下命令告诉 MDB 将请求消息发送到哪里Message.setJMSReplyTo http://docs.oracle.com/javaee/5/api/javax/jms/Message.html#setJMSReplyTo%28javax.jms.Destination%29 method.

一般模式是:

  1. 客户端调用服务器
  2. server:
    1. 创建消息,设置correlationId和replyTo
    2. 创建QueueSender,发送消息
  3. mdb (repeat for each message):
    1. 收到消息
    2. 处理消息
    3. 发送带有correlationId的响应消息
  4. server:
    1. 使用correlationId创建消息过滤器
    2. 使用消息选择器创建 QueueReceiver
    3. calls receive()直到所有消息都被接收并处理(或超时)
    4. 进行最终处理,响应客户端

(显然,服务器直接从步骤2进行到步骤4,我这样写只是为了突出控制流程。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在EJB环境中是否有一些行为类似于.wait()和.notify()的东西? 的相关文章

  • 在 jTextfield 中禁用“粘贴”

    我有一个用 Swing awt 编写的应用程序 我想阻止用户将值粘贴到文本字段中 有没有办法在不使用动作监听器的情况下做到这一点 您可以使用 null 参数调用 setTransferHandler 如下所示 textComponent s
  • 对象数组的数组(二维数组)JNI

    我正在努力创建自定义对象类型 ShareStruct 的二维数组 jobjectArray ret jobjectArray ins jobjectArray outs jclass myClass env gt FindClass env
  • 如何在url请求中发送数组

    我的要求如下 我想给出演员姓名 开始日期 结束日期并获取他在该时期出演的所有电影 因此 我的服务请求是这样的 http localhost 8080 MovieDB GetJson name Actor startDate 20120101
  • Java 卡布局。多张卡中的一个组件

    一个组件 例如JLabel 在多张卡中使用CardLayout 目前看来该组件仅出现在它添加到的最后一张卡上 如果有办法做到这一点 我应该吗 这是不好的做法吗 或者有其他选择吗 你是对的 它只出现在 添加到的最后一张卡 中 但这与CardL
  • 本地开发的 Azure Functions 扩展包版本问题

    我有一个带有队列触发器的 Java 11 Azure 函数 该函数在部署到 Azure 时按预期工作 并正确从定义的服务总线主题中提取消息 但是 运行相同的功能locally除非我回滚版本 否则不起作用Azure Functions 绑定扩
  • 以有效的方式从 Map 中删除多个键?

    我有一个Map
  • 调用许多网络服务的最佳方式?

    我有 30 家子公司 每家都实施了他们的 Web 服务 使用不同的技术 我需要实现一个Web服务来聚合它们 例如 所有子公司的Web服务都有一个名为的Web方法GetUserPoint int nationalCode 我需要实现我的网络服
  • 在java中将字符串日期转换为美国格式

    我有下面的代码 其中日期为字符串类型 我必须将其设置为美国格式 所以下面我已经展示了它 private static final SimpleDateFormat usOutputDate new SimpleDateFormat MM d
  • 可访问数据的 Java 约定。 (公共访问器和 Getter/命名)

    通过 Java API 您会看到大量冲突的命名和实践 这让我感到非常困惑 例如 The String http grepcode com file repository grepcode com java root jdk openjdk
  • 确定序列化对象的类型

    我需要通过套接字发送消息 从用户到引擎的请求 以及从引擎到用户的响应 所以流程本质上是 serialized request Server lt network gt Client serialized response request r
  • 插入时的 iBatis 判别器

    我有一个抽象类Example以及与之相伴的具体子类 我使用鉴别器来提取数据out数据库的 像这样
  • 在尝试使用 GPS 之前如何检查 GPS 是否已启用

    我有以下代码 但效果不好 因为有时 GPS 需要很长时间 我该如何执行以下操作 检查GPS是否启用 如果启用了 GPS 请使用 GPS 否则请使用网络提供商 如果 GPS 时间超过 30 秒 请使用网络 我可以使用时间或 Thread sl
  • 拆分/标记化/扫描字符串并注意引号

    Java中是否有默认 简单的方法来分割字符串 但要注意引号或其他符号 例如 给定以下文本 There s a man that live next door in my neighborhood and he gets me down Ob
  • 使用单独的线程在java中读取和写入文件

    我创建了两个线程并修改了 run 函数 以便一个线程读取一行 另一个线程将同一行写入新文件 这种情况会发生直到整个文件被复制为止 我遇到的问题是 即使我使用变量来控制线程一一执行 但线程的执行仍然不均匀 即一个线程执行多次 然后控制权转移
  • Android UnityPlayerActivity 操作栏

    我正在构建一个 Android 应用程序 其中包含 Unity 3d 交互体验 我已将 Unity 项目导入 Android Studio 但启动时该 Activity 是全屏的 并且不显示 Android 操作栏 我怎样才能做到这一点 整
  • PyQt5:如何使QThread返回数据到主线程

    I am a PyQt 5 4 1 1初学者 我的Python是3 4 3 这是我尝试遵循的many https mayaposch wordpress com 2011 11 01 how to really truly use qthr
  • 受信任的 1.5 小程序可以执行系统命令吗?

    如果是的话 这个能力有什么限制吗 具体来说 我需要以 Mac OSX 为目标 我以前用过这个在 Windows 系统上启动东西 但从未在 Mac 上尝试过 public void launchScript String args Strin
  • Errors/BindingResult 参数应在模型属性、@RequestBody 或 @RequestPart 参数之后立即声明

    我通过剖析示例应用程序来自学 Spring 然后到处添加代码来测试我在剖析过程中开发的理论 在测试添加到 Spring 应用程序中的一些代码时 我收到以下错误消息 An Errors BindingResult argument is ex
  • 决策树和规则引擎 (Drools)

    In the application that I m working on right now I need to periodically check eligibility of tens of thousands of object
  • java中void的作用是什么?

    返回类型 方法返回值的数据类型 如果方法不返回值 则返回 void http download oracle com javase tutorial java javaOO methods html http download oracle

随机推荐

  • Flutter:如何更新 firestore 中数组中的数组

    消防银行 https i stack imgur com 5R9Qz png 我需要更新索引数组 0 中的状态字段 其中时间 8 00 我需要将此状态传递给 0 只是该数组位于图像中的矩阵内被视为计时器 如何通过将 status 1 字段更
  • CsvHelper - 在同一 CSV 中读取不同的记录类型

    我正在尝试从具有以下结构的 CSV 文件中读取两种类型的记录 PlaceName Longitude Latitude Elevation NameString 123 456 56 78 40 Date Count 1 1 2012 1
  • 确定一个数组是否包含在另一个数组中

    如何确定一个数组是否包含在另一个数组中 逐个元素且按顺序 我已经在 MSVS 2010 中编写了下面的程序 但不太确定如何完成确定一个数组是否出现在另一个数组中的布尔函数 void isContained int ar1 int ar2 i
  • x&&y||z 是如何计算的?

    Given int x 1 y 2 z 您能解释一下为什么结果是 x y z is 1 x y 1 x y z 1 x y z 相当于 x y z if x 1 and y 2 then x y is 1 2这是true true这是tru
  • 如何在 Neo4j Cypher 上使字符串包含过滤器

    我需要在 Neo4J 中创建一个包含过滤器的字符串 这个想法很简单 一个很好的例子是 我需要从人员数据库中检索姓名中包含汽车子字符串的所有人员 我怎样才能做到这一点 作为附加更新 从 neo4j 3 0 开始 它可能更易于使用 MATCH
  • DirectX/OpenGL 中的三角形绘制顺序

    3D API 中绘制三角形的顺序是否保证与其在索引缓冲区中的顺序相同 例如 如果我在一次绘制调用中有两个重叠的三角形 并且禁用深度测试 那么第一个或第二个三角形最终是否可见 或者我是否需要发出单独的绘制调用以确保第二个三角形出现在第一个三角
  • Zend Select 具有自连接覆盖字段

    帖子和评论存储在同一个表中 因此 为了获取每个帖子及其评论 我们这样做 posts this gt select gt setIntegrityCheck false gt from array post gt Posts array gt
  • 第一个元素偏移量

    结构的第一个元素的偏移量为 0 是否是保证 为了更准确 让我们考虑一下 struct foo int a double b struct foo ptr malloc sizeof struct foo int int ptr ptr gt
  • 您是否使用 TestInitialize 或测试类构造函数来准备每个测试?为什么?

    这个问题涉及使用 MSTest 在 Visual Studio 中进行单元测试 这很重要 因为 MSTest 的执行顺序 http blogs msdn com nnaderi archive 2007 02 17 explaining e
  • 如何修复轮询时的 Cucumber 期望错误?

    我有帮手sign in登录用户 我正在尝试使用一种新方法来确保用户使用轮询登录 def sign in user password 111111 click button sign in btn eventually 5 page shou
  • 在plsql中编写函数

    我正在查询数据库 需要解析其中一个字段以获取特定值 使用字符串函数 所以我认为最好为其编写一个函数 我以前从未在 plsql 中编写过函数 所以我决定看一些示例 我得到了一个简单的 square 函数的副本 它接受一个数字并返回它的平方 但
  • 通过 DBRef 数组查找文档

    解决方案可能就在我面前 但我还没有找到它 我的问题是我需要查找包含指定 DBRef 的所有文档 这是要搜索的集合的结构 id ObjectId 4e2d4892580fd602eb000003 date added ISODate 2011
  • Ruby 有哪些 Python 没有的功能,反之亦然?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 关于 Python 与 Ruby 的讨论有很多 我都发现它们完全没有帮助 因为它们都围绕着为什
  • 如何使用 Django / Python 从 RESTful Web 服务中使用 XML?

    我应该使用 PyXML 还是标准库中的内容 ElementTree 作为标准 Python 库的一部分提供 ElementTree 是纯 python 而 cElementTree 是更快的 C 实现 Try to use the C im
  • 如何在 WiX 片段中获得编辑注册表 CLSID 的提升权限

    我正在尝试将 Windows 桌面搜索设置为使用系统默认过滤器 nlhtml dll 之外的不同 html 过滤器 当我查找 PersistentHandler 时 HKEY LOCAL MACHINE SOFTWARE Classes h
  • ASP.NET Core MVC 视图组件

    在 ASP NET Core MVC 以前称为 MVC 6 中 有一个称为视图组件的新功能区域 它似乎是部分视图的更好替代方案 我看过以下内容查看组件示例 http www asp net vnext overview aspnet vne
  • 在 AppDelegate 之外使用 NIB 创建 UITabBarController?

    对于 iOS 编程来说 我还是个新手 尽管进行了大量的研究 但我还是遇到了另一个障碍 我想要实现的 我想要一个当我从主 UI 导航时加载的 UITabBarController 我还想使用 NIB 来定义其属性 我能找到的所有示例都将 UI
  • Gstreamer视频输出位置跟踪和寻找

    我正在使用 gstreamer gst launch 捕获相机并将流保存为视频和图像帧 管道的问题是 当管道完成 通过中断 视频记录时 它不能支持位置跟踪和查找 因此 视频在 vlc 播放器中播放 长度未知 我认为问题出在管道本身 如何实现
  • 支持内容脚本中的所有 google 域

    我正在制作一个内容脚本 对谷歌结果网页执行某些操作 下面的行在manifest json无效 匹配 https www google 由于清单 json 中的上述行而导致的错误是 content scripts 0 matches 0 的值
  • 在EJB环境中是否有一些行为类似于.wait()和.notify()的东西?

    我知道我不能修改 EJB 容器中的线程 因此我不知道如何在 EJB 环境中以正确的方式执行以下操作 涉及的有 无状态会话 Bean 客户端 无状态会话 Bean 服务器 消息队列 队列 消息驱动 Bean Mdb 处理来自 队列 的消息 n