Subject : JAVA RMI Test 첫번째 예제 Solution Description: ===================== . 구현코드 생성 www% mkdir $HOME/temp/rmi/src/examples/hello - remote interface 정의 www% vi Hello.java package examples.hello; public interface Hello extends java.rmi.Remote { String sayHello() throws java.rmi.RemoteException; } - remote interface를 구현하는 java remote object(server) 정의 www% vi HelloImpl.java package examples.hello; import java.rmi.*; import java.rmi.server.UnicastRemoteObject; public class HelloImpl extends UnicastRemoteObject implements Hello { private String name; public HelloImpl(String s) throws java.rmi.RemoteException { super(); name = s; } public String sayHello() throws RemoteException { return "Hello World!"; } public static void main(String args[]) { // Create and install the security manager System.setSecurityManager(new RMISecurityManager()); try { HelloImpl obj = new HelloImpl("HelloServer"); Naming.rebind("HelloServer", obj); System.out.println("HelloImpl created and bound in the registry to the name HelloServer"); } catch (Exception e) { System.out.println("HelloImpl.main: an exception occurred:"); e.printStackTrace(); } } } - server의 method를 부르는(invoke) applet 생성 www% vi HelloApplet.java package examples.hello; import java.awt.*; import java.rmi.*; public class HelloApplet extends java.applet.Applet { String message = ""; public void init() { try { Hello obj = (Hello) Naming.lookup("//" + getCodeBase().getHost() + "/HelloServer"); message = obj.sayHello(); } catch (Exception e) { System.out.println("HelloApplet: an exception occurred:"); e.printStackTrace(); } } public void paint(Graphics g) { g.drawString(message, 25, 50); } } . Compile & Generate Stubs and Skeletons www% cd $HOME/temp/rmi/src/examples/hello www% javac -d $HOME/public_html/codebase Hello.java HelloImpl.java HelloApplet.java www% cd $HOME/public_html/codebase www% rmic -d $HOME/public_html/codebase examples.hello.HelloImpl www% cd ./examples/hello - html code 생성 www% vi index.htmlHello World The message from the HelloServer is: Hello World
www% ls Hello.class HelloImpl.class index.html HelloApplet.class HelloImpl_Skel.class HelloApplet.html HelloImpl_Stub.class - $HOME/public_html/codebase를 CLASSPATH 설정 . 실행 www% rmiregistry & /* rmi bootstrap registry start, default port 1099 */ www% cd $HOME/public_html/codebase www% java -Djava.rmi.server.codebase=http://www.svc.hei.co.kr/~java/codebase/ examples.hello.HelloImpl & /* Server start, "HelloImpl created and bound in the registry to the name server HelloServer" message 출력, ok */ - 당신의 시스템(client)에서 www% appletviewer http://www.svc.hei.co.kr/~java/codebase/examples/hello/index.html ---------------------------------------------------------------------------- Revision History 작성일자 : 97.07.10 작성자 : 이민호 수정일자 : 수정자 :