如何以编程方式创建 jms Topic 和 TopicConnectionFactory?

2023-11-26

有人知道是否可以以编程方式创建主题及其连接工厂吗?目前,我使用 glassfish 管理实用程序来创建我的主题及其连接工厂。如果我无法在代码中创建它,glassfish/openmq 是否有我可以使用的默认主题和 conn 工厂?


如果您只想避免在管理员中手动创建资源,您可以简单地使用文件“glassfish-resources.xml”(GF 3.1,请参阅http://docs.oracle.com/cd/E18930_01/html/821-2417/giyhh.html).

您需要一个像这样的管理对象资源(针对某个主题):

<admin-object-resource enabled="true" jndi-name="jms/myTopic"
   object-type="user" res-adapter="jmsra" res-type="javax.jms.Topic">
  <property name="Name" value="physicalTopic"/>
</admin-object-resource>

请注意,如果您实现多个主题,且其消息不应混淆,则必须对主题使用不同的“名称”值(此处:“physicalTopic”)。

此外,您还需要一个引用 javax.jms.TopicConnectionFactory 类型的连接器连接池的连接器资源。

如果您不打算使用部署描述符来动态创建资源 glassfish-resources.xml 似乎是最好的方法。

请注意,以这种方式部署的资源是应用程序范围的:http://docs.oracle.com/cd/E18930_01/html/821-2417/giydj.html

“glassfish-resources.xml”是 GF 3.x 的文件,对于 GF 2.x,它是“sun-resources.xml”。如果您使用的是 NetBeans,该文件位于项目视图中的“服务器资源”文件夹中。注意:如果您使用NetBeans部署,“服务器资源”中的glassfish-resources.xml仅由NetBeans使用! NetBeans 知道如何创建这些资源并执行此任务。如果你直接将 EAR 部署到 Glassfish如果没有 NetBeans(这对于生产环境来说似乎很可能),您必须在以下位置提供 glassfish-resources.xml:

  • EJB 模块的 META-INF 或 WAR 的 WEB-INF(用于模块范围的资源)
  • 您的企业应用程序的 META-INF,用于应用程序范围的资源 在 NetBeans 中,您可以通过将文件放入项目视图的“Configuration Files”文件夹(文件系统中的 src/conf/)来完成此操作。

您可以使用 NetBeans 的 [新建消息驱动 Bean] 向导轻松创建此资源定义(只需通过选择 [新建 ...] 添加 MBean)。在向导中选择“项目目标”> [添加]。一个完整的 3.1 示例如下所示:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
    <admin-object-resource enabled="true" jndi-name="jms/myDestination"  res-type="javax.jms.Topic"  res-adapter="jmsra">
        <property name="Name" value="PhysicalTopic"/>
    </admin-object-resource>
    <connector-connection-pool name="jms/myDestinationFactoryPool"  connection-definition-name="javax.jms.TopicConnectionFactory"  resource-adapter-name="jmsra"/>
    <connector-resource enabled="true" jndi-name="jms/myDestinationFactory" pool-name="jms/myDestinationFactoryPool"  />
</resources>

这是 MBean 注释:

@MessageDriven(mappedName = "java:app/jms/myDestination", activationConfig =
{
    @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
    @ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "Durable"),
    @ActivationConfigProperty(propertyName = "clientId", propertyValue = "NewMessageBean"),
    @ActivationConfigProperty(propertyName = "subscriptionName", propertyValue = "NewMessageBean")
})
public class NewMessageBean implements MessageListener
{ 
[...]

Caution:仅当您使用应用程序范围的资源时,mappedName 中的“java:app/”才是正确的。您可以在 glassfish-resources.xml 的定义中保留“java:app/”。 GF 部署指南说:“应用程序范围的资源 JNDI 名称以 java:app 或 java:模块。如果 JNDI 名称中未指定这些前缀之一,则会添加它。”

您还可以通过使用“name”而不是“mappedName”来引入另一个间接级别。然后,您必须提供一个名为“application-client.xml”的文件,其中(逻辑)名称映射到 JNDI“物理”位置。

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

如何以编程方式创建 jms Topic 和 TopicConnectionFactory? 的相关文章

