[openrtm-users 00478] Re: 別々のマシンで起動したJAVA版RTCをコネクトできない
Ando Noriaki
n-ando @ aist.go.jp
2008年 6月 12日 (木) 18:41:43 JST
喜多様
安藤です
> さっそくの回答ありがとうございます。
> C++で書いたRTCの場合は問題ないのですが。
> ご回答のいずれかが原因であったとすると、C++の
> RTCでも問題は生じないでしょうか。
FWに関しては、OSレベルのことですので言語にかかわらず
こういった現象が発生する可能性があります。
CORBA の endpoint の問題は、CORBA の実装レベルの問題です。
omniORB はデフォルトでは他に NIC があるにも関わらず localhost を
endpoint にするということはないようです。
Java に関しては、明示的に指定しない場合 localhost もしくは 127.0.0.1 を
endpoint に設定された経験が(確かVineLinuxだったとおもうのですが)あります。
また、NIC が複数ある場合、endpoint を指定しなければ、どの NIC を
endpoint にするのかはそれぞれのCORBA次第です。
lo: 127.0.0.1
eth0: 192.168.0.10
eth1: 150.29.99.10
のようにインターフェースのアドレスが設定されている場合、
eth0 を endpoint にすべきか、eth1 を endpoint にすべきかは、
CORBA には判断できませんので、endpoint を明示的に与えてやるべきです。
また、環境や言語によっては endpoint として localhost を指定する CORBA も
ありますので、そういう場合もやはりendpoint を指定してやったほうが無難です。
そういうわけで、OpenRTMでは、corba.endpoint というオプションを用意しています。
詳細はソースの etc/rtc.conf.sample に以下のように書いていますが、
指定するときはアドレスとポートの区切りの「:」を忘れずに入れてください。
(たとえポートを明示的に指定しない場合でも「:」が必要です。)
#
# ORB endpoint
#
# If you have two or more network interfaces, ORB endpoint address and/or
# port have to be specified. If hostname or port number is abbreviated,
# default interface or port number is used. At least one colon ':'
# is needed when you specify this option.
#
# Examples:
# corba.endpoint: myhost: (use myhost and default port)
# corba.endpoint: :9876 (use default addr and port 9876)
# corba.endpoint: myhost:9876 (use myhost and port 9876)
#
corba.endpoint:
> 喜多 伸之
>
>> 考えられる原因は2つほどあります。
>>
>> 1.ファイヤウォールが有効になっている
>> ファイヤウォールが有効になっていると、コンポーネントを起動したノード
>> 以外で動いているRtcLinkからコンポーネントに接続できずにゴーストのように見えます。
>> CORBAの使用するポート番号を corba.endpoint オプションで指定して、
>> そのポートを開けてやれば見えるようにはなりますが、もしファイヤウォールがON
>> になっている場合はとりあえずOFFにしてみていただけますか?
>>
>> 2.CORBAのendpointがlocalhostになっている
>> ネームサーバなどに登録されるオブジェクトリファレンスは、そのオブジェクトが
>> 接続を待っているホスト名とポート番号が含まれています。
>> RTCがネームサーバにオブジェクトリファレンスを登録する際に、
>> ホスト名としてlocalhost あるいは 127.0.0.1 を登録したりすると、
>> そのホスト以外から見た場合、どこにあるのかわからなくなってしまいます。
>> (RtcLinkを起動したホストにオブジェクトを探しに行く。)
>> corba.endpoint オプションで外部から見えるアドレスを指定してみてください。
>>
>>
>> 2008/06/12 16:21 Nobuyuki Kita <n.kita @ aist.go.jp>:
>> > 関係各位、
>> >
>> > Java版で作った2個のRTC(例えば、ConsoleInとConsoleOut)を、
>> > 別々のマシンで起動し、RtcLinkでコネクトしたいのですが、
>> > どのようにすればよろしいでしょうか。
>> >
>> > 例えば、マシンAでConsoleIn、マシンBでConsoleOutを
>> > 起動します。マシンAで起動したRtcLinkだと、ConsoleOutがゴースト
>> > (CORBAオブジェクトとしては認識されるが、RTCとしては
>> > 認識されない)になり、
>> > マシンBで起動したRtcLinkだと、ConsoleInがゴーストになり、
>> > 結局、コネクトできません。
>> >
>> > ネームサーバーの場所を変えてやってみても、症状は変わりません
>> > でした。
>> >
>> > よろしくご教示のほどお願いいたします。
>> >
>> > 喜多 伸之
>> > -----------------------------------------------
>> > 主任研究員 喜多伸之
>> > 独立行政法人 産業技術総合研究所 知能システム研究部門
>> > 自律行動制御研究グループ
>> > 〒305-8568 茨城県つくば市梅園1-1-1 つくば中央第2
>> > E-mail: n.kita @ aist.go.jp http://www.is.aist.go.jp/nkita/
>> > TEL:029-861-5986 FAX:029-861-3443
>> >
>> >
>> >
>> >
>>
>>
>>
>> --
>> 安藤慶昭@独立行政法人産業技術総合研究所 研究員
>> 知能システム研究部門 タスクインテリジェンス研究グループ
>> 〒305-8568 茨城県つくば市梅園1-1-1 中央第2
>> TEL: 029-861-5981 FAX: 029-861-5971
>> n-ando @ aist.go.jp, n-ando @ ieee.org
>
>
>
>
>
--
安藤慶昭@独立行政法人産業技術総合研究所 研究員
知能システム研究部門 タスクインテリジェンス研究グループ
〒305-8568 茨城県つくば市梅園1-1-1 中央第2
TEL: 029-861-5981 FAX: 029-861-5971
n-ando @ aist.go.jp, n-ando @ ieee.org
openrtm-users メーリングリストの案内