Version 1

    If you are running Ubuntu 10.10, read this FAQ!

     

    Problem

     

    If you're running your tests with the remote JBoss AS container adapter, you may encounter the following socket connection error (assume here your computer's hostname is myhost):

     

    Caused by: org.jboss.arquillian.spi.DeploymentException: Failed to deploy test.war
       at org.jboss.arquillian.container.jbossas.remote_6.JBossASRemoteContainer.deploy(JBossASRemoteContainer.java:169)
       at org.jboss.arquillian.impl.handler.ContainerDeployer.callback(ContainerDeployer.java:62)
       at org.jboss.arquillian.impl.handler.ContainerDeployer.callback(ContainerDeployer.java:50)
       at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:63)
       ... 18 more
    Caused by: java.lang.RuntimeException: java.io.IOException: Can not get connection to server.
          Problem establishing socket connection for InvokerLocator [socket://myhost: 63209/]
       at org.jboss.profileservice.management.client.upload.StreamingDeploymentTarget.transferDeployment(StreamingDeploymentTarget.java:286)
       at org.jboss.profileservice.management.client.upload.StreamingDeploymentTarget.distribute(StreamingDeploymentTarget.java:106)
       at org.jboss.profileservice.management.client.upload.DeploymentProgressImpl.distribute(DeploymentProgressImpl.java:178)
       at org.jboss.profileservice.management.client.upload.DeploymentProgressImpl.run(DeploymentProgressImpl.java:83)
       at org.jboss.arquillian.container.jbossas.remote_6.JBossASRemoteContainer.deploy(JBossASRemoteContainer.java:144)
       ... 21 more
    

     

    This started happening on Ubuntu 10.10 (and perhaps other versions of Linux). Network Manager overwrites hostname assignments in /etc/hosts when obtaining an address from a DHCP server. In particular, it:

     

     

    • inserts the entry for the dynamic IP address in the first line
    • removes the hostname from 127.0.0.1
    • puts localhost.localdomain before localhost in the 127.0.0.1 entry (may just be an annoyance)

     

    The beginning of the /etc/hosts file ends up looking like this (followed by some IPv6 entries):

     

    192.168.1.5 myhost
    127.0.0.1 localhost.localdomain localhost
    ::1 myhost localhost6.localdomain6 localhost6
    127.0.1.1 myhost
    

     

    What it comes down to is that Network Manager should not be messing with this file as it wrecks havoc on servers, such as JBoss AS, bound to these addresses.

     

    Solution

     

    The only solution we've been able to figure out is to use a cron job as the root user to fixe the file when it gets messed up.

     

    First, create the correct version of /etc/hosts and stick it somewhere, such as /etc/hosts.fixed, and populate it with the following contents (replace myhost with the hostname of your computer, as reported by the hostname command, and the correct IP assignment, as reported by ipconfig):

     

    /etc/hosts.fixed

    127.0.0.1 myhost localhost localhost.localdomain
    ::1 myhost localhost6 localhost6.localdomain6
    127.0.1.1 myhost
    ## (optional entry); update if assigned a new address from DHCP
    192.168.1.5 myhost
    
    ## The following lines are desirable for IPv6 capable hosts
    ::1     ip6-localhost  ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    ff02::3 ip6-allhosts
    

     

    Next, create a script named /etc/restore-etc-hosts.sh to replace the /etc/hosts file if Network Manager screws it up:

     

    /etc/restore-etc-hosts.sh

    #!/bin/sh
    
    if [ `grep -c NetworkManager /etc/hosts` -eq 1 ]; then
       cp /etc/hosts.fixed /etc/hosts
    fi
    

     

    Finally, setup a cron job to run this script as often as you like. We recommend every couple of minutes.

     

    */3 * * * * /etc/restore-etc-hosts.sh
    

     

    Once the /etc/hosts file is corrected, restart JBoss AS and run the tests again. Your socket connection error should be gone!

     

    References