Сбой поиска JNDI с другой виртуальной машины

#java #spring #jndi #lookup #hornetq

#java #весна #jndi #поиск #hornetq

Вопрос:

При выполнении поиска на сервере JNDI с той же виртуальной машины, которая запустила сервер (являющийся частью веб-приложения Spring), ресурсы, привязанные к JNDI (в данном случае очередь JMS и фабрика соединений), возвращаются, как и ожидалось. При подключении к серверу JNDI из небольшого автономного клиентского приложения кажется, что вообще ничего не связано.

Имеет ли сервер JNDI разные области действия в отношении ресурсов, привязанных к каталогу, и имеет ли значение, с какой виртуальной машины я начинаю поиск?

Приветствуется любая помощь.

Сервер JNDI запускается как часть запуска контекста Spring следующим образом:

 <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 настроен в classpath следующим образом:

  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
  

Пример кода для подхода в виртуальной машине и автономного подхода одинаковый:

  InitialContext ctx = new InitialContext();

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

Фрагмент кода перечисляет ожидаемые ресурсы при запуске на той же виртуальной машине, но ничего при запуске в небольшом клиентском приложении на другой виртуальной машине.

Комментарии:

1. возможно, область имен — это «пространство имен Java», а не «глобальное пространство имен», так что оно недоступно за пределами localhost ..?