如何发送资源组件的端点,例如端口号

How do I sent the endpoint for a Resource component, eg port number

我需要让 RedHawk 组件的 ORB 侦听特定端点,特别是指定端口。我习惯于通过 ORB_init 的端点参数来执行此操作,但由于 RedHawk 为我调用 ORB_init,我不知道如何指定特定的 giop:tcp::port 端点。有没有办法将 ORB_init 参数指定为组件 属性。大多数调用 ORB_init 的程序将提供给可执行文件的命令行参数传递给 ORB_init。我可以将 --ORBendpoint 添加到 spd 文件中的入口点吗?

为 ORB 使用特定端口违反了 deployment-agnostic 组件的 REDHAWK 模型。此外,在 2.1+ 共享地址 space 模型中,ORB 在多个组件之间共享,导致该级别的控制不兼容。另一方面,设备或服务明确部署在特定主机上,因此使用特定 ORB 端口不那么脆弱。一般来说,REDHAWK 试图从 CORBA 层抽象开发人员。

尽管如此,原则上可以使用专门的 CORBA 配置。您不能向 SPD 中的入口点添加参数,但有几种方法可以覆盖 ORB 端口:

  • 将入口点编辑为设置环境变量的脚本OMNIORB_CONFIG,然后执行真正的可执行文件。请注意,必须小心地重新生成 device/service/component 以避免损坏(例如更改可执行文件的名称或覆盖您的脚本)。
  • 添加一个简单的属性,通过命令行初始化,名为“-ORBendPoint”;我相信这会传递给 CorbaInit。这类似于 SCA 2.2.2 中的 execparam。
  • 修改main()函数,在调用start_component()/start_device()/start_service()之前调用ossie::corba::CorbaInit()。对 CorbaInit() 的后续调用将是 no-ops。