问题标签 [ace-tao]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - boost vs ACE C++ 跨平台性能比较?
我参与了一项将一些通信、解析、数据处理功能从 Win32 移植到 Linux 的项目,并且两者都将得到支持。问题域对吞吐量和性能非常敏感。
我对 boost 和 ACE 的性能特征的经验很少。具体来说,我们想了解哪个库为线程提供了最佳性能。
任何人都可以提供一些关于两者之间相对表现的数据——记录在案的或口口相传的,或者可能是一些链接吗?
编辑
谢谢大家。确认了我们最初的想法——我们很可能会为系统级跨平台的东西选择 boost。
c++ - 在 win32 上编译 idl 文件时出现 midl 错误 2025(midl 不喜欢 string<40>)
我用 linux 工具编译的 idl 文件很好,但是当我尝试使用 midl 编译时出现错误
该行是:
这是非标准的idl,还是我错过了什么?midl 是否有允许此操作的开关?
我希望我能早点设置赏金...
exception - 从 Mac OS X 10.6 64 位 macbook 运行时出现 CORBA 异常
我在使用 CORBA ACE/TAO 时遇到了一个奇怪的异常。我正在尝试运行一个用 Java 编写的服务来发送/接收来自客户端的消息。当我在 Windows 7 32 位中运行相同的代码时,它工作正常!我导出了一个可执行的 jar 文件并尝试在我的 mac 上运行它,但问题仍然存在。我得到的例外如下:
在这两种情况下,我都使用 java 1.6。我的mac中的java版本是“build 1.6.0_29-b11-402-10M3527”
有人知道问题可能是什么吗?
谢谢,
迪莫斯。
performance - vmware 播放器性能调优
我在 vmware player 虚拟机环境中做了一些编译(ACE TAO 和 Boost C++ 库)。我发现我无法忍受表演。
我的机器是T410(i7 620,6G内存和5400硬盘)。安装的操作系统是 Ubuntu 12.04,然后我安装了 vmware player,其中托管的操作系统是 XP。我为 VMware 播放器分配了(3G,15G 的 2 个核心)。
例如,对于 Boost,bootstrap.bat 在 XP 中大约需要 3 小时才能完成,而在 ubuntu 中只需几秒钟。对于 ACE TAO 编译,在托管的 XP 中需要 2 天,但在 Ubuntu 中只需不到 3 小时。
我在托管的 XP 中检查了任务管理器。CPU使用率保持在12%左右,真正使用的内存只有300M~。由于 CPU 和内存都不是瓶颈,因此问题应该出在磁盘方面。
因为无法更换新的硬盘驱动程序,我想知道是否有一些关于 Vmware 播放器性能调整的指南,尤其是硬盘驱动程序?
这是来自 vmware 站点的链接 http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=1008885
但是链接中的工具vmware-vdiskmanager在我这边不存在..如何检查我的机器的快照。似乎我的机器中没有生成快照。
corba - 从 VC 中的 Corba IDL 生成的库中没有符号导出
两个 IDL 文件,testbase.idl
testhello.idl:
和 Hello.mpc 内容是:
我想做一些演示。mpc 将生成 4 个主要项目(testbaseClient、testbaseserver、testhelloServer 和 testhelloClient),每个项目将生成一个 dll 和库,所有这些都用作每个 IDL 的骨架和存根。
在VS2008中,在构建testUDL、testbaseclient、testbaseServer之后,testbaseserver和testbaseclient的链接都失败了,因为链接找不到一些符号。错误消息是:
我理解错误:仅当链接无法从自身或依赖库中找到这些符号时,才会发生未解析的外部符号。因此,我为 testhelloclient 和 testhelloserver 添加了 libs += test_base_server test_base_client。重新生成所有项目后,结果是一样的。“未解决的外部符号”仍然存在。
我怀疑这两个生成的基础库是错误的,我使用命令:dumpbin /EXPORTS 导出所有符号,并且没有报告未解析的外部符号。
然后我感到困惑的是:1)链接需要在制作库项目期间所有可用的符号。我过去在 unix 上的经验是,只有在制作可执行文件时才需要所有符号。
2)如何在这里解决这个问题?我应该为 testIDL 项目添加一些参数吗?
[更新]:
为 testhelloclient 添加了所有 *C.cpp 并且所有 *C.cpp 和 *S.cpp 都会使编译工作。
然而,这并不像我预期的那样。我想将每个 IDL 编译成两个库:一个用于存根,另一个用于骨架。那么以后我只需要为其他项目提供带有相应头文件的stub/skeleton即可。当 .lib/.dll 和头文件可用时,骨架/子应用程序无需编译任何由 IDL 生成的 cpp 文件。
目前,上面生成的 *.lib 文件中没有一个包含来自 *C.cpp 或 *S.cpp 的符号(dumpbin 结果与之前的帖子相似,只有 1 个函数)。其他应用程序仍会报告未解析的符号,因为 .lib 不包含任何导出符号。
今天下午我阅读了 MSDN: http: //msdn.microsoft.com/en-us/library/ms235636%28v=vs.90%29.aspx 。对于dll的导出符号,函数声明为:
但是idl生成的c头文件似乎不遵循这种方式..
VC 似乎与 Linux 中的 GCC 大不相同。有什么解决办法吗?我不可能在IDL生成的头文件中为每个函数添加_declsepc?问题简化为:VC 中从 IDL 生成的库中没有导出任何符号(我重命名了标题以获得更多说明)
[更多更新] 我回到 tao_idl 命令,似乎是由以下选项引起的: -Wb,skeleton_export_include="headerfile.h" export_macro..
似乎所有这些文件和宏都生成了....有没有更好的生成 .mpc 文件,这些 headerfile.h 和宏是什么?
[更新] 它现在适用于更新的 mpc 文件(见上文)。导出文件由 $ACE_ROOT/bin 目录中的 generate_export_file.pl 生成。命令如下:
谢谢大家。
asynchronous - Corba AMI 回调从未被调用
我对 CORBA 异步调用 (AMI) 有一个问题。问题是客户端的回调永远不会被调用。
我简化了 ACE_Wrappers\TAO\examples\Content_Server\AMI_Observer 中的示例。IDL:
在我的代码中,AMI 调用仅适用于 ContentFactory。代码是:
指针 request_count 被传递给 MyServer_AMI_ContentFactoryHandler_i 构造并且其指向的值增加。一旦调用了 AMI 回调 register_callback,指向的 request_count 值就会减小,这反过来又会完成 main 函数中的 while 循环。
服务端的 register_callback 只是休眠 5 秒,然后返回一个 hello 字符串。此代码编译正常,但从未调用 MyServer_AMI_ContentFactoryHandler_i::register_callback。在调试过程中,orb->work_pending() 一直返回 false..
我还将我的代码与 AMI_Observer 和页面上的原始示例进行了比较:http ://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/TAO/docs/tutorials/Quoter/AMI/index.html 。这个问题花了我一天的时间,我迷路了..
谢谢,如果你能帮助指出我的错误......
///////////////////////////////////////// /////////////////
更新:
调试级别为 10 的日志:
我对TAO日志不太熟悉,但是根据上面的日志,似乎服务器没有响应..
////////////////////////////////// 更新:现在找出根本原因。 。 服务员
将return语句更改为:
该示例现在有效..
serialization - 如何在 CORBA (ACE/TAO) 中使用 boost 序列化
我正在尝试序列化一个数据结构,通过网络发送它并在另一端反序列化它。如果双方始终编译为 x64 或 x86,则工作得非常好,但即使我只序列化一个布尔值,它也不会在两者之间工作。
序列化代码:
反序列化代码:
return-value - 如何从 CORBA 方法返回空指针?
假设我有一段简单的代码,如下所示:
现在我想让我的硬件在我想与 CORBA 远程通信的单独计算机上运行。所以两侧的 CORBA 层看起来类似于:
问题是,CORBA 似乎不允许以任何方式返回空指针。如果我直接将 nullptr 分配给 _out 类型,则该调用将引发 BAD_PARAM 异常,如文档中所述,如果我不为其分配任何内容,则相同。所以它基本上迫使我创建一个对象,因此很难设计我需要的逻辑。具体来说,我不得不滥用一个有效的对象来表示一个空指针,这样我就可以在客户端区分这两个结果。我的另一个想法是将返回类型包装到一个带有布尔值的结构中,它告诉我对象是否有效。
我现在使用的快速破解只是在客户端捕获 BAD_PARAM 异常并在这种情况下返回 nullptr ,但这看起来也不是好的和稳定的设计。
有没有更好更简单的解决方案?
java - 如何验证ACE-CORBA服务本地windows机器
我能够为 ACE-TAO 服务创建 docker 容器,并能够使用端口转发概念从父 Windows 机器访问它。
从浏览器中,我尝试点击localhost:forward-port
并获取"ERR_EMPTY_RESPONSE"
,TAO 服务正在 docker 容器中运行。
如果我想在本地验证它是否连接正确。
如何编写Java
代码进行验证?
c++ - 使用 CentOS 6 编译 ACE/TAO 1.2 库
我在使用 g++ 4.4.7 的 64 位 CentOS 6.7 机器上,我正在尝试编译使用 g++ 2.96 编译的ACE TAO 库 1.2。
当我尝试使用 g++ 4.4.7 版进行编译时,出现以下错误(更完整的输出here
经过一番研究,我发现 Red Hat在这里为 CentOS 6 提供了一些旧的 libstdc++ 库。
是否可以使用我认为不支持 64 位的 g++ 2.96 的旧版本,或者我可以以某种方式使用 g++ 4.4.7 的兼容性工具来尝试使某些事情发生?