我在使用IIOP协议的CORBA中有应用程序,我正在使用JDK 6的Java IDL组件,这是另一个ORB实现。
用Java语言实现客户端和服务器。
JDK ORB实现中是否有任何方法可以从中获取客户端ORB的主机和端口 服务器(ORB)代码?
或
有没有办法使用IIOP协议,让客户端成为主机和端口?
我们正在做识别客户端以跟踪请求的人
答案 0 :(得分:2)
我认为没有任何便携方式可以做到这一点。或许有你特定的ORB,我不知道。回想一下,CORBA很难从应用程序中隐藏传输细节。应用程序甚至可能不使用IIOP,因此无论如何都无法获取TCP主机和端口信息。
您可能需要考虑向IDL添加其他标识符参数,以便服务器可以识别客户端。您还可以考虑让客户端在服务器上调用“注册”功能,服务器会发出一个标识符,所有客户端必须在后续调用时将其传递回服务器。
此标识符可以像字符串或整数一样简单,也可以像服务器必须使用公钥验证的某种安全令牌一样复杂。这一切都取决于您的应用程序的要求。
答案 1 :(得分:1)
这取决于具体情况,但有时您需要从IOR中提取主机/端口以进行测试,记录和调试。 IOR包含主机和端口,您只需要从IOR表示的字节数组中解码它。所以只需从GNU Classpath中获取CORBA规范和IorParser.java(大量依赖项)作为示例,并在周末有时间自己解码:)
如果您没有时间,可以使用ORB附带的命令行实用程序:
对我来说,答案#5足够好了。我使用Jacorb作为基于java的测试工具。但是再次PrintIOR需要org.omg.CORBA.ORB.init()实例化org.jacorb.orb.ORB。因此,如果您被迫在同一个JVM中使用JDK ORB,那么这可能会很棘手。
答案 2 :(得分:0)