Pregunta

Tengo un pequeño problema para que JBoss funcione en todas las redes. Como resumen rápido, tenemos una red de desarrollo (que llamaré DEV) y una red de clientes (por ejemplo, ¡CLIENTE!). Estos están conectados a través de un firewall. En la red de desarrollo, el servidor se conoce como 192.168.100.50, en la red del cliente se conoce como 10.0.100.50. DNS en ambas redes resuelve la IP relevante por DNS (sqlserver.dev.net).

sqlserver proporciona 2 servicios, uno a través de un servicio web .NET, el otro por JBoss. Cuando se ejecuta el cliente en la red DEV, ambos servicios funcionan bien. Cuando está en la red CLIENTE, solo funciona el servicio .NET.

El cliente JBoss genera una excepción UnknownHostException cuando intenta realizar ContextLookup en el siguiente código:

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);
}

La excepción es:

  

La excepción raíz es java.rmi.UnknownHostException: Host desconocido: SQLserver

Puedo confirmar que el problema es que el cliente está intentando conectarse a 'sqlserver' sin un nombre de dominio. Esto se ha probado agregando 'sqlserver' al archivo host del cliente, y funciona bien. Además, la ortografía de 'SQLserver' es interesante, ya que así es como el host de Windows informa su nombre de host, no cómo se almacena en DNS. Mi mejor conjetura es que una vez que el cliente realiza la conexión inicial, JBoss le dice al cliente que se conecte a 'SQLserver' en el futuro, lo que el cliente no puede resolver.

Ya he intentado configurar las siguientes propiedades del sistema en el FQDN de sqlserver:

  

jgroups.bind_addr
  bind.address
  java.rmi.server.hostname

¿Alguien tiene alguna idea?

¿Fue útil?

Solución

Ok, resulta que el enlace a 0.0.0.0 en el inicio realmente arruina su autoidentificación. El enlace a sqlserver.dev.net (run.bat -b sqlserver.dev.net) lo solucionó.

Otros consejos

Puede ser que su red tenga un servidor proxy, debe proporcionar la dirección IP del servidor proxy y el puerto del proxy en las propiedades para verificarlos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top