  • 如何从 Java SE 中的 GlassFish 服务器获取初始上下文?

    我有一个如下所示的课程 public class Poligon public static void main String args try Context ctx new InitialContext ConnectionFactor
  • Glassfish:在应用程序启动时静默忽略不可用的数据源

    我有一个 EJB 应用程序 它在 Glassfish 3 1 2 上使用 JPA 2 0 提供程序是 EclipseLink 当数据库关闭时 应用程序无法启动 甚至无法部署 这是因为 EclipseLink 会进行一些初步验证 有没有一种方
  • 所选 bean 不在同一模块或企业应用程序中

    只是瞎猜 但我是否需要本地接口来调用远程无状态 EJB 当我尝试通过 Netbeans 远程调用 bean 时 Netbeans 不允许对此 Bean 进行远程调用或任何调用 为什么不 尝试手动完成 如下 jndi是什么global部署在
  • Glassfish 3.1.2 和 Eclipse

    我刚刚下载了 Glassfish 版本 3 1 2 这还不是正式版本 我需要这个版本 因为我的 Web 应用程序正在使用 websockets 我现在遇到的问题是 Eclipse 的 Glassfish 插件 他无法识别新的 Glassfi
  • 使用 Gattle 向 ActiveMQ 发布消息

    我一直在使用Gatling将消息发布到 ActiveMq 服务器 我明白了 java lang SecurityException 无效的用户名 null 或空 不过我使用有效的用户名和密码 这是我的测试代码 抛出了异常 任何有关如何解决此
  • JMS 监听器 - 动态选择目的地

    我在部署在单独服务器上的 ActiveMQ 上有许多目的地 队列 我想从我的程序中动态收听这些目的地 目前我正在收听这些目的地 如下所示
  • 如何从 MQTT 生产并在 ActiveMQ 中作为 MQTT 和 JMS 消费

    我有一个设置 其中消息作为 MQTT 生成到 ActiveMQ 我有两个消费者 一个作为 JMS 另一个作为 MQTT 当我将消息作为 JMS 消息发布到主题 foo 时 我在 JMS 和 MQTT 消费者处都收到消息 但是当我在同一主题上
  • 使用JMS临时队列进行同步使用是一个好习惯吗?

    如果我们使用 临时队列 的 JMS 请求 回复机制 该代码是否可扩展 截至目前 我们不知道是否会支持每秒 100 个请求 或者每秒 1000 个请求 下面的代码是我正在考虑实现的代码 它以 同步 方式使用 JMS 关键部分是创建 消费者 以
  • Java程序要故意填充PermGen?

    当 PermGen 已满时 Glassfish 有时无法停止 在这种情况下asadmin stop domain domain1不起作用 在 Glassfish 2 1 1 中 它会永远坐在那里 在 3 x 之后超时AS ADMIN REA
  • 绑定用户实体和 GlassFish 主体

    我有一个实体类User其中包含用户名 名字 姓氏和密码等信息 我有 GlassFish 3 1 服务器设置来执行身份验证 到目前为止 一切都很好 在容器对用户进行身份验证后 我需要某种方法将主体绑定到实际的用户实体 毕竟 GlassFish
  • 如何限制 Glassfish v3 上 MDB 池的大小

    我的消息驱动 Bean 执行高度密集的操作 因此我想限制它的池大小 否则我的服务器会过载 我已经尝试过这个 代码 但它不起作用 它的池仍然是32 根据经验测试 我不时重新启动服务器 因此没有池实例 MessageDriven mappedN
  • JMS队列消息接收顺序

    我按顺序在同一目标中添加两条 JMS 消息 这两条消息的接收顺序是否与我添加它们的顺序相同 或者是否有可能进行相反的排序 即首先检索目的地中首先接收到的消息 我将添加到目的地 producer send Msg1 producer send
  • 使用 HornetQ (JBoss) 在 docker 容器上公开的 JMS 所需的端口

    我正在使用 Docker 将 JMS 服务器容器链接到另一个 JMS 客户端容器 但是当我在docker容器中运行服务器时 客户端无法正确连接到服务器 我在docker上暴露了端口443 JMS还有其他使用的端口吗 我可以成功创建目标 但不
  • 为什么 com.ibm.jms.JMSTextMessage 类型的变量会打印截断的内容和省略号 (...)?

