JBoss UnknownHostException su una rete diversa
Domanda
Sto riscontrando un po 'di problemi nel far funzionare JBoss attraverso le reti. Come breve panoramica, abbiamo una rete di sviluppo (che chiamerò DEV) e una rete client (diciamo CLIENT!). Questi sono collegati tramite un firewall. Nella rete Dev, il server è noto come 192.168.100.50, sulla rete client è noto come 10.0.100.50. Il DNS in entrambe le reti risolve l'IP pertinente tramite DNS (sqlserver.dev.net).
sqlserver fornisce 2 servizi, uno tramite un servizio Web .NET, l'altro da JBoss. Quando si esegue il client sulla rete DEV, entrambi i servizi funzionano correttamente. Quando si è sulla rete CLIENT, funziona solo il servizio .NET.
Il client JBoss genera una UnknownHostException quando tenta di eseguire ContextLookup nel seguente codice:
Properties p = new Properties();
p.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
p.put("java.naming.factory.url.pkgs", "=org.jboss.naming:org.jboss.jnp.interfaces");
p.put("java.naming.provider.url", "sqlserver.dev.net:1199");
try {
Context c = new InitialContext(p);
cm = (ServiceRemote)c.lookup(Service.RemoteJNDIName);
} catch (NamingException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
L'eccezione è:
L'eccezione di root è java.rmi.UnknownHostException: host sconosciuto: SQLserver
Posso confermare che il problema è che il client sta tentando di connettersi a 'sqlserver' senza un nome di dominio. Questo è stato testato aggiungendo 'sqlserver' al file host del client e funziona benissimo. Inoltre, l'ortografia di "SQLserver" è interessante, in quanto questo è il modo in cui l'host Windows riporta il suo nome host, non come è archiviato nel DNS. La mia ipotesi migliore è che una volta che il client ha effettuato la connessione iniziale, JBoss dice al client di connettersi a "SQLserver" in futuro, che il client non è in grado di risolvere.
Ho già provato a impostare le seguenti proprietà di sistema sul nome di dominio completo di sqlserver:
jgroups.bind_addr
bind.address
java.rmi.server.hostname
Qualcuno ha qualche idea?
Soluzione
Ok, risulta che l'associazione a 0.0.0.0 all'avvio in realtà rovina la sua autoidentificazione. Il collegamento a sqlserver.dev.net (run.bat -b sqlserver.dev.net) lo ha risolto.
Altri suggerimenti
Potrebbe essere la tua rete con server proxy, devi fornire l'IP del server proxy e la porta del proxy nelle proprietà per verificarli.