gpt4 book ai didi

java - 尝试使用 corbaloc url 连接到 CORBA 服务

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:19:27 24 4
gpt4 key购买 nike

    String[] orbargs= {};
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(orbargs, null);
org.omg.CORBA.Object cobj = orb.string_to_object("corbaloc:iiop:10.1.1.200:6969/OurServiceHelper");
_OurServiceHelper cpsh = _OurServiceHelperHelper.narrow(cobj); // Get's stuck
cpsh.ourMethod();

那条窄路刚好悬空。

我的服务设置为在静态端口上运行。我们知道它有效,因为我们通常通过 NamingService 查找它。

我做错了什么?

最佳答案

如果您正在使用 NamingService,您实际上应该使用 corbaname url 而不是 corbaloc url。如果您的命名服务在端口 6969 上,下面将起作用。如果“OurServiceHelper”在 6969 上但 NamingService 在不同的端口上,您需要在下面的 url 中指定命名服务的端口而不是 6969。端口的服务器对象嵌入在 NamingService 返回的 ior 中,因此不需要指定它。

"corbaname:10.1.1.200:6969#OurServiceHelper"

回复:评论:首先是关于 IOR 和提供对象的注释。如果您希望您的服务对象在进程重新启动时保持不变,您必须在包含对象的 POA 上设置 PERSISTENT 生命周期策略。此外,IOR 嵌入了服务器的 IP 和端口,因此如果您想要生成在重新启动后保持一致的 IOR,您必须使用静态 IP 和端口号以及使用持久生命周期策略。

名称服务让您不必担心很多这样的事情,从而使事情变得更容易。只要可以在已知位置访问名称服务,您的所有服务器对象都可以在实例化时向名称服务注册自己,然后客户端可以访问它们而无需知道它们位于何处。

如果您决定不使用名称服务,您的代码将不得不进行一些更改。如果您使用 corbalocurl,那么您使用的是互操作命名服务 (INS)。请参阅:http://java.sun.com/j2se/1.4.2/docs/guide/idl/INStutorial.html .使用 INS,您需要使用 NamingContextExt 对象的功能。具体来说,要解析您构建的 corabloc url,您应该调用 NamingContextExt::resolve_str 函数并传入 url。

关于java - 尝试使用 corbaloc url 连接到 CORBA 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2800942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com