    我想了解为什么 com ibm jms JMSTextMessage 类型的变量在转换为字符串时会打印出截断的内容和省略号 我在 JMeter 的 JSR223 Sampler 中有以下代码 import com ibm msg clien
  • ActiveMQ 的 @SendTo 注释无提示地失败

    我试图使用 SendTo 注释将 JMS 消息推送到 SpringBoot 应用程序中的独立 ActiveMQ 代理 但是执行完成时没有错误 异常 但消息未排队 相反 如果我使用 JmsTemplate 在代码中注释 消息将排队 使用 Se
  • 尝试使用 Eclipse 启动 Glassfish 服务器时出现 org.apache.catalina.LifecycleException

    我一直忙于使用 angularjs 前端构建一个 REST 应用程序 使用 MAVEN jersey quickstart webapp 使用 GLASSFISH Web 服务器在 Eclipse 上开发 今天 当我开始对项目进行一些开发时
  • 当REST客户端和服务器在同一台服务器上时如何避免网络调用

    我有一个 Web 应用程序 其中两个主要组件是网站 在 Groovy 和 Grails 中实现 和后端 RESTful Web 服务 使用 JAX RS Jersey 和 Spring 实现 这两个都将在 Glassfish 中运行 该网站
  • 为什么我们在同一台服务器上使用多个应用程序服务器实例

    我想这是有充分理由的 但我不明白为什么有时我们会在同一物理服务器上放置例如 5 个具有相同 Web 应用程序的实例 这与多处理器架构的优化有关吗 JVM 或其他允许的最大内存限制 嗯 过了很长一段时间我又看到这个问题了 一台机器上的多个 J
  • 将 CommonJ 实现与 GlassFish 和 Spring 3 结合使用

    为了统一 Websphere 7 和 GlassFish 3 环境之间的部署 我决定尝试在 GlassFish 中实现 CommonJ WorkManager 和 TimerManager 但它并没有完全按预期工作 我做了以下事情 使用位于
  • HornetQ OutOfMemory 启动时带有大日志

    使用 HornetQ 2 0 0 CR2 独立 非集群服务器的默认配置 当我尝试使用大日志 gt 1Gb 启动服务器时 出现 OutOfMemory 异常 main 12 59 43 505 INFO org hornetq integra

随机推荐

  • Flutter 按时间戳对 Firebase 快照进行排序

    I m trying to sort snapshot by timestamp but returns original order data structure looks like this 我有两个快照 时间戳是 153602546
  • 电话验证正则表达式

    我正在使用此模式来检查电话号码的验证 0 9 9 15 它适用于0771234567 and 0771234567 但我希望它适用于077 1234567 and 077 1234567和 077 1 23 45 67 和 077 123
  • 在 Verilog 中生成 For 循环中实例化模块

    我正在尝试使用 Verilog 实例化一些模块generate块 因为我将实例化可变数量的它们 genvar i generate for i 1 i lt 10 i i 1 begin status whatever status clk
  • 无法使用 Rails 5.2、AWS S3 和 ActiveStorage 自动加载常量 ActiveStorage::Blob::Analyzable 错误

    我已经和这个家伙战斗了一段时间了 并且已经完成了所有的谷歌 here here 以及许多同样无益的其他人 但无济于事 官方错误是这样的 在我的创建方法的第一行调用 无法自动加载常量 ActiveStorage Blob Analyzable
  • 是否存在 SHA1(x) 等于 x 的 x?

    有没有一个x where SHA1 x x 我正在寻找证据或强有力的论据来反对它 与问题相同的论点适用于此有MD5定点吗 IE 对于随机选择的函数 该值约为 63
  • Lua表的一个有趣现象

    我是Lua新手 这几天正在学习table的用法 从教程中我知道Lua对待数字索引项和非数字索引项的方式不同 所以我自己做了一些测试 今天我发现一个有趣的现象 我无法解释它 The code t 1 2 3 a a b b print t g
  • android webview youtube 嵌入视频自动播放不起作用

