RMI_1.1 接口

package com.xm.rmi;

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

public interface Compute extends Remote{
	//远程方法需要抛出此异常  只有在这个中声明的方法才能被远程方法调用
	<T> T executeTask(Task<T> t) throws RemoteException;
}

package com.xm.rmi;

public interface Task<T> {
	T execute();
}

package com.xm.rmi.service;

import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;

import com.xm.rmi.Compute;
import com.xm.rmi.Task;

public class ComputeEngine  implements Compute{

	public ComputeEngine() {
		super();
	}

	@Override
    public <T> T executeTask(Task<T> t) {
        return t.execute();
    }
		
	public static void main(String args[]){
		//安全
		if (System.getSecurityManager() == null) {
            System.setSecurityManager(new SecurityManager());
        }
		try {
				String name = "Compute";
				ComputeEngine engine=new ComputeEngine();
				Compute stub = (Compute) UnicastRemoteObject.exportObject(engine,0);
	            Registry registry = LocateRegistry.getRegistry();
	            registry.rebind(name, stub);
	            System.out.println("ComputeEngine bound");
		} catch (RemoteException e) {
			e.printStackTrace();
		} 
	}
}

你可能感兴趣的:(RMI_1.1 接口)