我有一个使用IIOP协议的CORBA应用程序,我正在使用JDK 6的Java IDL组件,这是另一个ORB实现。
用Java语言实现客户端和服务器端。
在JDK ORB实现中,有没有办法从服务器(ORB)代码中获取客户机ORB的主机和端口?
或
有没有办法使用IIOP协议,获取客户端的主机和端口?
这是我们正在做的识别客户端,以跟踪谁是被请求的
发布于 2013-01-24 04:58:48
我不认为有任何可移植的方法可以做到这一点。也许有适合你的特定的球体,我不知道。回想一下,CORBA非常努力地对应用程序隐藏传输细节。应用程序甚至可能没有使用IIOP,因此在任何情况下都无法获得TCP主机和端口信息。
您可能需要考虑向IDL添加额外的标识符参数,以便服务器可以识别客户端。您还可以考虑让客户端调用服务器上的"register“函数,然后服务器分发一个标识符,所有客户端在随后的调用中都必须将该标识符传递回服务器。
该标识符可以像字符串或整数一样简单,也可以像服务器必须用公钥验证的某种安全令牌一样复杂。这完全取决于您的应用程序的需求。
发布于 2014-04-25 23:37:31
这取决于具体情况,但有时您需要从IOR中提取主机/端口,以便进行测试、日志记录和调试。IOR包含主机和端口,只需从IOR所代表的字节数组中解码即可。因此,只要以CORBA规范和GNU Classpath中的IorParser.java(大规模依赖项)为例,如果周末有时间,可以自己解码:)
如果你像我一样没有时间,你可以使用ORB附带的命令行工具:
对我来说,答案#5已经足够好了。我在基于java的测试工具中使用了Jacorb。但话又说回来,PrintIOR要求org.jacorb.orb.ORB由org.omg.CORBA.ORB.init()实例化。因此,如果您被迫在同一个JVM中使用JDK ORB,这可能会很棘手。
发布于 2019-11-25 22:52:03
https://stackoverflow.com/questions/14479816
复制相似问题