我应该在 JSF ManagedBean 中的哪里打开/关闭 JMS 连接?

2024-06-22

在使用 JSF 2 和 Ajax 的简单演示 Web 应用程序中,ManagedBean 中有一个从 JMS 队列接收消息的方法:

@ManagedBean
public class Bean {

    @Resource(mappedName = "jms/HabariConnectionFactory")
    private ConnectionFactory connectionFactory;
    @Resource(mappedName = "jms/TOOL.DEFAULT")
    private Queue queue;

    public String getMessage() {
        String result = "no message";
        try {
            Connection connection = connectionFactory.createConnection();
            connection.start();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            MessageConsumer consumer = session.createConsumer(queue);
            Message message = consumer.receiveNoWait();
            if (message != null) {
                result = ((TextMessage) message).getText();
            }
            connection.close();
        } catch (JMSException ex) {
            Logger.getLogger(Bean.class.getName()).log(Level.SEVERE, null, ex);
        }
         return result;
    }
}

每次调用 getMessage() 方法时都会打开/关闭 JMS 连接。在 bean 生命周期中,我必须使用哪些选项打开和关闭 JMS 连接一次,以避免频繁的连接/断开操作?


首先,移动你的Connection成为一个实例变量,以便可以从您的打开、关闭和getMessage方法。

接下来,创建一个openConnection方法与PostConstruct注解。

@PostConstruct
public void openConnection() {
    connection = connectionFactory.createConnection();
}

最后,创建一个closeConnection方法与PreDestroy注解。

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

我应该在 JSF ManagedBean 中的哪里打开/关闭 JMS 连接? 的相关文章

随机推荐

  • 更改多个文件

    以下命令正确更改了 2 个文件的内容 sed i s abc xyz g xaa1 xab1 但我需要做的是动态更改几个这样的文件 但我不知道文件名 我想编写一个命令来读取当前目录中以以下内容开头的所有文件xa and sed应该更改文件内
  • 使用Python Ctypes加载dll

    我看过这里给出的例子ctypes 初学者 https stackoverflow com questions 5081875 ctypes beginner并使用不同的 C 代码执行相同的步骤 我使用此处给出的 C 代码构建了一个 dll
  • Google 计算引擎没有响应

    我的 GCP 服务器已关闭 昨天还在工作 我可以在虚拟机实例中看到服务器 但无法使用 SSH 进行连接 所有客户网站都已关闭 有人可以帮忙吗 发生这种情况的原因有多种 If your 磁盘已满 https cloud google com
  • SQL NOT IN 不工作

    我有两个数据库 一个保存库存 另一个包含主数据库记录的子集 以下 SQL 语句不起作用 SELECT stock IdStock stock Descr FROM Inventory dbo Stock stock WHERE stock
  • 将子属性添加到 jsdoc 中的现有属性列表

    我正在尝试自动化 JS 库中的特定模块 并且陷入了我想要定义一组属性的点 假设一个对象作为类的构造参数 This function initiates world peace constructor param object default
  • 如何使用 System.Net.DNS 获取 dns 名称的 mx 记录? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 NET 库中是否有任何内置方法可以返回给定域的所有 MX 记录 我了解您如何获取 CNAMES 但不获
  • 从 mpf 转换为 Sympy Float 且不损失精度

    有什么办法可以做到这一点吗 例如 在下面的代码中我失去了精度 gt gt gt from sympy import gt gt gt from sympy mpmath import gt gt gt mp dps 50 gt gt gt
  • 具有不同排序规则的数据库可以在一台服务器上兼容吗?

    所以我现在有两个 SQL Server 都是 2012 年的 并且都运行单独的系统 其中一台服务器运行在 latin1 general bin 的排序规则上 另一台运行在latin1 general ci as 理想情况下 我想关闭其中一台
  • 为什么插值表达式不能与“ng-model”一起使用,但可以与“ng-src”一起使用?

    我正在尝试使用插值表达式ng model指令 但它不起作用 相反 当我使用插值法时ng src 它工作得很好 造成这种差异的原因是什么 这完全取决于指令的设置方式 一些指令如ng model ng show and ng click不要使用
  • 如何使用 JPA 查询可为空的 @OneToOne 关系

    I have Entity1 and Entity2 它们具有 OneToOne 可为空的关系 Entity class Entity1 Id Column name id private Long id OneToOne fetch Fe
  • 在 Robolectric 3 中隐藏 getFilesDir()

    我想要影子Context getFilesDir 为了 虚拟化 我的应用程序在测试环境中运行的文件系统 但我找不到正确的封闭类来进行阴影 我尝试过阴影Context Implements Context class public class
  • 我可以在我的应用程序中保留 但使其不渲染两次吗

    我的应用程序处于严格模式下 这使得使用 useEffect 运行变得困难 它基本上在控制台中记录了我所有的值两次 这不是我想要实现的结果 useEffect gt console log logs some data 有没有办法让 useE
  • 如何监听颤振中焦点的变化?

    在Android中 我们可以调用setOnFocusChangeListener 做某事onFocusChanged 方法 但 flutter 不提供onFocus 界面像onTap 在 GestureDetector 或onKey 在 R
  • 使用 Github 和多台计算机的最佳方式是什么?

    我正在开发一些学校评分软件 并决定使用 Github 来托管该项目 在我的 Ubuntu 机器上构建一些代码后 我将其推送到 Github 然后将其克隆到我的 MacBook Pro 在 MBP 上编辑完代码后 我将其推回了 Github
  • Android BLE - 连接到多个设备似乎失败,并且两个连接的 GATT 响应相同?

    我正在开发一个 Android 应用程序 该应用程序连接到 BLE 设备并读取我需要检查的特定 GATT 特征和服务 我使用 Android 开发网站上的 BluetoothLeGATT 示例作为参考 我可以毫无问题地连接到预定义的地址并读
  • 如何在 Android.mk 文件中包含 appcompat_v7

    我希望我的应用程序使用 Android 源代码构建 如何在 Android mk 文件中包含 appcompat v7 以及将 appcompat v7 文件夹放置在源代码中的位置 我正在使用以下代码 LOCAL PATH call my
  • 默认情况下调用旧版本时,从终端运行新版本的 R

    我正在尝试在 OSX 计算机 OSX 10 11 6 上从 iTerm 运行 R 当我进入R 它从路径打开旧版本的 R Users miniconda2 bin R 我希望它默认运行在以下位置找到的 R 版本 usr local bin R
  • 指针/地址类型转换

    我有以下变量 char p int l 65 为什么以下转换会失败 int p l and p char l 类型转换的结果始终是rvalue 无法分配右值 这就是您的第一个表达式无法编译的原因 无法获取右值的地址 这就是第二个表达式无法编
  • `pipwheel`命令可以创建*通用*轮子吗?

    有没有办法使用pip wheel命令来创建普遍的 wheels 例如 采取aws requests auth举个例子 如果我执行 pip wheel aws requests auth 创建了一个Python3轮子 aws requests
  • 我应该在 JSF ManagedBean 中的哪里打开/关闭 JMS 连接?

    在使用 JSF 2 和 Ajax 的简单演示 Web 应用程序中 ManagedBean 中有一个从 JMS 队列接收消息的方法 ManagedBean public class Bean Resource mappedName jms H