在启动服务器的同一个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中的小型客户端应用程序中运行时没有任何内容。