Java RMI 远程方法调用

1.定义接口
package com.demo.rmi.dao.impl;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface RemoteDao extends Remote {

	public String say()throws RemoteException;
}

2.实现接口
package com.demo.rmi.dao.impl;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class RemoteDaoImpl extends UnicastRemoteObject implements
		RemoteDao {

	public RemoteDaoImpl() throws RemoteException {
		super();
		// TODO Auto-generated constructor stub
	}
	@Override
	public String say() throws RemoteException {
		// TODO Auto-generated method stub
		
		return "[来自服务器的问候]:你好! 很高心见到你!";
	}
}

3.服务器端
package com.demo.rmi.server;

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;

import com.demo.rmi.dao.impl.RemoteDaoImpl;
import com.demo.rmi.dao.impl.RemoteDao;

public class TestServer {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			LocateRegistry.createRegistry(1099);
			RemoteDao server=new RemoteDaoImpl();
			try {
				Naming.rebind("//127.0.0.1:1099/SAMPLE-SERVER", server);
				System.out.println("[服务已启动]");
			} catch (MalformedURLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

4.客户端
package com.demo.rmi.client;

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

import com.demo.rmi.dao.impl.RemoteDaoImpl;
import com.demo.rmi.dao.impl.RemoteDao;

public class TestClient {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			try {
				RemoteDao server=(RemoteDao)Naming.lookup
						("//127.0.0.1:1099/SAMPLE-SERVER");
				System.out.println(server.say());
			} catch (MalformedURLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NotBoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

猜你喜欢

转载自xiongjiajia.iteye.com/blog/1292142
今日推荐