使用python动态预测CORBA(omniORB)接口的内容

使用python动态预测CORBA(omniORB)接口的内容,python,introspection,corba,Python,Introspection,Corba,我正在尝试编写一个自我维护的测试工具,它可以通过CORBA(omniORB)从命令行对服务器使用。首先,我希望有一个工具能够描述服务器实现的接口(例如,基本上重新生成定义接口的IDL)。从那里,我将把它发展成可以接受参数、进行CORBA调用并打印结果的东西 我知道python有内省功能,不必在每次参数更改或添加新方法时都编写(很多)代码。但我对omniORB的python绑定了解不够(或者还不够了解python),不知道如何轻松地实现这一点(或者是否已经存在一个基础设施来实现这一点) 我继承了一

我正在尝试编写一个自我维护的测试工具,它可以通过CORBA(omniORB)从命令行对服务器使用。首先,我希望有一个工具能够描述服务器实现的接口(例如,基本上重新生成定义接口的IDL)。从那里,我将把它发展成可以接受参数、进行CORBA调用并打印结果的东西

我知道python有内省功能,不必在每次参数更改或添加新方法时都编写(很多)代码。但我对omniORB的python绑定了解不够(或者还不够了解python),不知道如何轻松地实现这一点(或者是否已经存在一个基础设施来实现这一点)

我继承了一些代码,我正试图将其变形为我的测试工具。问题是,我不知道有多少东西是omniORB python支持的,有多少是自制的

从我所看到的,它看起来像是一个omniORB CORBA接口在python中作为一个类出现(这一部分似乎是标准的)。所述接口的方法显示为此类的成员——它们是每个元组,其命名似乎是IDL中的方法名,前缀为
\u d \
。给定接口方法的输入参数由所述方法的第一元组元素描述;第二个元素描述返回值。每个元素是另一个元组,每个元组描述一个连续的参数


我希望这反映了Omniorby的实现。假设有,是否有定义良好的例程用于查询/操作这些接口类对象?

因此,您要问的是,在不事先知道IDL的情况下,如何了解服务器支持的接口?CORBA是一个庞大的标准,我认为它们支持动态调用和调度机制,但我没有使用它,也不知道omniORB是否支持它。有点像,但不完全是这样。我有IDL;我只是不想每次IDL改变时都要更新测试工具。相反,我希望以一种自我维护的方式来编写测试工具,以便它能够找出可用的方法(以及方法的参数)。可用的方法记录在IDL中。如果IDL发生了变化,您(和工具)就会知道这些变化是什么。这个工具应该做什么?使用一个旧的IDL来找出什么是新的?接口的存在是很好定义的。方法和参数在不断演变。如前所述,对于如何将方法(及其参数)公开给python(至少在omniORB中)似乎有一种约定。我试图找到一些东西来定义约定,或者更好的是,围绕约定实现一个基于内省的框架——也就是说,让一个工具对IDL的任何更改都是不可知的,而是以一种可以遍历的方式呈现接口(例如,打印出一个方法和参数的调用列表,比如javadoc).我删除了我的答案。我发现一些显然很旧的文档说omniORB支持DII,但在最新的文档中没有这种迹象。如果DII得到支持,这可能是最好的方式。如果不行,我没有什么好的答案给你。祝你好运