如何发送资源组件的端点,例如端口号
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。
我需要让 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。