Заставить Java EE InitialContext найти квалифицированное имя хоста? (против сервера JBoss EJB)


Как я могу использовать полное имя хоста для " java.называющий.поставщик.свойство url в параметре " env " передается в класс InitialContext (Java EE). Передаю ли я IP-адрес, или полностью квалифицированный (хост.домен...) имя хоста, вызов lookup( name) завершится ошибкой, говоря, что он не может найти имя хоста, где имя хоста-это просто "базовое имя" хоста без его домена. Например, - скажите, что mypc.somedomain.net является 1.2.3.4, вводя либо "1.2.3.4", либо "mypc.somedomain.net-Уилл потерпите неудачу с чем-то вроде:

Javax.называющий.Исключение CommunicationException Ява.РМО.UnknownHostException: mypc

Нужно ли передавать DNS-сервер в InitialContext? Что не достаточно умно, чтобы просто позволить базовой ОС делать эту работу? (как в "ping mypc.somedomain.net", который просто работает)

Клиент и сервер не находятся ни на одной машине, ни в одной подсети, поэтому я должен использовать полное имя хоста. Чтобы немного уточнить это для "Робина", мы обычно запускаем клиент процесс в отдельном JVM, который обычно попадает на сервер на localhost, или иногда на другой хост в той же подсети / домене (например - "testbox"), который не требует полного имени.

Кроме того, я попытался добавить префикс "jns://" и суффикс ":1099" (например, - "jns://mypc.somedomain.net:1099"), не то чтобы они были необходимы для работы "testbox", и получил то же исключение.

Я погуглил и нашел несколько примеров этой ошибки (InitialContext / JBoss - > UnknownHostException) или аналогичный вопрос, но без ответов. Ай.

2 2

2 ответа:

При ближайшем рассмотрении это дубликат:

JBoss UnknownHostException когда в другой сети

Клиенту EJB не удается получить доступ к серверу JBoss EJB, если только сервер JBoss не запущен таким образом, чтобы сервер знал свое собственное (полное) имя.

Мой ПК с Windows XP знает свое "короткое" имя, но вы должны дать jboss полное имя для себя с параметром-b (bind), упомянутым в упомянутом вопросе. Что-то насчет ... JNDI (или EJB?) протокол требует какого-то" двойного поиска", когда после того, как хост найден, он запрашивается для его имени, а затем снова ищется (или нет). Иди разберись. Защита от подделки???

Последнее утверждение подразумевает, что клиент выполняется как отдельное приложение. Если это так, то он не работает в контейнере Java EE, и вы должны выполнить соответствующую конфигурацию для запуска тонкого клиента , как должно быть определено где-то в документации по серверам приложений.

Простая попытка поиска InitialContext из полного имени не будет работать. Я никогда не делал этого с JBoss, но я уже был. Вам придется выяснить, что именно Для этого требуются банки JBoss и конфигурации.

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