title: RMI seen from Internet but not from LAN
body: <p>this is my first post in stackoverflow, i'm trying to implement a chat using RMI but i'm stuck, i am avoiding the use of rmiregistry, everything was binding well on localhost, but i need it to be accesible from the internet, the ports are forwarded, the firewall down, and actually i can retrieve through the internet an object, i've achived this using</p>
  
  <pre><code>System.setProperty("java.rmi.server.hostname","ruso.89.x.ignorelist.com");
  </code></pre>
  
  <p>So then my NameServer.java binds to that IP, but i lose all access through localhost, now let me explain this. This is the code for NameServer.java</p>
  
  <pre><code>public class NameServer
  {
     public static void main (String args [] )
     {
      String direscucha = "ruso.89.x.ignorelist.com";
      int puertonombres = 5000;
      try{
  
          System.setProperty("java.rmi.server.hostname", direscucha);          
          System.setProperty("java.security.policy", "C:\\Users\\Antonio\\Desktop\\DistributedChat\\myServer.policy");
          System.setSecurityManager(new RMISecurityManager());
          NameService ns = new NameService();
          Registry reg=LocateRegistry.createRegistry(puertonombres);
          reg.rebind("ns",ns);
          while(true){}
      }catch(Exception e){
          System.out.println(e);
      }
    }
  }
  </code></pre>
  
  <p>This is my policy file:</p>
  
  <pre><code>grant {
  permission java.security.AllPermission;
  permission java.net.SocketPermission "ruso.89.x.ignorelist.com:*", "connect,resolve,accept";
  permission java.net.SocketPermission "localhost:*", "connect,resolve,accept";
  permission java.net.SocketPermission "127.0.0.1:*", "connect,resolve,accept";
  };
  </code></pre>
  
  <p>Then I need the ChatServer.java to run, this takes ns and binds himself to it, so the ChatServer can be found, the problem is when i use it from outside my LAN I can get the server running! but when i use localhost i got an exception</p>
  
  <p>ChatServer.java (Snippet)</p>
  
  <pre><code>public void work ()
  {
      String direscucha = "ruso.89.x.ignorelist.com";        
      int puertonombres = 5000;
      System.setProperty("java.rmi.server.hostname", direscucha); //Binds to the Public IP
      System.setProperty("java.security.policy", "C:\\Users\\Antonio\\Desktop\\DistributedChat\\myClient.policy"); //marca la politica
      System.setSecurityManager(new RMISecurityManager()); //Ejecuta el RMISecurityManager
      try
      {                                    
          String[] list = Naming.list("//localhost:5000/"); //Debugging
          System.out.println("Tamanyo: "+list.length);      
          for(int i=0; i&lt;list.length; i++)                  
              System.out.println(list[i]);
          NameService_Stub ns =  (NameService_Stub) Naming.lookup("rmi://localhost:5000/ns");
  
          ns.rebind (conf.getServerName(), this);
          System.out.println("Servidor registrado::");
      }
      catch (java.rmi.ConnectException e)
      {
          System.out.println (e);
          System.exit(-1);            
      }
      catch (Exception e)
      {
          System.out.println(e);
          System.exit(-1);
      }
  </code></pre>
  
  <p>So when the ServerChat is registered now any user can execute ChatClient.java to retrieve from the NameService the name of the ChatServer and then connect, but didn't got even there yet because i can't manage to the ChatServer to work. My first though was that when seting the hostname property the localhost get's blocked but nowhere is mentioned, afterwards i've though it may be a problem with the router NAT, could it be?</p>
  
  <p>Exception:</p>
  
  <pre><code>java.rmi.ConnectException: Connection refused to host: ruso.89.x.ignorelist.com; nested exception is:
  java.net.ConnectException: Connection refused: connect
  </code></pre>
  
  <p>Client and server policy files are identical. 
  Used WireShark to see what is happening, a SYN is send and a ACK,RST is recieved.
  I've burnt all my ideas, any suggestions?</p>