Hello World on RMI

3523 단어 rmi
1. 먼저 서버에서 발표할 인터페이스를 정의하고 원격 인터페이스를 계승해야 한다.
package org.autumn.rmi.client;

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

public interface IHello extends Remote {

	String say() throws RemoteException;

}

2. 서버에서 이 인터페이스를 실현하려면 Unicast Remote Object 클래스를 계승해야 한다.
package org.autumn.rmi.server;

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

import org.autumn.rmi.client.IHello;

public class HelloImpl extends UnicastRemoteObject implements IHello {

	private static final long serialVersionUID = -22963382911437689L;

	public HelloImpl() throws RemoteException {
		super();
	}

	@Override
	public String say() throws RemoteException {
		return "hello from remote server";
	}

}

3. 서버에서 디렉터리 서비스를 열고 이 실행 클래스를 등록합니다.
package org.autumn.rmi.server;

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

import org.autumn.rmi.client.IHello;

public class HelloServer {

	public static void main(String[] args) {
		System.setProperty("java.security.policy", "F:\\Server.policy");
		if (System.getSecurityManager() == null) {
			System.setSecurityManager(new RMISecurityManager());
		}
		try {
			LocateRegistry.createRegistry(1099);
			IHello hello = new HelloImpl();
			Naming.rebind("rmi://192.168.0.193:1099/hello", hello);
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
	}

}

Server.정책 파일의 내용은 다음과 같습니다.
grant  
{  
 permission java.net.SocketPermission  
      "*:1000-9999","accept,connect,listen,resolve";  
}; 

4. 서버 외부에 발표된 인터페이스를 클라이언트로 복사합니다. 패키지 이름을 포함합니다.
5. 클라이언트 호출 프로그램.
package org.autumn.rmi.client;

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

public class HelloClient {

	public static void main(String[] args) {
		System.setProperty("java.security.policy", "F:\\Client.policy");
		if (System.getSecurityManager() == null) {
			System.setSecurityManager(new RMISecurityManager());
		}
		try {
			IHello hello = (IHello) Naming.lookup("rmi://192.168.0.193:1099/hello");
			System.out.println(hello.say());
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (NotBoundException e) {
			e.printStackTrace();
		}
	}

}

Client.정책 파일의 내용은 다음과 같습니다.
grant  
{  
 permission java.net.SocketPermission  
      "*:1000-9999","accept,connect,listen,resolve";  
}; 

5. HelloServer 클래스를 실행하여 서버 서비스를 시작합니다.클라이언트 RMI 호출을 위해 HelloClient 클래스로 이동합니다.
출력:hello from remote server

좋은 웹페이지 즐겨찾기