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 설정을 확인하는 단계를 거치도록 한다.