Java CORBA::使用IIOP获取客户机ORB地址和端口

Java CORBA::使用IIOP获取客户机ORB地址和端口,java,corba,iiop,orb,Java,Corba,Iiop,Orb,我使用IIOP协议在CORBA中应用,我使用JDK 6的JavaIDL组件,这是另一个ORB实现 用Java语言实现客户端和服务器 JDK ORB实现中是否有任何方法可以从 服务器(ORB)代码 或 有没有办法使用IIOP协议,让客户端获得主机和端口 这是我们为识别客户而做的工作,以跟踪请求的用户我认为没有任何便携式方法可以做到这一点。我不知道,也许对你的特殊球体有什么好处。回想一下,CORBA非常努力地向应用程序隐藏传输细节。应用程序甚至可能没有使用IIOP,因此在任何情况下都无法获取TCP主

我使用IIOP协议在CORBA中应用,我使用JDK 6的JavaIDL组件,这是另一个ORB实现

用Java语言实现客户端和服务器

JDK ORB实现中是否有任何方法可以从 服务器(ORB)代码

有没有办法使用IIOP协议,让客户端获得主机和端口


这是我们为识别客户而做的工作,以跟踪请求的用户

我认为没有任何便携式方法可以做到这一点。我不知道,也许对你的特殊球体有什么好处。回想一下,CORBA非常努力地向应用程序隐藏传输细节。应用程序甚至可能没有使用IIOP,因此在任何情况下都无法获取TCP主机和端口信息

您可能想考虑向IDL中添加额外的标识符参数,以便服务器能够识别客户端。您也可以考虑让客户端在服务器上调用“登记”函数,服务器发出一个标识符,所有客户端在后续调用中都必须返回服务器。


该标识符可以简单到字符串或整数,也可以复杂到服务器必须使用公钥验证的某种安全令牌。这完全取决于应用程序的要求。

这取决于具体情况,但有时您需要从IOR中提取主机/端口,以便进行测试、记录和调试。IOR包含主机和端口,您只需要从IOR表示的字节数组对其进行解码。因此,只要以来自GNU类路径的CORBA规范和IorParser.java(大规模依赖项)为例,如果周末有时间,就自己解码:)

如果您没有像我一样的时间,可以使用ORBs附带的命令行实用程序:

  • 道/王牌球体中的道
  • Orbix/Orbacus ORB中的IOR转储
  • 使用web在线工具解析IOR
  • 还没有发现使用JDK CORBA进行解析的可能性。尽管代码肯定在内部sun包中的某个地方
  • 提琴球中的迪奥。或java jacorb.Orb.util.PrintIOR-i[IOR字符串]
  • 对我来说,答案5已经足够好了。我使用Jacorb作为基于java的测试工具。但PrintIOR再次要求org.jacorb.orb.orb由org.omg.CORBA.orb.init()实例化。因此,如果您被迫在同一JVM中使用JDK ORB,这可能会很棘手


    有一个基于JacORB的解决方案。

    这是我的另一个选择。但是,想要从IIOP协议本身获得一些本机支持来解决这个问题CORBA背后的整个思想是应用程序不需要知道传输细节。因此,没有可移植的方式来获取这些信息。例如,我可以在IIOP之外的另一个传输上运行CORBA,其中寻址细节与TCP/IP完全不同。@AudriusMeškauskas没有人提到安全性。他需要一种识别客户机的方法,而这可能是在CORBA中实现可移植性的唯一方法。您不必传递IP地址作为标识符,您可以传递服务器可以验证的哈希安全令牌。请记住IOR也可能被欺骗。@AudriusMeškauskas还有,一些客户端可能只是纯客户端,甚至没有IOR要注册。@AudriusMeškauskas如果注册步骤是一个可接受的答案,客户端最好只提供其IP地址而不是IOR,并删除所有的错误。您能更好地解释您的问题吗?我认为你用另一种方式解决你的问题。