gpt4 book ai didi

java - 如何识别 CORBA 服务器中的各种 CORBA 客户端

转载 作者:行者123 更新时间:2023-12-02 07:59:49 25 4
gpt4 key购买 nike


我创建了一个 CORBA Server 和两个客户端 - Client1Client2,服务器是使用 实现的Java 正在连接到此服务器。当客户端连接到服务器时,服务器必须维护连接状态,即 connected = truefalse

例如,服务器中有两个方法:

  1. connect()
  2. 断开连接()

当客户端调用 connect() 方法时,此连接状态应保存在该 Client1Server 上。如果同一个(已连接)客户端再次调用 connect() 方法,则 Server 应返回错误。
同样,如果 Client2 code> 在连接之前调用 disconnect()Server 必须检测到 Client2 尚未连接并返回错误
< br/>

我的问题是如何唯一地标识 CORBA 客户端?

任何想法/建议都会受到赞赏。谢谢..

最佳答案

CORBA 没有精确定义“客户端”的概念,因为它对于不同的人有多种含义:

  • 客户端的计算机(通过 IP 地址识别)
  • 客户端用于连接服务器的网卡(由MAC地址标识)
  • 客户端进程(由进程 ID 标识)
  • 客户端连接到服务器的套接字(由文件描述符标识)
  • 该进程内的 ORB(由可能传递给 ORB::init() 的 ORB 标识符标识)
  • 进程内进行调用的线程(由线程 ID 标识)

增加复杂性的是,其中一些项目(尤其是基于连接的身份)无法在 CORBA 中可靠地使用来识别客户端或跟踪其生命周期,因为允许 ORB 关闭空闲连接,然后在以下情况下重新建立它们: Activity 恢复。

处理此问题的最佳方法是将客户端生命周期的管理插入您的应用程序,特别是您的 IDL 中。让客户端在“连接”时请求一个 cookie,并在每个后续请求中传递该 cookie:

interface Foo {
void connect(out string cookie) throws AlreadyConnected;
void doWork(in float data, in string cookie) throws NotConnected;
void disconnect(in string cookie) throws NotConnected;
};

我的 IDL 语法可能并不完美,但您会明白的。您还应该研究如何透明地发送 cookie,而不必影响您的 IDL,使用 PortableInterceptors and/or Service Contexts

无论您如何传输 cookie 或 session token ,您的服务器都必须仔细管理它们,并在必要时清除旧的。 session cookie 管理可能会给服务带来真正的负担,并阻碍其良好扩展的能力。

关于java - 如何识别 CORBA 服务器中的各种 CORBA 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9062980/

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