今天上午学习一下:rmi
感觉良好!使用了网上的例子,好象是一个系统以的。很像socket.
public interface Calculator extends Remote {
public long add(long a, long b) throws java.rmi.RemoteException;
}
public class CalculatorImpl extends UnicastRemoteObject implements Calculator{
public CalculatorImpl() throws RemoteException{
super();
}
public long add(long a, long b) throws RemoteException {
return a + b; //To change body of implemented methods use File | Settings | File Templates.
}
}
public class CalculatorServer {
public CalculatorServer() {
try {
Calculator c = new CalculatorImpl();
Naming.rebind("rmi://localhost:1098/CalculatorService", c);
} catch (Exception e) {
System.out.println("Trouble: " + e);
}
}
public static void main(String args[]) {
new CalculatorServer();
}
}
public class CalculatorClient {
public static void main(String[] args) {
try {
Calculator c = (Calculator)
Naming.lookup("rmi://localhost:1098/CalculatorService");
System.out.println( c.add(4, 5) );
}
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);
}
}
}
编译以上类。再用>rmic CalculatorImpl
然后在doc下运行:
>rmi RMI端口 // (no 1 cmd)
>rmi CalculatorServer //启动rmi服务 (no 2 cmd)
>rmi CalculatorClient //执行客户端 (no 3 cmd)
详细解决见: http://java.chinaitlab.com/rcj/39660.html