• 검색 결과가 없습니다.

관리자와 게이트웨이의 구현

interface PullConsumer {

void disconnect_pull_consumer();

};

};

(2) 게이트웨이에서 관리자로의 사건통지

게이트웨이는 대리자로부터 사건통지를 수신할 수 있다. 즉 대리자 에서 M-EVENT-REPORT CMIS를 사용하여 사건을 통지한다는 것이다.

CORBA와 전용의 망 관리 프로토콜과의 게이트웨이에서는 각 프로토콜에 알맞은 방법으로 사건통지 구조를 설계하여 구현할 수 있다.

게이트웨이에서 수신한 사건은 사건채널을 이용하여 관리자로 전달되며 이러한 구조에서는 게이트웨이가 사건 데이터의 공급자가 되고 관리자가 소비자가 된다.

3. 관리자와 게이트웨이의 구현

1) 구현 환경

본 논문은 SOLARIS 2.5.1 운영체제하에서 구현하였으며, OSI 대리자 는 UCL(University College of London)에서 개발된 OSI 망관리 플랫폼인 OSIMIS(OSI Management Information Service)를 이용하여 구현하였으며 하부 통신은 ISODE(ISO Development Environment)를 이용하였다.

CORBA 플랫폼으로는 Inprise사의 Visibroker C++ and Java 3.3을 이용하 였으며 자바 애플릿을 구현하기 위해 JDK 1.1.6을 사용하였고 웹 서버는

Aparche 1.3을 사용하였다.

2) 관리자의 구현

본 논문에서 구현한 관리자는 웹 브라우저에서 실행이 되어져야하기 때 문에 게이트웨이 인터페이스 정의를 Visibroker의 idl2java 컴파일러로 컴 파일 하여 클라이언트 스터브 코드를 생성하였으며 이 소스코드를 이용하 여 관리자 애플릿을 작성하였다. 관리자 애플릿은 자바로 작성되었으며 게 이트웨이와의 통신을 위해 CORBA 2.0 스펙에 따라 관리코드를 작성하였 다. 따라서 구현된 관리자 애플릿은 CORBA 스펙과 자바를 사용하여 웹 브라우저에서 실행되는 Object Web방식으로 구현함으로써 관리자에게 웹 브라우저 위에서 관리자 애플릿이 실행하여 관리정보를 주고받도록 하였 다. 관리자 애플릿은 관리자에게 대리자를 관리할 수 있는 인터페이스를 제공하며, 구현된 게이트웨이에 의해 지원되는 인터페이스를 통하여 대리 자로 관리정보를 보낼 수 있으며 또한 관리자로부터 자료를 입력받을 수도 있다. 이때 사용되는 메소드는 Get, Set, Action, Create, Delete 중에 하나 이며, 웹 브라우저를 이용하여 OSI 객체 및 그 속성들에 대하여 관리할 수 있게 하였다.

아래에 스터브(stub)를 기초로 구현된 관리자 애플릿의 일부를 기술하였 다.

...

// Variable creation and instance int GTrequestID=0;

CMIS_GETREQ GTgetReq = new CMIS_GETREQ();

...

// Assignment to Variable

GTrequestID = GTrequestID + 1;

// Request

Getstatus = CMISGET(GTrequest, GTgetReq, GTlinkedList, GTgetres, Gterrors, GTerrorInfo);

...

3) 게이트웨이 구현

CORBA에서 CMIP/CMIS를 통하여 OSI시스템과 상호작용하기 위해서 는 관련 객체 모델들 사이의 매핑과 도메인간에 프로토콜 변환을 처리하는 메커니즘이 제공되어야 한다. 이러한 상호작용변환을 담당하는 개체를 게 이트웨이라고 하며, 사용되는 망관리 프로토콜에 따라 다수의 게이트웨이 가 존재할 수 있다. 본 논문에서는 OSI 대리자와 관련 있는 게이트웨이를 CORBA/CMIS게이트웨이라고 정의하였고 CMIS-레벨 인터페이스를 기반 으로 하는 게이트웨이 모델을 사용하여 OSI기반의 대리자와 CORBA기반 의 관리자 사이의 변환을 담당하도록 구현하였으며, 망관리 프로토콜에 의 존적인 대리자를 관리자 측면에서 CORBA 대리자로 볼 수 있도록 추상화 하였다. 구현된 CORBA/CMIS게이트웨이는 게이트웨이 인터페이스를 정의 한 IDL을 컴파일 했을 때 생성되는 스켈레톤(skeleton)을 기초로 구현되었 으며 구현 결과 중의 일부를 아래에 기술하였다.

Gateway (const char *object_name = NULL):_sk_CMISService (object_name)

{ MInitOption *miop[2]; /* Connect options */

if (initialiseSyntaxes(NULLCP, attrSyntaxes) == NOTOK) error(NULLCP, "CMIPGateway: cannot initialise syntaxes");

miop[0] = miop[1] = (MInitOption *) 0;

if ((msd = m_initialise(service, host, miop)) < 0)

error(NULLCP, "cannot establish association to %s at %s", service, host); }

...

// Convert the string Argument to CMIS parameter // Object Class

if(GTgetReq.GET_req_class.MID_mid_type = GlobalForm) ( Obj_class.Mid_type = MID_GLOBAL;

으로부터 관리 요청을 받아 적절한 CMIS API를 통하여 OSI 대리자에게 관리 요청을 전달한다. OSI 대리자는 CORBA/CMIS 게이트웨이를 통해 전달된 관리자의 관리 요청을 수행 한 다음, 다시 CMIS API를 통해 그 결과를 CORBA/CMIS 게이트웨이에게 반환한다. CORBA/CMIS 게이트웨 이는 관리자에게 응답을 할 때는 클라이언트 역할을 하게되며, 관리자 상 에서 적절한 동작을 호출하여 그 응답을 관리자에게 IIOP를 통해 전달한 다.

관련 문서