2009-05-26 11 views
2

Comment utiliser un nom d'hôte complet pour la propriété "java.naming.provider.url" dans le paramètre "env" transmis à la classe InitialContext (Java EE). Que je transmette une adresse IP ou un nom d'hôte complet (host.domain ...), l'appel de recherche (nom) échouera, indiquant qu'il ne peut pas trouver le nom d'hôte, où le nom d'hôte est juste le "nom de base" du hôte sans son domaine. Par exemple. - dire que mypc.somedomain.net est 1.2.3.4, soit la mise en "1.2.3.4" ou "mypc.somedomain.net" échouera avec quelque chose comme:Rendre Java EE InitialContext trouver un nom d'hôte qualifié? (par rapport au serveur JBoss EJB)

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

Dois-je passer un serveur DNS dans InitialContext? Qu'est-ce qui n'est pas assez intelligent pour laisser l'OS sous-jacent faire le travail? (comme dans "ping mypc.somedomain.net", qui fonctionne juste)

Le client et le serveur ne sont ni sur la même machine, ni sur le même sous-réseau, donc je dois utiliser un nom d'hôte complet. Pour affiner cela un peu pour "Robin", nous exécutons normalement un processus client dans une JVM distincte qui frappe généralement un serveur sur localhost, ou parfois sur un autre hôte sur le même sous-réseau/domaine (par exemple - "testbox") qui ne nécessite pas un nom complet.

Aussi, j'ai essayé d'ajouter le préfixe "jns: //" et le suffixe ": 1099" (par exemple - "jns: //mypc.somedomain.net: 1099"), pas que ceux-ci étaient nécessaires pour faire "testbox" "travail, et a obtenu la même exception.

J'ai googlé et trouvé plusieurs cas de cette erreur (InitialContext/JBoss -> UnknownHostException) ou une question similaire, mais pas de réponse. Aie.

+0

double possible de [JBoss UnknownHostException lorsque le réseau différent] (http://stackoverflow.com/questions/840292/jboss-unknownhostexception-when-on-different-network) – skaffman

Répondre

1

regardant de plus près, c'est un double de:

JBoss UnknownHostException when on different network

Le client EJB ne parvient pas à accéder au serveur EJB JBoss, SAUF SI le serveur JBoss démarre de telle sorte que le serveur connaît son propre nom (entièrement qualifié).

Mon PC Windows XP connaît son nom « court », mais vous devez donner jboss le nom complet pour lui-même avec le paramètre -b (bind) mentionné dans la question référencée. Quelque chose au sujet du protocole JNDI (ou EJB?) Exige une sorte de "double recherche" où, après que l'hôte est trouvé, il est interrogé pour son nom, puis recherché à nouveau (ou non). Allez comprendre. Protection anti-spoofing ???

0

Votre dernière déclaration implique que vous exécutez le client en tant qu'application autonome. Si tel est le cas, il ne s'exécute pas dans un conteneur Java EE et vous devez effectuer la configuration appropriée pour exécuter un client léger tel que défini dans la documentation de votre serveur d'applications. Le simple fait d'essayer de rechercher l'InitialContext à partir d'un nom complet ne fonctionnera pas. Je n'ai jamais fait ça pour JBoss, mais je l'ai fait pour WAS. Vous devrez trouver les jarres JBoss et les configurations nécessaires pour que cela fonctionne.

Comme ÉTAIT, ils peuvent avoir un moyen de créer un conteneur client qui vous permet un accès complet aux ressources Java EE de façon normale.