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

时间:2013-01-23 12:30:59

标签: java corba iiop orb

我在使用IIOP协议的CORBA中有应用程序,我正在使用JDK 6的Java IDL组件,这是另一个ORB实现。

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

JDK ORB实现中是否有任何方法可以从中获取客户端ORB的主机和端口 服务器(ORB)代码?

有没有办法使用IIOP协议,让客户端成为主机和端口?

我们正在做识别客户端以跟踪请求的人

3 个答案:

答案 0 :(得分:2)

我认为没有任何便携方式可以做到这一点。或许有你特定的ORB,我不知道。回想一下,CORBA很难从应用程序中隐藏传输细节。应用程序甚至可能不使用IIOP,因此无论如何都无法获取TCP主机和端口信息。

您可能需要考虑向IDL添加其他标识符参数,以便服务器可以识别客户端。您还可以考虑让客户端在服务器上调用“注册”功能,服务器会发出一个标识符,所有客户端必须在后续调用时将其传递回服务器。

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

答案 1 :(得分:1)

这取决于具体情况,但有时您需要从IOR中提取主机/端口以进行测试,记录和调试。 IOR包含主机和端口,您只需要从IOR表示的字节数组中解码它。所以只需从GNU Classpath中获取CORBA规范和IorParser.java(大量依赖项)作为示例,并在周末有时间自己解码:)

如果您没有时间,可以使用ORB附带的命令行实用程序:

  1. tao_catior in TAO / ACE ORB
  2. 在Orbix / Orbacus ORB的iordump
  3. 使用网络在线工具http://www2.parc.com/istl/projects/ILU/parseIOR/
  4. 解析IOR
  5. 没有发现使用JDK CORBA进行解析的可能性。虽然代码绝对是内部太阳包的某个地方。
  6. dior in Jacorb ORB。或者java jacorb.Orb.util.PrintIOR -i [IOR-string]
  7. 对我来说,答案#5足够好了。我使用Jacorb作为基于java的测试工具。但是再次PrintIOR需要org.omg.CORBA.ORB.init()实例化org.jacorb.orb.ORB。因此,如果您被迫在同一个JVM中使用JDK ORB,那么这可能会很棘手。

答案 2 :(得分:0)