3. 로그램 대 구 명 ¶
객 대 는 ObjTimeServer며 getTime()라는 메드를 가고 는데 getTime()는 문 로 반 다. CORBA 객를 는 단는 를 만드는 것다. 는 IDL로 되며 는 IDL 러로 된다. IDL 러는 기본로 가 는(를들면 VisiBroker) ORB 되 는 것다. IDL로 된 를 면 러는 두 개 드 다. 드 들 각 IDL 러가 록 된 로그래밍 로 되 다. 기 는 ORB는 Java ORB므로 드 Java(Stub, Skeleton)로 되 것다. IDL 러 되는 드는 록 객(proxy object) 및 드다. 라는 록 객를 IDL로 된 객 런 대 다. 바꾸 말녀 록 객는 라가 는 대리("stand-in") 객데 격 객가 객럼 보게 다는 것다. 드는 러 를 는 객 기 된다. 되는 드는 명 구다. 명 객 런를 변 결 격 로 보내며, 객 런 대 따르붙는 라미를 링고, 를 객 런가 는 객 메드 달 메드를 고 그 결과를 반려고 는 것다. 바꾸 말면 라는 IDL 러 된 록 객를 가고 는데, 그것 객로 는 것럼 보 것라는 미다. ORB 는 것 록 객 무며 ORB는 결 관리고 라미를 겨며 결과를 리다. 런 로 대 명 다.
4. IDL ¶
~cpp //TestTimeServer module TestTimeServer { interface ObjTimeServer { string getTime(); }; };
IDL 면(idl2java) 과 드가 된다.
5. 구 객(implementation object) ¶
IDL 면 과 드가 된다. 러가 ObjTimeServer_Skeleton.java라는 며, 기는 되는 드가 들 다고 가. IDL 된 를 갖는 객를 구만 다. 말 드, 구 다는 것다. 그러 구 객 래를 기 는 IDL 러 만들 래 결 다. 결 또는 루 다.
~cpp //구 래 대 가 드 //TestTimeServerImpl.java import CORBA.*; class ObjTimeServerImpl extends TestTimeServer.ObjTimeServer_Skeleton { //변 // public ObjTimeServerImpl() { } //메드 public String getTime() throws SystemException { return ("The current time is : " + current_time); } }
6. 구 ¶
래는 경 기고, 구 객를 며, 라가 구 객를 록고, 벤를 들는 다.
~cpp // 객 대 가 드 import CORBA.*; public class TimeServer_Server { public static void main(String [] args) { try { // ORB 기 ORB orb = ORB.init(); . . // 구 래 ObjTimeServerImpl time_server_obj = new ObjTimeServerImpl(args[0]); . . } catch(SystemException e) { System.err.println(e); } } }
7. 라 구 ¶
라 구 기본로 다 가 단를 루다. 먼 CORBA 경, ORB를 기다. ORB를 기다는 것 ORB 객(pseudo-object) 대 객 런를 게 된다는 것 미다. ORB가 ' 객'라 리는 는 그 메드가 런 과 라브러리 로 공되며, 객 런는 CORBA 대 라미로 달될 기 때문다. 그 다 단는 객 런를 는 것다. 객 런는 명 데 구다. 그러나 객 런를 문로 바로 가게 될 다. 것 '객 런 문'라 리며, 그 결과 는 문 '문 객 런'라고 다.(IOR) 문 객 런는 래 "" 객 런로 다 바뀔 다. 과 CORBA, ORB 된 두 가 object_to_string()과 string_to_object()를 루다. 모든 CORBA 2.0 ORB는 가능 문 객 런를 돌가는 객 런로 바꿀 다. 로 객 범를 면 그러 결과를 다. 러 'narrow'라 다. ORB를 기고 객 런를 CORBA 로그래밍 래 객 로그래밍럼 동게 된다. 라가 객 메드를 게 되면, 로 그 메드는 격 객 께 동만 라가 보기는 객 께 동는 것럼 보다.
~cpp // 단 당는 드 //TimeServer_Client.java import java.io.*; import CORBA.*; public class TimeServer_Client { public static void main(String [] args) { try{ //ORB 기 ORB orb = ORB.init(); . . // 객 런를 내는 부, 기는 라 로그램 로 문 객 런가 다고 가다. object myObj = orb.string_to_object(args[0]); . . // 객 런 범를 로 다.(narrow down) TestTimeServer.ObjTimeServer TimeServer = TestTimeServer.ObjTimeServer_var.narrow(obj); } catch(SystemException e) { System.err.println(e); } } }