当我的 web 应用程序在 JBOSS 6.0 中启动时,如何确保 hornet 队列存在?

2023-12-20

以前的标题是:

如何使用 Spring 获取对 JBOSS 6 中队列的 JNDI 引用?

我像这样配置了一个 JMS 队列,它位于文件 mytopic-hornetq-jms.xml 中:

<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="urn:hornetq"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd">
    <topic name="mytopic">
        <entry name="mytopic"/>
    </topic>
</configuration>

我的 applicationContext.xml 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/jee 
http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

    <jee:jndi-lookup id="jmsConnectionFactory" jndi-name="java:/JmsXA" />
    <jee:jndi-lookup id="jmsDestination" jndi-name="mytopic" expected-type="javax.jms.Topic" />
</beans>

这是使用 JMX 控制台 org.jboss.naming.JNDIView 的输出:

  +- UserTransactionSessionFactory (proxy: $Proxy103 implements interface org.jboss.tm.usertx.interfaces.UserTransactionSessionFactory)
  +- UUIDKeyGeneratorFactory (class: org.jboss.ejb.plugins.keygenerator.uuid.UUIDKeyGeneratorFactory)
  +- HiLoKeyGeneratorFactory (class: org.jboss.ejb.plugins.keygenerator.hilo.HiLoKeyGeneratorFactory)
  +- SecureDeploymentManager (class: org.jnp.interfaces.NamingContext)
  |   +- remote[link -> DeploymentManager] (class: javax.naming.LinkRef)
  +- SecureManagementView (class: org.jnp.interfaces.NamingContext)
  |   +- remote[link -> ManagementView] (class: javax.naming.LinkRef)
  +- mytopic (class: org.hornetq.jms.client.HornetQTopic)
  +- DeploymentManager (class: org.jboss.aop.generatedproxies.AOPProxy$4)
  +- XAConnectionFactory (class: org.hornetq.jms.client.HornetQConnectionFactory)
  +- ProfileService (class: org.jboss.aop.generatedproxies.AOPProxy$2)
  +- SecureProfileService (class: org.jnp.interfaces.NamingContext)
  |   +- remote[link -> ProfileService] (class: javax.naming.LinkRef)
  +- queue (class: org.jnp.interfaces.NamingContext)
  |   +- DLQ (class: org.hornetq.jms.client.HornetQQueue)
  |   +- ExpiryQueue (class: org.hornetq.jms.client.HornetQQueue)
  +- UserTransaction (class: org.jboss.tm.usertx.client.ClientUserTransaction)
  +- ConnectionFactory (class: org.hornetq.jms.client.HornetQConnectionFactory)
  +- jmx (class: org.jnp.interfaces.NamingContext)
  |   +- invoker (class: org.jnp.interfaces.NamingContext)
  |   |   +- RMIAdaptor (class: javax.management.MBeanServerConnection)
  |   +- rmi (class: org.jnp.interfaces.NamingContext)
  |   |   +- RMIAdaptor (class: javax.management.MBeanServerConnection)
  +- BeanValidatorFactories (class: org.jnp.interfaces.NamingContext)
  +- TomcatAuthenticators (class: java.util.Properties)
  +- XAThroughputConnectionFactory (class: org.hornetq.jms.client.HornetQConnectionFactory)
  +- ManagementView (class: org.jboss.aop.generatedproxies.AOPProxy$3)
  +- ThroughputConnectionFactory (class: org.hornetq.jms.client.HornetQConnectionFactory)

在我的书中,这意味着该主题绑定到 JNDI 名称“mytopic”

尽管如此 Spring 还是抛出了

18:45:29,636 ERROR [ContextLoader] Context initialization failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmsDestination': Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: mytopic not bound
...
Caused by: javax.naming.NameNotFoundException: mytopic not bound
  at org.jnp.server.NamingServer.getBinding(NamingServer.java:771) [:5.0.5.Final]
  at org.jnp.server.NamingServer.getBinding(NamingServer.java:779) [:5.0.5.Final]
  at org.jnp.server.NamingServer.getObject(NamingServer.java:785) [:5.0.5.Final]
  at org.jnp.server.NamingServer.lookup(NamingServer.java:443) [:5.0.5.Final]

UPDATE

看起来,查找 JNDI 参考实际上并不是问题,但实际上在应用程序启动时没有配置 hornet 队列。

如果我稍后部署应用程序,它会运行得很好,因为此时 hornet 正在排队are配置。

有没有办法指定应用程序在队列启动之前不会启动,或者 jboss 的配置选项是在其余部分启动之前保留部署?


我已经成功地使用了 Jboss 4.2 中的“depends”机制。使用它,您可以指定某些内容依赖于其他内容(使用 xml 描述符或对于 ejb3,您可以使用注释)。这是一个可以帮助您的链接started http://docs.jboss.org/ejb3/docs/reference/build/reference/en/html/jboss_extensions.html

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

当我的 web 应用程序在 JBOSS 6.0 中启动时,如何确保 hornet 队列存在? 的相关文章

