我在工作中遇到了一种情况,我需要为底层架构组件指定初始上下文名称,以便它可以帮助我将消息发布到 JMS 队列。
如何指定确切的上下文工厂名称?我认为这可能是org.jnp.interfaces.namingcontextfactory
根据谷歌结果使用的字符串“”。我想了解以jboss服务器配置为起点的权威方法是什么?
谢谢西尼什
初始上下文是对JNDI名称空间的引用,可以在其中查找 JMS 队列等对象。我前段时间写了这个教程,你可能会觉得很有帮助。
对于远程jboss 服务器,应该有 3 个基本的(使用默认端口):
代码看起来像这样:
import javax.naming.*;
import javax.jms.*;
import java.util.*;
.....
Properties jndiProps = new Properties();
jndiProps.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
jndiProps.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
jndiProps.put("java.naming.provider.url", "localhost:1099");
Context ctx = new InitialContext(jndiProps);
Queue jmsQueue = (Queue)ctx.lookup("jndi-name-of-queue");
如果您的代码在 jboss 服务器中运行,则不需要这些属性,因为它们是隐式的。
import javax.naming.*;
import javax.jms.*;
.....
Context ctx = new InitialContext(); // no properties needed
Queue jmsQueue = (Queue)ctx.lookup("jndi-name-of-queue");