Заставить Java EE InitialContext найти подходящее имя хоста? (против сервера JBoss EJB) - PullRequest
2 голосов
/ 26 мая 2009

Как использовать полное имя хоста для свойства "java.naming.provider.url" в параметре "env", переданном в (Java EE) класс InitialContext. Независимо от того, передам ли я IP-адрес или полное имя хоста (host.domain ...), вызов lookup (name) завершится неудачно, сказав, что не может найти имя хоста, где hostname - это просто «базовое имя» хост без своего домена. Например. - скажем, что mypc.somedomain.net - это 1.2.3.4, при вводе «1.2.3.4» или «mypc.somedomain.net» произойдет сбой, например:

javax.naming.CommunicationException java.rmi.UnknownHostException: mypc

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

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

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

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

Ответы [ 2 ]

1 голос
/ 27 мая 2009

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

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

Клиенту EJB не удается получить доступ к серверу JBoss EJB, ЕСЛИ сервер JBoss не запускается таким образом, что сервер знает свое собственное (полностью определенное) имя.

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

0 голосов
/ 26 мая 2009

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

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

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

...