随机推荐

  • 检查给定字符串是否有效匹配一组前缀

    使用什么算法来检查给定字符串是否与一组前缀匹配 以及该组中的哪个前缀 其他变体 给定路径和一组目录 如何检查路径是否在一组目录中 假设没有符号链接 或者它们不重要 我对算法的描述或名称感兴趣 或者解决这个问题的 Perl 模块 或者可以用来
  • CakePHP:使用不同数据库关联两个模型?

    我有两个模型 Plant 和 Emp 它们具有 Has And Belongs To Many 关系 我已将它们配置为关联 并且获取每个数据的查询是正确的 但问题是 Plant 和 Emp 位于不同的数据库上 Emp 位于数据库 1 上 P
  • 如何使用 C# 向文件中插入字符

    我有一个巨大的文件 我必须在其中的特定位置插入某些字符 在 C 中执行此操作而无需再次重写整个文件的最简单方法是什么 文件系统不支持在文件中间 插入 数据 如果您确实需要一个可以以排序方式写入的文件 我建议您考虑使用嵌入式数据库 您可能想看
  • 如何使用捆绑器重新安装 gem

    I did a bundle show并获取 gem 目录的完整路径 不幸的是 我使用删除了目录rm r gem path 然后我的 Rails 应用程序不再工作了 如果我尝试启动服务器或启动 Rails 控制台 它会输出以下错误
  • 地图和列表中的 ModCount

    在调试 eclispse 中的集合时 我只是检查是否存在名为 modCount 的东西 例如 如果我们调试列表 我们将在调试中检查此 modCount 代表的内容时看到 请告知 请参阅 javadoc 该列表的结构修改次数 结构修改是那些改
  • 将不同的 CSS 应用于不同的 jQuery 日期选择器

    我有几个与输入字段绑定的日期选择器 它们以通常的方式创建 input1 datepicker options1 input2 datepicker options2 现在我想为每个领域设置不同的样式 但是当在 Firefox 中检查页面时
  • 将多个列表理解转换为单个列表理解

    我正在尝试使用列表理解来更改列表的值我可以通过使用 3 个列表理解来做到这一点 clr 1 2 2 1 3 1 2 3 clr green if i 1 else i for i in clr clr yellow if i 2 else
  • 阿普塔纳工作室3.3.1。 JavaScript 代码补全

    我是 Aptana 的新手 刚刚开始了一个本质是 Web 的项目 我在代码完成方面遇到两个问题 在网上做了一些研究 但没有找到解决方案 1 我有这两行代码 var script document createElement script s
  • 如何在 XML+XSL 生成的 HTML 中使用 jQuery 来操作 UL?

    这是 XML
  • Kotlin:迭代 JSONArray

    我正在使用 Kotlin 和 Realm 编写 Android 应用程序 我有一个 JSONArray 我想迭代该数组中的 JSONObject 以便将它们加载到 Realm 数据库类中 境界等级 import io realm Realm
  • 统一成本搜索实施

    I am trying to implement the Uniform Cost Search after watching the Intro to AI course in Udacity However my algorithm i
  • 是否可以*仅*跨子子域共享表单身份验证?

    我知道我可以跨 2 个子域共享表单身份验证sub1 domain com sub2 domain com通过使用以下 Web config 设置
  • PDO 中的预备语句真的能提高安全性吗?

    我想知道那些准备好的 PDO 语句是否真的提高了安全性 或者它们只是查询中的 廉价 文本替换 准备好的语句的要点实际上是 无论作为参数插入什么 都不会被 DBMS 解析为指令本身的一部分 因此像这样的参数 DROP TABLE foobar
  • 如何使用 XSLT 进行通配符匹配?

    如果我有这样的源文件
  • ARKit 放置一个面向相机的 SCNNode

    我在用着ARKit显示 3D 对象 我设法将现实世界中的节点放置在用户 又称相机 面前 但当我放下它们时 我无法让它们面对镜头 let tap point CGPoint x x y y let results arscn view hit
  • 使用 ctypes 处理 128 位整数

    使用 Python ctypes 支持 128 位整数 当前为 uint128 t 的最佳方式是什么 可能是两个 uint64 t 的用户定义结构 但这会在需要时产生对齐问题 关于为什么 ctypes 没有扩展到支持 128 位整数有什么想
  • 64 位 JVM 的 Java 编程

    几个问题 如何识别当前安装的JVM是什么 64 位 32 位 在针对 64 位 JVM 目标平台进行编程时 我需要考虑一些事项吗 我的 Java 代码可以在 32 位和 64 位 JVM 上运行吗 如何在 64 位 JVM 上运行我的 Ja
  • Visual Studio Team Services、持续部署和 WebJobs

    有没有人管理过使用 Visual Studio Team Services RELEASE 任务设置工作部署管道 我能找到的所有信息似乎都基于 Nuget 发布包 该包直接从源获取其参数 我试图让它在多个环境 开发到质量检查到生产管道等的正
  • 使用孔径抓取开放网络浏览器数据的任何可能性

    我知道使用 Aperture 抓取网站 如果我打开http demo crawljax com http demo crawljax com 在 mozilla 网络浏览器中 如何使用 Aperture 抓取打开的浏览器内容 脚步 1 打开
  • 当我的 web 应用程序在 JBOSS 6.0 中启动时,如何确保 hornet 队列存在?

    以前的标题是 如何使用 Spring 获取对 JBOSS 6 中队列的 JNDI 引用 我像这样配置了一个 JMS 队列 它位于文件 mytopic hornetq jms xml 中