[openrtm-users 02802] Java版のrtcdの動作について

1 つの投稿 / 0 new
ysuga
オフライン
Last seen: 1年 8ヶ月 前
登録日: 2011-05-23 10:14
[openrtm-users 02802] Java版のrtcdの動作について

OpenRTM-aist MLの皆様:
お世話になります.菅です.

Java版のrtcdの動作について気になっているので,
メールを書きました.

rtc.confに適切な設定をしたrtcdを起動することで,
複数のRTCを簡単に起動できるのは皆さんご存知かと思います.

ポイントとしては,
manager.is_master : YES
manager.modules.load_path : モジュールがある場所
manager.modules.preload : モジュールのファイル名
manager.components.precreate : 自動的に起動するComponentの名前
と行った所だと思いますが,
Javaだけ,挙動が大きく違うので,変更してはどうか,という提案です.

たとえば,カレントディレクトリでrtcdを起動する場合,
ディレクトリ内に,
- rtc - ConsoleOut.dll
- ConsoleIn.dll
- conf - rtc.conf
のように配置されている場合,
manager.modules.load_path : rtc
manager.modules.preload : ConsoleIn.dll, ConsoleOut.dll
manager.components.precreate : ConsoleIn, ConsoleOut
のように設定するのが定石と考えていますが,
現状のJava版では,相対パスをパッケージ名と解釈するコードがあるように見えます.

jp/go/aist/rtm/RTC/ModuleManager.javaのload関数内です.

svnリポジトリ:
http://svn.openrtm.org/OpenRTM-aist-Java/trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/ModuleManager.java

230行目あたりが当該の箇所で,getModuleName関数は,jarファイル名を判別すると,
ファイルまでのパスをクラスのパッケージパスと解釈して文字列を生成している
ように見えますが,あんまり意味がよくわかりません.

そこで,添付のパッチのように,manager.modules.preloadに設定されたものが
jarファイルの場合に,RTCのクラス名がデフォルトパッケージにある,という前提を元に,
jarをURLClassLoaderで開き,クラス名からClass型オブジェクトを生成するようにしました.

かなりアドホックなやり方ですが・・・

ご意見を頂ければと思います.

それでは

--
///////////////////////////////////////////////////////////////////
// Yuki Suga, Ph.D.
// URL: http://www.ysuga.net/?lang=en
// E-mail: ysuga@ysuga.net
///////////////////////////////////////////////////////////////////

未定義

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2195
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク