problem in start up my RMI server(under ISP) so that it can recieve remote calls over Internet.--Jav

Posted by Lokesh Kumar on Stack Overflow See other posts from Stack Overflow or by Lokesh Kumar
Published on 2010-04-03T01:05:50Z Indexed on 2010/04/03 1:13 UTC
Read the original article Hit count: 591

Filed under:
|
|
|

i m creating a Client/Server application in which my server and client can be on the same or on different machines but both are under ISP.

My RMI programs:-

-Remote Intreface:-

//Calculator.java
public interface Calculator 
      extends java.rmi.Remote { 
public long add(long a, long b) 
    throws java.rmi.RemoteException; 

public long sub(long a, long b) 
    throws java.rmi.RemoteException; 

public long mul(long a, long b) 
    throws java.rmi.RemoteException; 

public long div(long a, long b) 
    throws java.rmi.RemoteException; 

}

Remote Interface Implementation:-

//CalculatorImpl.java
public class CalculatorImpl 
extends 
  java.rmi.server.UnicastRemoteObject 
implements Calculator { 

public CalculatorImpl() 
    throws java.rmi.RemoteException { 
    super(); 
} 

public long add(long a, long b) 
    throws java.rmi.RemoteException { 
    return a + b; 
} 

public long sub(long a, long b) 
    throws java.rmi.RemoteException { 
    return a - b; 
} 

public long mul(long a, long b) 
    throws java.rmi.RemoteException { 
    return a * b; 
} 

public long div(long a, long b) 
    throws java.rmi.RemoteException { 
    return a / b; 
} 

}

Server:-

//CalculatorServer.java
 import java.rmi.Naming;
 import java.rmi.server.RemoteServer;
 public class CalculatorServer {

  public CalculatorServer() 
  {
    try {

         Calculator c = new CalculatorImpl();

         Naming.rebind("rmi://"+args[0]+":1099/CalculatorService", c);
        } catch (Exception e) 
          {
            System.out.println("Trouble: " + e);
          }
  }

     public static void main(String args[]) {
     new CalculatorServer();
   }
}

Client:-

//CalculatorClient.java

 import java.rmi.Naming; 
 import java.rmi.RemoteException; 
 import java.net.MalformedURLException; 
 import java.rmi.NotBoundException; 

  public class CalculatorClient { 

  public static void main(String[] args) { 
    try { 
       Calculator c = (Calculator)Naming.lookup("rmi://"+args[0]+"/CalculatorService"); 

        System.out.println( c.sub(4, 3) ); 
        System.out.println( c.add(4, 5) ); 
        System.out.println( c.mul(3, 6) ); 
        System.out.println( c.div(9, 3) ); 
    } 
    catch (MalformedURLException murle) { 
        System.out.println(); 
        System.out.println("MalformedURLException"); 
        System.out.println(murle); 
    } 
    catch (RemoteException re) { 
        System.out.println(); 
        System.out.println("RemoteException"); 
        System.out.println(re); 
    } 
    catch (NotBoundException nbe) { 
        System.out.println(); 
        System.out.println("NotBoundException"); 
        System.out.println(nbe); 
    } 
    catch (java.lang.ArithmeticException ae) { 
        System.out.println(); 
        System.out.println("java.lang.ArithmeticException"); 
        System.out.println(ae); 
    } 
} 

}

when both Server and client programs are on same machine:-

i start my server program by passing my router static IP address:-192.168.1.35 in args[0] and my server starts...fine.

and by passing the same Static IP address in my Client's args[0] also works fine.

but:-

when both Server and client programs are on different machines:-

now,i m trying to start my Server Program by passing it's public IP address:59.178.198.247 in args[0] so that it can recieve call over internet.
but i am unable to start it.

and the following exception occurs:-

Trouble: java.rmi.ConnectException: Connection refused to host: 59.178.198.247;
nested exception is:
    java.net.ConnectException: Connection refused: connect

i think it is due to NAT Problem because i am under ISP.

so,my problem is that how can i start my RMI Server under ISP so that it can recieve remote calls from internet????

© Stack Overflow or respective owner

Related posts about rmi

Related posts about client-server