来自不同VM的JNDI查找失败

时间:2014-07-02 15:58:48

标签: java spring jndi lookup hornetq

在启动服务器的同一个vm(作为spring web app的一部分)内对JNDI服务器进行查找时,将按预期返回绑定到JNDI的资源(在本例中为JMS队列和连接工厂) 。从小型独立客户端应用程序连接到JNDI服务器时,似乎根本没有任何约束。

JNDI服务器是否有关于绑定到目录的资源的不同范围,并且从我从哪个VM开始查找是否重要?

感谢任何帮助。

JNDI服务器作为spring上下文starup的一部分启动,如下所示:

<bean name="namingServerImpl" class="org.jnp.server.NamingBeanImpl" init-method="start" destroy-method="stop">
    <property name="useGlobalService" value="true"/>
    <property name="installGlobalService" value="true"/>
</bean>

<bean name="namingServer" class="org.jnp.server.Main" init-method="start" destroy-method="stop">
    <property name="namingInfo" ref="namingServerImpl"/>
    <property name="port" value="1299"/>
    <property name="bindAddress" value="localhost"/>
    <property name="rmiPort" value="1298"/>
    <property name="rmiBindAddress" value="localhost"/>
</bean>

jndi.properties在类路径中配置如下:

 java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
 java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
 java.naming.provider.url=jnp://localhost:1299

in-vm方法和独立方法的代码示例是相同的:

 InitialContext ctx = new InitialContext();

 NamingEnumeration<NameClassPair> list = ctx.list("");
 while(list.hasMore()) {
     System.out.println(list.next().getName());
 }

代码段列出了在同一个VM中运行时的预期资源,但在其他VM中的小型客户端应用程序中运行时没有任何内容。

0 个答案:

没有答案