EmpDTO 클래스를 이용하여 서버에서 검색된 사원정보가 이 클래스의 인스턴스에 저장되어 클라이언트까지 전달될 수 있도록 하였다.
인터페이스
import java.rmi.*;
public interface EmpServer extends Remote {
public EmpDTO 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 EmpDTO getEmp(String empName) {
EmpDAO dao = new EmpDAO();
return dao.search(empName);
}
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();
}
}
}
EmpDAO.java
import java.io.*;
import java.util.*;
public class EmpDAO
{
public EmpDTO search(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) {
StringTokenizer token = new StringTokenizer(line, "|");
br.close();
return new EmpDTO(token.nextToken(), token.nextToken(), token.nextToken(), token.nextToken());
}
}
br.close();
}catch(Exception e){
e.printStackTrace();
}finally{
if(br!=null){
try{
br.close();
}catch(Exception ex){}
}
}
return null;
}
public static void main(String[] args) {
EmpDAO dao = new EmpDAO();
EmpDTO emp = dao.search("홍길동");
System.out.println(emp.getName());
}
}
EmpDTO.java
public class EmpDTO implements java.io.Serializable
{
String name;
String address;
String phone;
String email;
public EmpDTO(String name, String address, String phone, String email) {
this.name = name;
this.address = address;
this.phone = phone;
this.email = email;
}
public String getName(){
return name;
}
public String getAddress(){
return name;
}
public String getPhone(){
return phone;
}
public String getEmail(){
return email;
}
public static void main(String[] args) {
EmpDTO emp = new EmpDTO("홍길동", "강원도 정선군", "543-67-765", "hong@yaho.co.kr");
String name = emp.getName();
System.out.println(name);
}
}
emp.dat
최재철|강원도 횡성군|865-987-3456|choijc@yahoo.com
김인철|충청남도 대천시|4321-543-567|kimcj@empal.com
클라이언트
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");
EmpDTO emp = obj.getEmp(empName);
System.out.println("서버에서 온 메시지");
System.out.println("이름:"+emp.getName());
System.out.println("주소:"+emp.getAddress());
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}