问题标签 [opensplice]

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.

0 投票
1 回答
949 浏览

c++ - 对 org::opensplice::core::DWDeleter::DWDeleter 的未定义引用

我是 OpenSplice 的新手,想从这里编译简单的教程:

https://github.com/PrismTech/dds-tutorial-cpp-ex

我下载了 OpenSplice 社区版并获取了 release.com 文件。

然后我克隆了 dds-tutorial-cpp-ex git 存储库并尝试构建 ch1:

不幸的是,有一个未定义的引用 `org::opensplice::core::DWDeleter::DWDeleter(std::shared_ptr const&)

该库被添加到定义此参考libdcpsisocpp.so的链接目标(参见https://github.com/PrismTech/dds-tutorial-cpp-ex/blob/master/cmake/FindOpenSplice.cmake#L56 )。

HDE/x86_64.linux/custom_lib我已经通过更改到文件夹并执行make -f Makefile.Build_DCPS_ISO_Cpp_Lib它完成了没有错误的重建库。

为什么我会收到此错误?我该如何解决?

我的系统是 Ubuntu 14.04 amd64。

OpenSplice 版本为:OpenSplice HDE Release V6.4.140407OSS For x86_64.linux,日期2014-04-15

编辑: OpenSplice OpenSplice HDE Release V6.5.0p1 For x86_64.linux 中存在同样的问题,日期 2015-03-19

那里的错误是:


注意:交叉发布(没有任何答案):http://forums.opensplice.org/index.php?/topic/2517-undefined-reference-to-orgopensplicecoredwdeleterdwdeleter /

0 投票
0 回答
551 浏览

java - 当 JNI 代码跨类加载器使用 env->FindClass() 时出现 Tomcat 段错误

我在运行带有 Oracle JRE (1.8u40) 的 Tomcat (8.0.21) 内使用 OpenSplice DDS (6.1.0p5,PrismTech 分布) 的 Web 应用程序时遇到困难。

背景

我们的代码使用 OpenSplice 库 dcpscj.jar、dcpssaj.jar、dlrlsaj.jar。出于许可和维护的原因,它们托管在外部目录 /opt/OpenSpliceDDS/V6.1.0p6/HDE/x86.linux2.6/jar 中,而不是嵌入到通常的 WEB-INF/lib 中的 WAR 文件中。

设置环境文件

根据tomcat 类加载文档,我还成功地通过 conf/catalina.properties 中的 common.loader 属性使库可用。

问题

使用 CLASSPATH 和 common.loader 方法时,Tomcat 在部署我们的 WAR 时始终会因 SIG_SEGV 而崩溃。

堆栈的顶部

分析

仅当 JAR 在 WEB-INF/lib 外部时才会出现此问题,如果它们“嵌入”在 WEB-INF/lib 中,则 Tomcat 不会崩溃。

org.example.dds.example_topic_typeTypeSupport(匿名)是由 OpenSplice 生成的代码,我们将其打包为 WEB-INF/lib 中的单独 JAR。

example_topic_typeTypeSupport调用FooTypeSupportImpl.registerType(),然后将类名作为 IDL 格式 "org::example::dds:example_topic_type" 的字符串传递到 JNI 部分saj_fooTypeSupport.c中。

这很难理解,但我相信最终 env->FindClass 会被 Java 变体调用,即 org.example.dds.example_topic_type。这似乎返回 NULL,然后将其传递给导致段错误的 jni_GetMethodID。

根据FindClass 文档,使用的类加载器是承载本机方法的类加载器。

FindClass 定位与当前本地方法关联的类加载器;即声明本机方法的类的类加载器。如果本地方法属于系统类,则不涉及类加载器

这意味着类加载器是用于加载位于 dcpssaj.jar 中的 FooTypeSupportImpl 的类加载器。这个类加载器看不到我们在 WEB-INF/lib/topics.jar 中的主题定义。

Tomcat类加载文档描述了每个模块的私有类加载器

问题

  • 无论如何在 Tomcat 中包含额外的 JAR 文件让它们由用于在 WEB-INF/lib 中加载其他 JAR的相同类加载器加载?我正在寻找基于干净配置的解决方案 - 我已经考虑过解决方法,包括符号链接或在部署时通过一些脚本将 DDS JAR 移植到 WAR 文件中。
  • 无论如何配置 OpenSplice DDS 来避免这个问题?
0 投票
1 回答
388 浏览

data-distribution-service - 将数据发送到 OpenSplice (DDS)

我是 DDS 和 opensplice 的新手,所以这可能很简单,但我不明白。

我正在阅读 opensplice 文档中的读取器缓存和写入器缓存。我知道数据进入数据写入器缓存,然后发送到数据读取器缓存。但是,首先如何将您拥有的信息推送到数据写入器缓存中呢?

当您发布或订阅设备或应用程序到主题时,是否有单独的命令或者数据会自动发送到缓存?

我想总而言之,我的问题是,数据如何进入 opensplice/数据写入器缓存?

我很感激任何帮助。就像我说的,我一直在阅读教程和参考指南。我看到很多关于当信息在 opensplice 中时会发生什么,但我不知道你是如何把它放在那里的。如果可能的话,你也可以链接到一个例子吗?

谢谢

0 投票
1 回答
349 浏览

data-distribution-service - 如何使用通配符订阅一组相似的 DDS 主题

我是数据分发服务 (DDS) 的新手。我想知道我们是否可以使用通配符订阅 DDS 中的主题组。这样我就可以一起接收来自具有相似名称的主题的数据。例如,我有 2 个主题 IN_Temperature,NEP_Temperature 有没有办法订阅所有名称为温度的主题

0 投票
1 回答
150 浏览

iot - Vortex雾涡网关集成

我是数据分发服务的新手。我正在为 DDS 使用 PrismTech 产品。我的网络中有 vortex lite。为了与公共云中的 vortex 网关交互,我正在使用 vortex 雾服务。但无法建立互动。任何人都可以提供相同的输入。

我的网络上运行了一个 DDS 子系统,来自它的数据需要共享到云中运行的 vortex 网关,为此我尝试使用 Vortex fog。在涡雾配置中,我提到了云服务器的公共 IP。我在云中运行了一个涡流网关订阅者作业,以从我的网络中运行的子系统接收 dds 数据。

雾服务在 NAT 后面的 LAN 中运行。我为运行雾服务设置了以下配置

在云服务器中,我正在运行订阅不同主题的 vortex 网关。

你能否纠正/指导我解决这个问题

0 投票
3 回答
5572 浏览

c# - DDS - 推荐哪一个 - OpenSplice 还是 CoreDX?

我需要 C# winform 应用程序和 android 本机应用程序使用 DDS(数据分发服务)。每个人都可以是订阅者和作者。对我来说重要的是:
- 高性能。
- 易于使用和文档。
- 支持。
- 低价。

什么是最好的推荐产品 - OpenSplice 或 CoreDX?
它们之间有什么区别?

感谢

0 投票
1 回答
751 浏览

java - 错误的 ELF 类:如何成功安装 OpenSpliceDDS?

我一直在尝试在 CentOS 上安装并成功运行 OpenSplice DDS,最初的目标是安装并运行 HelloWorld 示例(Java 中),我确实使用make订阅者和发布者步骤的编译阶段制作了必要的文件需要编译 (of .jar) 是非常困难的,我已经为此工作了将近 2-3 周,问题是,讨论与 DDS 安装相关的问题的文档和/或资源很少(而且有很多),我还尝试咨询我的教授,他向我暗示这可能是一个兼容性问题,有时当我解决此安装的一个问题时,会出现另一个问题,以下是我当前的输出:

Java版本:

系统详情:

Linux localhost.localdomain 3.10.0-327.36.1.el7.x86_64 #1 SMP Sun Sep 18 13:04:29 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

所以,这wrong ELF class是我可能遇到的可能错误之一,安装 DDS 并正常工作的困难不仅仅是我一个人遇到的,我的其他一些朋友也有不同的错误,并且由于没有资源和在线讨论存在关于OpenSplice DDS 安装(除了官网和自述文件),我决定打开这个讨论。

0 投票
1 回答
208 浏览

c++ - Connect to host in DDS: Is there networking at all?

I'm trying to understand DDS and learn it. I've been reading tutorials here and there about OpenSplice DDS, and there's something there puzzling me.

In this tutorial, the tutor mentions that there's some kind of "Magic" in page 8 that the publisher and subscriber are decoupled where participants are automatically detected.

But what if I have a participant in another computer? Or maybe in another country?

Taking a look at this example of a publisher:

and this example of a subscriber:

and this full working example of both (tspub.cpp is publisher, and tssub.cpp is subscriber), I don't understand how people could connect remotely. How can I subscribe to another machine? How can I get this nice and simple example to work remotely?

Please ask if you require more information or details.

0 投票
1 回答
358 浏览

c++ - OpenSplice DDS: Publish, until some timeout

I'm learning every day more about dds, so my question my sound weird. I hope it makes sense.

One of the requirements of some dds wrapper I'm writing, is that it times out after some timeout period if it fails to write. My question: How can I do that?

On Prism Tech's website's tutorial, there's explanation on how to use a WaitSet to block a read operation, but what about write?

Here's some code including the question:

I noticed there exists a function in the API DataWriter::wait_for_acknowledgements(int timeout), but this seems to be bound to the DataWriter object, not to the specific call of writing. Can I bind it with the call above?

0 投票
1 回答
486 浏览

c++ - 带有 Qt5 执行错误的 OpenSplice 创建失败:句柄无效

我正在尝试使用 Qt5 运行 OpenSplice 的教程示例。我成功构建了程序,但是当我运行它时,出现以下错误:

DDS::DomainParticipantFactory::create_participant 中的错误:创建失败:句柄无效

经过许多调试步骤后,我得出的结论是我的可执行文件没有链接到我的 ospl !我想通了,因为当它崩溃时不会生成 ospl-error.log。

我正确获取了发布文件. ./release.com并从同一个终端启动了我的 qtcreator,因此所有环境变量都已正确设置(尤其是OSPL_URIOSPL_HOME

有谁知道如何解决这个问题?