본문 바로가기

Java SE/RMI ex 02

RMI ex 02

클라이언트가 검색할 사원의 이름을 서버에 전달하면 서버는 텍스트파일에서 사원의 정보를 검색하여 해당라인을 클라이언트에게 리턴해 준다.

인터페이스

import java.rmi.*;

public interface EmpServer extends Remote {

 public String getEmp(String empName) throws RemoteException;

}


서버 클래스

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.RMISecurityManager;
import java.rmi.server.UnicastRemoteObject;
import java.io.*;

public class EmpServerImpl extends UnicastRemoteObject implements EmpServer {
 
 public EmpServerImpl() throws RemoteException {
    super();
 }
 
 public String getEmp(String empName) {
 BufferedReader br = null;
 try{
  br = new BufferedReader(new FileReader("emp.dat"));
  String line = null;
  while((line=br.readLine())!=null) {
   if(line.indexOf(empName)!= -1) {
    br.close();
    return line;
   }
  }
  br.close();
 }catch(Exception e){
  e.printStackTrace();
 }
    return null;
 }
 
 public static void main(String args[]) {
 
  try {

      EmpServerImpl obj = new EmpServerImpl();
 
      Naming.rebind("EmpServer", obj);
 
      System.out.println("EmpServer bound in registry");

  } catch (Exception e) {

      System.out.println("EmpImpl err: " + e.getMessage());

      e.printStackTrace();

  }
 }
}



클라이언트

import java.rmi.*;
import java.io.*;

public class EmpClient {

    public static void main(String[] args) {

        try {
   BufferedReader  br = new  BufferedReader(new InputStreamReader(System.in));
   System.out.print("검색하실 사원의 이름을 입력해 주세요 ");
   String empName = br.readLine();

            EmpServer obj = (EmpServer)Naming.lookup("rmi://localhost/EmpServer");

            String str = obj.getEmp(empName);

            System.out.println("서버에서 온 메시지");
   System.out.println(str);

        } catch (Exception e) {

            System.out.println(e.getMessage());

            e.printStackTrace();

        }
    }
}



emp.dat