    我无法自动播放我的视频 请帮忙 我的sdk版本 android minSdkVersion 14 android targetSdkVersion 19 gt 我尝试按照代码中指定的方式放置 JavaScript public void o
  • for循环中分号放错位置[重复]

    这个问题在这里已经有答案了 当我做作业时 我犯了一个小错误 在 for 循环中像下面的代码一样 for i 0 i
  • 如何从表单外部捕获表单的某些事件?

    我正在做一些需要监控多种表格的事情 从表单外部 并且不将任何代码放入表单内 我需要以某种方式从这些表单捕获事件 很可能以 Windows 消息的形式 但是 如何从与其相关的类外部捕获 Windows 消息呢 我的项目有一个对象 它包装了它正
  • 如何设置 C++ 函数以便 p/invoke 使用它?

    希望这是一个无脑简单的问题 但这表明我缺乏 C 专业知识 我是一名 C 程序员 过去我使用 P Invoke 和其他人的 C C dll 进行了大量工作 然而 这次我决定自己编写一个包装器 C dll 非托管 然后从 C 调用我的包装器 d
  • 如何使用 Meteor.js 对 Dropbox API 进行 CURL 调用

    我是 Meteor js 新手 希望让我的 Web 应用程序能够与 Dropbox Core API 配合使用 我无法全神贯注于使用 Meteor js 中的 HTTP 包进行 API 调用 如何在 Meteor 中进行类似于下面的 Cur
  • 将常数(2 的幂)除以整数的技巧

    NOTE这是一个理论问题 我对实际代码的性能感到满意 我只是好奇是否有替代方案 有没有一种技巧可以将常量值 本身是 2 的整数幂 除以整数变量值 而无需使用实际的除法运算 The fixed value of the numerator d
  • Ngit 与私钥文件建立连接

    我正在尝试使用 NGit 连接到 Github 即使用私钥和密码 有人可以引导我完成它吗 我的正常获取是 var git Git CloneRepository SetDirectory properties OutputPath SetU
  • 如何从 Vue Composition API / Vue 3.0 + TypeScript 中的组合函数访问根上下文?

    我想创建可重用的包装函数写在打字稿用于通过使用触发 toast 通知复合函数 如 Vue 3 0 的当前规范中所定义 组合 API RFC 此示例使用 BootstrapVue v2 0 toast 组件 对于 Vue 2 它将通过以下方式
  • 将设置保留在数据库中

    在可重用的应用程序中 我不想更改任何代码 我想更改应用程序使用的设置变量 以其形式和其他部分 为动态的 从数据库表更新其内容 最好的方法是什么 也许是中间件 看看Django 数据库设置项目
  • 如何从 numpy 数组生成音频?

    我想从 numpy 中的 2D 数组创建 心率监视器 效果 并希望音调反映数组中的值 您可以使用write功能 from scipy io wavfile创建一个 wav 文件 然后您可以随意播放该文件 请注意 数组必须是整数 因此如果有浮
  • RuntimeError:Matplotlib 动画中没有可用的 MovieWriters

    我遇到的问题是类似于此示例的代码 https matplotlib org examples animation basic example writer html 错误 运行时错误 没有可用的 MovieWriters发生在Writer
  • 赋予 PHP include() 文件父变量作用域

    无论如何 是否可以在调用它的父范围中使用包含的文件 以下示例经过简化 但完成相同的工作 本质上 文件将被函数包含 但希望包含的文件的范围是调用包含该文件的函数的范围 main php
  • JsonEditor 与 Django Admin 集成

    我正在努力整合JSON编辑器进入 Django 管理员 我的模型中有一个字段使用 Postgres JSON 并且该库中的树编辑器非常完美 模型 py class Executable models Model Simplified mod
  • 如何以编程方式创建 jms Topic 和 TopicConnectionFactory?

    有人知道是否可以以编程方式创建主题及其连接工厂吗 目前 我使用 glassfish 管理实用程序来创建我的主题及其连接工厂 如果我无法在代码中创建它 glassfish openmq 是否有我可以使用的默认主题和 conn 工厂 如果您只想