当前位置: 首页 > 知识库问答 >
问题:

Artemis客户机如何使用JNDI查找资源?

柯良骏
2023-03-14

共有1个答案

仲孙兴平
2023-03-14

像JMS和JNDI这样的接口的目标之一是减轻客户端应用程序必须“了解”底层实现的负担。因此,例如,使用JMS和JNDI编写的应用程序可以连接到任何提供JNDI实现的JMS兼容代理。一天,一个独立的Java应用程序可以连接到ActiveMQ,第二天它可以连接到WebLogic,需要更改的只是jndi.properties中的配置。

任何使用JMS和JNDI API的Java应用程序,无论是独立运行还是在Wildfly这样的应用服务器中运行,只要JNDI配置正确,都可以连接到ActiveMQ Artemis。只要提供正确的JNDI配置,它就会“知道”如何连接,因为所有这些知识都包含在ActiveMQ Artemis JMS和JNDI实现中,并且是从接口后面的应用程序中抽象出来的。

您从ActiveMQ Artemis文档中引用的部分只是向用户解释,在使用JNDI实现时,没有网络客户机/服务器通信。例如,这与Wildfly不同,后者实现了一个“真正的”JNDI服务器,其JNDI客户机通过网络进行通信以查找对象。

存储在JNDI中的Java对象可以是任何类型的对象。JNDI实现并不关心它是什么样的对象。您可以将指向远程Artemis代理的Artemis JMS连接工厂存储在Wildfly的JNDI中。如果您有这样的配置,并且Wildfly中的JMS应用程序从Wildfly的JNDI中查找这个Artemis JMS连接工厂,那么JMS连接工厂实现本身将与远程Artemis代理进行通信。

附加说明:

  • JNDI不是协议。它只是一个API。
  • 如果您在Wildfly中使用Artemis JMS客户机,它肯定不会使用JNDI调用远程Artemis代理上的对象。如前所述,Artemis JNDI实现仅用于客户端。它不执行任何网络通信。Artemis JMS客户机实现使用它自己的“核心”线路协议执行网络通信。
  • ActiveMQ Artemis通常是独立使用的,因此它需要自己的JNDI实现来促进JMS遵从性。
  • 关于如何使用ActiveMQ Artemis JNDI实现的说明在前面引用的文档中。
 类似资料:
  • 例外的是,我必须在这个库中创建一个通过JNDI查找jdbc数据源的新类。 为此,下面是我的代码: 所有上下文都没有问题地实例化了。但是当它查找jdbc数据源时,我有一个例外:在上下文中找不到名称jdbc 我们不是在一个webapp,这是一个问题吗?是否可以使用ResourceLink声明context.xml?怎么做? 注意:jndi是在server.xml(GlobalNamingResourc

  • 我们希望在单元测试中将EJB-s作为Spring组件进行测试。 使用Resources注释以查找JNDI值的EJB-s之一,如下所示: 问题是Spring似乎试图按类型查找值,即它查找java类型的bean。字符串,而不是使用JNDI。 这是我们的代码。 第一个上下文: 第二个上下文: JndiServerMock: 公共类JndiServerMock{ } JndiClientMock: 公共类

  • 我有WildFly 10.1.0.final,这有Artemis 1.1.0配置jndi.properties的正确方法是什么?: 此工作与WildFly 9.0.0.final具有HornetQ: . 我有下一个: 终于有了这个听众。 在MessageReceiver类中声明的shat队列。My standalone-full.xml是下一个: 我已经定义了正确定义的队列: 有关如何声明队列的参

  • 我的问题似乎与在战争中部署的本地EJB的WildFly JNDI查找相同,只是我无法让他的解决方案工作。 我对部署在jar jaws-server-ejb3中的EJB有一个耳朵。在我的应用程序中,我想在bean上调用一个方法。我已经在我的bean上尝试了有和没有。 野蝇(8.2)启动时打印出来: 当我将@LocalBean添加到我的bean中时,我看到: 因此,从我读到的所有内容来看,似乎很清楚,

  • 我是JavaEE6和JNDI新手,所以如果我的问题看起来微不足道,请原谅我 我已经添加了一个自定义资源Glassfish 3.1.2 JNDI资源通过该管理控制台: 共同任务- JNDI名称:someNumber 现在,我希望在作为ear部署到glassfish服务器的JavaEE应用程序中查找此资源。我试过这个,但运气不好: 我一直得到一个NameNotFoundExcema。你能告诉我我做错了

  • 我的代码无法使用JNDI查找JDBC资源。我得到以下异常: [根异常是javax.naming.nameNotFoundException:context:ppp-14415node01cell/nodes/ppp-14415node01/servers/server1,name:jdbc/admincob:未找到名称admincob中的第一个组件。[根异常是org.omg.cosnaming.n