在 Java 中运行嵌入式 CORBA 命名服务

Posted

技术标签:

【中文标题】在 Java 中运行嵌入式 CORBA 命名服务【英文标题】:Run an embedded CORBA naming service in Java 【发布时间】:2012-02-07 15:47:52 【问题描述】:

是否可以使用 Java 1.5 CORBA 服务器应用程序运行嵌入式命名服务,以便可以通过“corbaloc”简写 URL 而不是长 IOR 引用来访问其服务对象,但是 没有运行任何其他守护进程,比如 ORBD? 例如。 corbaloc::127.0.0.1:12345/MyService

我注意到在 Java 1.6+ 中有一个 TransientNameService 类,但我不确定它是不是我认为的那样..

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

在 Sun ORB 中,corbaloc: 引用被视为初始引用。它们不需要任何命名服务,而是由 ORB 本身解析。

以下是注册初始引用的方法:

Properties props = new Properties();
props.put("com.sun.CORBA.POA.ORBPersistentServerPort", "12345");
ORB orb = ORB.init(args, props);
POA rootPOA = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
MyServicePOA myServicePOA = new MyServiceImpl();
rootPOA.activate_object(myServicePOA);
MyService myService = myServicePOA._this(orb);

((com.sun.corba.se.spi.orb.ORB) orb).register_initial_reference("MyService", myService);

在此之后 MyService 将可通过 corbaloc::127.0.0.1:12345/MyService 访问

【讨论】:

以上是关于在 Java 中运行嵌入式 CORBA 命名服务的主要内容,如果未能解决你的问题,请参考以下文章

Corba 命名服务

如何从 CORBA IOR 和 NamingContextExt 中提取服务器主机/IP? [爪哇]

等待对象在 CORBA 命名服务中绑定

org.omg.CORBA.OBJECT_NOT_EXIST 尝试获取根命名上下文“NameService”时

CORBA 客户端有没有办法访问服务器 IOR 文件?

在运行时获取服务器上的 Corba 客户端活动