#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 ..?