package rmiTest;
import java.rmi.Remote;
public interface Calculator extends 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;
}
package rmiTest;
import java.rmi.server.UnicastRemoteObject ;
public class CalculatorImpl extends UnicastRemoteObject implements Calculator
{
/**
*
*/
private static final long serialVersionUID = 1L;
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;
}
}
package rmiTest;
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
public class CalculatorServer {
public CalculatorServer() {
try {
Calculator c = new CalculatorImpl();
LocateRegistry.createRegistry(888);//端口注册
Naming.rebind("rmi://localhost:888/CalculatorService", c);//绑定
} catch (Exception e) {
System.out.println( e.toString());
}
}
public static void main(String args[]) {
new CalculatorServer();
}
}
package rmiTest;
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://localhost:888/CalculatorService");//地址和端口根据server地址更改
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);
}
}
}

本文介绍了一个使用Java RMI实现的远程计算器服务示例。该服务包括定义远程接口的接口、实现该接口的服务端实现类及服务启动过程,还有客户端调用服务的方法。通过这个例子,读者可以了解到如何构建简单的RMI服务。
245

被折叠的 条评论
为什么被折叠?



