直接上代码
server包的类列表
HelloImpl
HelloLL
MainS
client包的类列表
HelloWorld
MainC
package server;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface HelloImpl extends Remote{
public void sayHello() throws RemoteException;
}定义一个实现Remote的接口,接口中写出客户端要需要的待实现的方法列表package server;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class HelloLL extends UnicastRemoteObject implements HelloImpl{
protected HelloLL() throws RemoteException {
super();
// TODO Auto-generated constructor stub
}
@Override
public void sayHello() throws RemoteException {
// TODO Auto-generated method stub
System.out.println("Hello World!");
}
}定义一个继承UnicastRemoteObject实现了HelloImpl的类,然后必须要有构造函数,因为需要抛出RemoteException,然后override HelloImpl接口中的方法。 package server;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
public class MainS {
protected MainS() throws RemoteException {
super();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
HelloImpl server = new HelloLL();
LocateRegistry.createRegistry(8888);
Naming.bind("rmi://localhost:8888/server", server);
}catch(Exception ex){
ex.printStackTrace();
}
}}//main方法中的代码差不多是一样的= =、不算太大理解。package client;
import java.rmi.Naming;
import java.rmi.RemoteException;
import server.HelloImpl;
public class HelloWorld {
HelloImpl helloImpl;
public HelloWorld(){
try{
helloImpl=(HelloImpl)Naming.lookup("rmi://localhost:8888/server");
}catch(Exception ex){
ex.printStackTrace();
}
}
public void sayHello() {
try {
helloImpl.sayHello();
} catch (RemoteException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}//在客户端调用服务器上的代码。package client;
public class Main1 {
public static void main(String[]args){
HelloWorld helloWorld = new HelloWorld();
helloWorld.sayHello();
}
}
本文介绍了一个使用Java RMI(远程方法调用)技术实现的简单示例,包括服务端接口定义、实现类及客户端调用过程。通过创建远程接口、实现类并绑定到RMI注册表,客户端能够跨进程调用服务端的方法。
954

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



