jueves, agosto 13, 2015

Errores de red con Windows 10 y Alfresco

Con la actualización de Windows 10 pueden volver algunos errores que en otras versiones y sistemas operativos ya estaban solucionadas.

Estos errores vienen derivados principalmente de las nuevas configuraciones de red implementadas en Windows, a partir de la versión 7 en realidad, y que en su versión 10 han sufrido un gran cambio.


Por ejemplo, una vez instalado Alfresco puede presentarse el siguiente error:

--- log ---
ERROR [sf.ehcache.Cache] [main] Unable to set localhost. This prevents creation of a GUID. Cause was: Mordor: Mordor
 java.net.UnknownHostException: Mordor: Mordor
at java.net.InetAddress.getLocalHost(Unknown Source)
at net.sf.ehcache.Cache.<clinit>(Cache.java:155)
[...]
--- log ---

Si se realiza una investigación sobre este error se encuentran muchas páginas donde la solución es introducir la dirección IP 127.0.0.1 y el nombre del host o "hostname" en el fichero hosts, tanto en Linux, Windows y Mac OSX, pero esta solución ya no funciona en Windows, debido principalmente a dos cuestiones:

1. El uso de DNSSEC 
2. El uso de IPv6 sobre IPv4

Por lo tanto, para solucionarlo, no basta con poner nada en el fichero %SystemRoot%\system32\Drivers\etc\hosts, de hecho, no hace falta.

La solución es más sencilla que esto, hay que usar IPv4. Se puede hacer (tocando el registro de Windows) que la versión 4 tenga prevalencia sobre la versión 6 del TCP/IP, pero también, y creo que esto es mejor, se puede arrancar la máquina virtual de Java para que use la versión de TCP/IP que se necesita. El parámetro es: 

-Djava.net.preferIPv4Stack=true

Con este parámetro se solucionan los posibles errores de detección del host que es necesario para el arranque de Alfresco.

Además, hay que incluirlo también en otros sitios donde se utilicen descargas o llamadas a direcciones de Internet, como el caso de maven, eclipse, etc.

Por ejemplo, mi variable MAVEN_OPTS es la siguiente:

-Xms256m -Xmx1024m -XX:PermSize=320m -Xss1024k -Djava.net.preferIPv4Stack=true

Y que es la misma que tengo en la configuración de eclipse (Servers) para cada servidor de Tomcat y para cada llamada de maven.

Evidentemente hay que usar este parámetro también en el fichero eclipse.ini si se necesitan instalar plugins.

No hay comentarios: