日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java程序调用OpenDDS

發布時間:2023/12/10 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java程序调用OpenDDS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

前面我們用三篇博客介紹了

  • OpenDDS在WIndows上的環境配置

    Windows下的OpenDDS編譯(超詳細)_山中野竹的博客-CSDN博客_opendds windows

  • 三種方式運行發布訂閱示例程序

    OpenDDS運行示例(Messenger)程序_山中野竹的博客-CSDN博客

  • 創建自己的發布訂閱程序

    OpenDDS 創建自己的發布訂閱程序_山中野竹的博客-CSDN博客

但上述都是OpenDDS自己的一個操作,那么如何在Java里面調用OpenDDS呢?

接下來介紹一下,如何使用Java來調用OpenDDS程序,介紹其準備工作和實例。

  • 首先,你的OpenDDS配置環境要能支持Java,因此之前的環境配置則不能滿足,需要重新配置

    有了上述配置環境的基礎,配置Java支持的環境就簡單很多了,直接參考下面這篇博客OpenDDS配置Java運行環境_山中野竹的博客-CSDN博客

  • 通過一個實例,在IDEA開發工具上,進行Java調用OpenDDS服務

二、實例演示

調用過程主要分為以下幾步

  • 生成要調用的發布訂閱的 java程序和jar包文件

  • 將 相應的jar包上傳到本地maven倉庫,并在Java項目中引用該Jar包

  • 將生成的 Java程序放在項目中,并調用程序實現發布訂閱服務

1. 生成 要調用的java相關文件

這一步和前面介紹過 創建自己的發布訂閱程序有點像,因此就簡要介紹了。主要步驟為:

  • 創建一個 messenger文件夾,創建一個 UserMessenger.idl 文件

module UserManager {#pragma DCPS_DATA_TYPE "UserManager::User" #pragma DCPS_DATA_KEY "UserManager::User id"struct User {long id;string name;boolean sexual;long age;double height;}; };

  • 在cmd命令行窗口,在messenger路徑下執行命令生成 UserManager_Export.h 文件

generate_export_file.pl UserManager>UserManager_Export.h

??

  • 創建 UserManager.mpc 文件

project: dcps_test_java {idlflags += -Wb,stub_export_include=UserManager_Export.h \-Wb,stub_export_macro=UserManager_Exportdcps_ts_flags+= -Wb,export_macro=UserManager_Exportidl2jniflags += -Wb,stub_export_include=UserManager_Export.h \-Wb,stub_export_macro=UserManager_Exportdynamicflags += USERMANAGER_BUILD_DLLspecific {jarname = UserManager}TypeSupport_Files {UserManager.idl} }
  • cmd命令窗口,在該路徑下,使用mwc命令編譯 mpc文件

perl E:\Software\Work\OpenDDS\ACE_wrappers\bin\mwc.pl -type vc10

  • 使用vc++ 編譯 messenger.sln文件,先在vc++中打開文件,選擇自己的運行環境(32位或者64位)然后生成解決方案即可

基本上配置完Java的環境都是64位的。

得到我們需要的 UserMessenger.jar包文件

生成成功后,檢查生成Jar包文件是否完整,檢查生成文件中“classes-UserManager”文件夾下是否有UserTypeSupportImpl.class,即類型支持實現類文件

如果沒有該文件,后期Java調用Jar包會有問題,為防止此問題,再使用VS對?Messenger.sln編譯一下即可。

第二步第三步參考了以下兩篇博客,大家可以先學習一下

OpenDDS Java開發(一):理解Messenger示例_hbyangland的博客-CSDN博客_java opendds

OpenDDS Java開發(二):根據IDL進行代碼生成_hbyangland的博客-CSDN博客_idl 代碼生成

2. 上傳 jar包文件到倉庫,并在項目中引用

在項目創建libs文件夾,并添加jar包文件,前三個jar是在OpenDDS/lib文件夾中,第四個是第一步生成的,根據業務需要確定第四個

第一次執行示例時,第四個jar包請采用OpenDDS自帶的項目Jar包,jar包為messenger_idl_test.jar,jar包位置在:\OpenDDS\java\tests\messenger\messenger_idl?

然后將jar包上傳到maven倉庫,使用cmd命令進行上傳

// 上傳格式 mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> // 格式說明 <path-to-file>: 要安裝的JAR的本地路徑 ./libs/json-simple-1.1.1.jar <group-id>:要安裝的JAR的Group Id <artifact-id>: 要安裝的JAR的 Artificial Id <version>: JAR 版本 <packaging>: 打包類型,例如JAR // 上傳案例 mvn install:install-file –Dfile=E:\Software\Work\OpenDDS\OpenDDS-3.10\java\tests\messenger\messenger_idl\messenger_idl_test.jar -DgroupId=com.dds.messenger -DartifactId=dds-messenger -Dversion=1.0 -Dpackaging=JAR

在maven倉庫檢查是否上傳成功

倉庫位置C:\Users\admin.m2\repository

上傳成功后,在項目中設置pom文件, ?

// 添加jar包依賴(第一個依賴根據自己需要jar包更換)<dependency><groupId>com.dds.messengerAll</groupId><artifactId>dds-messengerAll</artifactId><version>1.0</version><scope>system</scope><systemPath>${basedir}/src/libs/UserManager.jar</systemPath></dependency><dependency><groupId>com.dds.OpenDDS_DCPS</groupId><artifactId>dds-OpenDDS_DCPS</artifactId><version>1.0</version><scope>system</scope><systemPath>${basedir}/src/libs/OpenDDS_DCPS.jar</systemPath></dependency><dependency><groupId>com.dds.tao_java</groupId><artifactId>dds-tao_java</artifactId><version>1.0</version><scope>system</scope><systemPath>${basedir}/src/libs/tao_java.jar</systemPath></dependency><dependency><groupId>com.dds.i2jrt</groupId><artifactId>dds-i2jrt</artifactId><version>1.0</version><scope>system</scope><systemPath>${basedir}/src/libs/i2jrt.jar</systemPath></dependency>// 因為idea的默認配置文件都是放在src/main/resources目錄下,如果想要編譯src/libs目錄下的jar包,要在pom的build里配置resource<resources><resource><!-- directory 表示取該目錄下的文件 --><directory>src/libs</directory><!--targetPath 指定打包到哪個目錄下 默認是放到class目錄下--><targetPath>/BOOT-INF/lib/</targetPath><!-- 取符合格式的所有文件 *代表全部 --><includes><include>**/*.jar</include></includes></resource><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory></resource></resources>// 準備工作完成

3.將生成的 Java程序放在項目中,并調用程序實現發布訂閱服務

使用OpenDDS自帶的java文件

\OpenDDS-3.10\java\tests\messenger\publisher下的TestPublisher.java

\OpenDDS-3.10\java\tests\messenger\subscriber下的TestSubscriber.java和DataReaderListenerImpl.java

將文件放進項目中,然后調用文件執行發布訂閱

?平臺執行發布訂閱需要給定發布訂閱啟動參數

// 在發布訂閱執行前,先定義字符串數組,后期要用 String[] ARGS = {"-DCPSBit","0","-DCPSConfigFile","C:\\Users\\lwy\\Desktop\\ddsexample\\demo-java\\messenger\\rtps.ini"};// 注意最后一項是發布訂閱的方式的配置文件路徑,可以選用點對點方式,或者倉庫方式 // 點對點方式,最后一項選擇本地點對點配置文件,配置文件內容如下: // 文件格式為.ini [common] DCPSGlobalTransportConfig=$file DCPSDefaultDiscovery=DEFAULT_RTPS[transport/the_rtps_transport] transport_type=rtps_udp// 倉庫方式,最后一項選擇本地倉庫配置文件,配置文件內容如下: // 其中第一項是你的倉庫repo文件路徑,注意file://+路徑 // 文件格式為.ini [common] DCPSInfoRepo=file://E:\Software\Work\OpenDDS\OpenDDS-3.10\java\tests\messenger\repo.ior DCPSGlobalTransportConfig=$file[transport/1] transport_type=tcp

然后分別調用發布和訂閱函數(只寫了業務邏輯,前后端如何調用大家自行編寫)

先調用訂閱

// 注入訂閱類 @Resource private TestSubscriber testSubscriber;// 訂閱 testPublisher.publish(ARGS);

調用發布

// 注入發布類 @Resource private TestPublisher testPublisher;// 發布 testSubscriber.subscribe(ARGS);

然后進行項目打包,通過項目中的maven-lifecycle-package,雙擊進行項目打包,

打包完成后,開始部署項目,測試發布訂閱。在項目打包好的jar路徑下執行命令行命令

運行命令如下:命令行中兩個路徑分別是opendds/lib路徑和自己jar包位置路徑

// 使用點對點方式,在項目jar文件路徑下,使用命令行運行 java -ea -Dopendds.native.debug=true -Djava.library.path=E:\Software\Work\OpenDDS\OpenDDS-3.10\lib;C:\Users\lwy\Desktop\ddsexample\0830ceshi\Messenger -jar XXX.jar // 使用倉庫方式 // 首先,在一個cmd窗口開啟倉庫,該窗口執行路徑在對應的倉庫配置文件和repo.ior文件路徑下 DCPSInfoRepo -o // 然后第二個窗口,項目jar文件路徑下,執行如下命令 java -ea -Dopendds.native.debug=true -Djava.library.path=E:\Software\Work\OpenDDS\OpenDDS-3.10\lib;C:\Users\lwy\Desktop\ddsexample\0830ceshi\Messenger -jar XXX.jar

!!!! 記錄自己的一個小問題

在新電腦上集成DDS程序,集成好跑程序時,顯示找不到自定義的jar包,此時自定義的jar包我拷貝到一個路徑上了,卻顯示找不到,于是在新電腦上重新生成了該jar包(前面生成jar包的步驟,在新電腦上來了一遍!),之后就能跑通程序了。? 也不知道是不是這個問題,衰

出了問題就是根據報錯,去猜想,去試,去問,去查!? ?共勉!

自己的一點實踐,內容較多,細節不易一一展示,希望能幫到大家!

點個贊吧

總結

以上是生活随笔為你收集整理的Java程序调用OpenDDS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。