rmic DBServer


[ 다음 글들 ] [ 이어서 글올리기(답하기) ] [ 자바 묻고 답하기 ]

글쓴이 :이원영 1998년 10월 22일 15:21:49

In Reply to: 무슨 에런지 봐주세요!! posted by 김정혜 on 1998년 10월 21일 16:09:14:


rmic DBServer
를 안 하셨네요...


RMI로 개발하는 방법의 Process는 다음과 같습니다.


1. java.rmi.Remote 인터페이스를 상속받아 임의의
원하는 Remote Interface를 만듭니다.


예)
[HelloInterface.java]
import java.rmi.*;
public interface HelloInterface extends java.rmi.Remote {
Object sayHello() throws java.rmi.RemoteException;
}


2. 위의 HelloInterface를 구현할(implements) 실제 Remote Object를
만듭니다.


예)
[HelloServer.java]
import java.net.*;
import java.util.*;
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.registry.LocateRegistry;


public class HelloServer extends UnicastRemoteObject implements HelloInterface
{
private String name;
public HelloServer(String s) throws java.rmi.RemoteException {
super();
name = s;
}
public Object sayHello() throws RemoteException {
String string = new String("Hey! How are you? Im's Remote Server." );
return (Object)string;
}
public static void main(String args[]) {
int PORT = 7943;
try {
InetAddress address = InetAddress.getLocalHost();
String thisHost = address.getHostAddress();
Properties properties = System.getProperties();
properties.put("java.rmi.server.hostname", thisHost);
System.setProperties(properties);
System.setSecurityManager (new RMISecurityManager());
LocateRegistry.createRegistry( PORT );
HelloServer server = new HelloServer("HelloServer");
Naming.rebind("//:" + PORT + "/HelloServer", server);
}
catch (Exception e) {
System.out.println("HelloServer.main: an exception occurred:");
e.printStackTrace();
}
}
}


3. 서버를 컴파일 합니다.
$ java HelloServer.java
(자동으로 HelloInterface.java도 컴파일이 됩니다.)


4. 질문하신분은 이과정을 생략 하신듯 한데,
위의 컴파일된 HelloServer.class를 이용해
Stub와 Skeleton을 만들어야 합니다.
RMI에서 Client와 Server는 이것을 이용해 통신을
하거든요.
$ rmic HelloServer


5. 이제 Client를 만들어야 겠지요...
예제로서 Applet으로 Client를 만든 예제는 아래와 같습니다.
[HelloApplet.java]
import java.awt.*;
import java.rmi.*;
public class HelloApplet extends java.applet.Applet {
private final int PORT = 7943;
String message ;
TextArea t;
public void init() {
t = new TextArea();
setLayout(new BorderLayout());
add("Center", t);
try {
HelloInterface server = (HelloInterface) Naming.lookup("rmi://power:" + PORT + "/HelloServer");
String message = (String)server.sayHello();
t.append(message + "\n");


} catch (Exception e) {
System.out.println("HelloApplet: an exception occurred:");
e.printStackTrace();
}
}
}


6. 서버를 기동합니다.
$ java HelloServer &


7. Applet으로 Client를 붇이려면 html파일이 있어야
겠죠..
[HelloApplet.html]
<HTML>
<title>Hello World</title>
<center> <h1>Hello World</h1> </center>
The message from the HelloServer is:
<p>
<applet code="HelloApplet.class" width=500 height=120>
</applet>
</HTML>


이제 이 파일을 Appletviewer나 웹 브라우져를 통해
확인할 수 있습니다.


PS: 웹서버를 경유해서 실제로 보시려면
RMI서버가 웹 서버가 있는 머신에 위치해야 합니다.


행운을...


PS2: rmiregistry를 명시적으로 띄워놓고 할 수도 있지만
위의 예제는 HelloServer.java의 main에서
LocateRegistry.createRegistry( PORT );을 이용해
java HelloServer 를 실행시에 자동으로 Registry를
기동하게 했습니다.



다음 글들:



이어서 글올리기(답하기)

이름:
E-Mail:
제목:
내용:
HTML 태그 포함 여부: HTML 문서일 경우 체크
관련 URL(선택):
URL 제목(선택):
관련 이미지 URL:


[ 다음 글들 ] [ 이어서 글올리기(답하기) ] [ 자바 묻고 답하기 ]