rmi练习
第一:建立一个接口,这个接口继承Remote。接口里定义的每一个方法都要抛出RemoteException异常。
第二:定义一个实现类继承UnicastRemoteObject类和实现上面的接口。
第三:建立一个rmi Server进程服务器,使用Naming.bing("rmi://localhost:1099/类名",对象名)
第四:建立一个客户端,使用(接口名)Naming.loop("rmi://localhost:1099/类名");
在第三步在dos窗口进入到建立的服务器类的根目录下,然后运行rmiregistry命令启动rmi注册程序。
然后先运行第三步的类,然后运行第四步创建的类.
实例 :
package com.testRMI;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface TestRemote extends Remote {
public String add() throws RemoteException;
public String add(int a ,int b)throws RemoteException;
}
//////////////////////////////
package com.testRMI;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class TestRemoteImpl extends UnicastRemoteObject implements TestRemote {
protected TestRemoteImpl() throws RemoteException {
super();
// TODO Auto-generated constructor stub
}
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public String add() {
// TODO Auto-generated method stub
return "hello world";
}
@Override
public String add(int a, int b) {
// TODO Auto-generated method stub
return "相加了"+(a+b);
}
}
*****************************
package com.testRMI;
import java.net.MalformedURLException;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.RemoteException;
public class Server {
public static void main(String[] args) throws RemoteException, MalformedURLException, AlreadyBoundException{
TestRemote testRemote=new TestRemoteImpl();
/**
* 将要被别人远程访问的对象绑定到类名称
*/
Naming.bind("rmi://localhost:1099/fdsfdsa", testRemote);
System.out.println("服务器正在启动中。。。。。。");
}
}
**********************************
package com.testRMI;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
public class Client {
/**
* @param args
* @throws NotBoundException
* @throws RemoteException
* @throws MalformedURLException
*/
public static void main(String[] args) throws MalformedURLException, RemoteException, NotBoundException {
// TODO Auto-generated method stub
TestRemote testRemote=(TestRemote) Naming.lookup("rmi://localhost:1099/fdsfdsa");
System.out.println(testRemote.add());
}
}
然后在dos下,进入到Server类的class文件的根目录下:运行rmiregistry命令
然后分别运行Server和Client类。
页:
[1]