Summing.java 소스예제

import java.rmi.*;

public interface Summing extends Remote {
 int sum(int max) throws RemoteException;
 int sum2(int min, int max) throws RemoteException;
}


SummingImpl.java 소스예제
import java.rmi.*;
import java.rmi.server.*;

public class SummingImpl extends UnicastRemoteObject implements Summing{
 
 public SummingImpl() throws RemoteException {
 }
 
 public int sum(int max) throws RemoteException {
  if (max <= 0) return 0;
  else return (max + sum(max-1));
 }
 
 public int sum2(int min, int max) throws RemoteException {
   return min + max;
 }
 
 public static void main(String[] args) {
  try {
   SummingImpl s = new SummingImpl();
   Naming.rebind("SumServer", s);
  } catch(Exception e) {
   System.out.print(e);
  }
 } 
}


실행된 환경에서만 환경변수를 일시적으로 설정하여 준다.

 D:\JavaNetwork>set classpath=%classpath%;.


스터브와 스켈레톤 파일을 생성한다. 자바 1.2 이후에는 스터브로 통일되었으므로 스터브 파일만 생성되는 것을 확인할 수 있다. SummingImpl_Stub.class 파일 생성확인

 
D:\JavaNetwork>rmic -d . SummingImpl


서버측에 필요한 파일(Summing.class, SummingImpl.class, SummingImpl_Stub.class)을 원하는 서버폴더를 선택하여 복사한다. 여기서 기재하는 내용은 기존 폴더를 서버로 이용한다.

서버측에서 네이밍 서버(rmiregistry)를 실행한다.

 
D:\JavaNetwork>start rmiregistry


서버측에서 RMI 서버를 실행한다.

 
D:\JavaNetwork>java SummingImpl



SummingClient.java 소스예제

import java.rmi.*;

public class SummingClient{
 public static void main(String[] args) {
  if(args.length < 2) {
   System.out.println("Specity IP & Number");
   System.exit(1);
  }
  
  try {
   String serverURL = "rmi://" + args[0] + "/SumServer";
   Summing s = (Summing) Naming.lookup(serverURL);
   System.out.println("Your Input = " + args[1] + " + " + args[2]);
   int min = Integer.parseInt(args[1]);
   int max = Integer.parseInt(args[2]);
   
   if (args[2] == null) {
    System.out.println("The sum 1 to " + max + " is " + s.sum(max));
   } else {
    System.out.println("The sum " + min + "+" + max + " is " + s.sum2(min, max)); 
   }   
  } catch(Exception e) {
   System.out.print(e);
  }
 }
}


클라이언트측에 필요한 파일(Summing.class, SummingClient.class, SummingImpl_Stub.class)을 원하는 클라이언트 폴더를 생성한 뒤 복사한다.


 
D:\JavaNetwork\Client> java SummingClient 127.0.0.1 100


참고사항 : 프롬프트에서 설정한 classpath는 프롬프트 창을 껐다 켤 경우 윈도우즈 환경변수의 원래값으로 재설정되니 classpath 설정을 확인하는 단계를 거치도록 한다.

Posted by 리트모스
: