Лабораторная работа: Реализация почтового клиента и сервера на основе CORBA

4. Регистрация имени удаленного объекта (HelloImpl)

String name = «Hello»;

NameComponent path[] = ncRef.to_name(name);

ncRef.rebind (path, href);

Регистрация имени производится для того, чтобы клиент смог найти удаленный объект. Этой цели служит функция rebind (NameComponent[] nc, Object obj) интерфейса NamingContext.

5. Ожидание запросов от клиента

orb.run();

Теперь сервер готов к работе.

// HelloServer.javaimport HelloApp.*;import org.omg. CosNaming.*;import org.omg. CosNaming. NamingContextPackage.*;import org.omg.CORBA.*;import org.omg. PortableServer.*;import org.omg. PortableServer.POA;import java.util. Properties;class HelloImpl extends HelloPOA {private ORB orb;public void setORB (ORB orb_val) {orb = orb_val;} // implement sayHello() methodpublic String sayHello() {return ?\nHello world!!\n?;} // implement shutdown() methodpublic void shutdown() {orb.shutdown(false);}}

public class HelloServer {

public static void main (String args[]) {

try {

// create and initialize the ORB

ORB orb = ORB.init (args, null);

// get reference to rootpoa & activate the POAManager

POA rootpoa = POAHelper.narrow (orb.resolve_initial_references («RootPOA»));

rootpoa.the_POAManager().activate();

// create servant and register it with the ORB

HelloImpl helloImpl = new HelloImpl();

helloImpl.setORB(orb);

// get object reference from the servant

org.omg.CORBA. Object ref = rootpoa.servant_to_reference(helloImpl);

Hello href = HelloHelper.narrow(ref);

// get the root naming context

// NameService invokes the name service

org.omg.CORBA. Object objRef =

orb.resolve_initial_references («NameService»);

// Use NamingContextExt which is part of the Interoperable

// Naming Service (INS) specification.

NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

К-во Просмотров: 294
Бесплатно скачать Лабораторная работа: Реализация почтового клиента и сервера на основе CORBA