[openrtm-users 02880] Re: マネージャーが使うポート番号について

Ando Noriaki n-ando @ aist.go.jp
2013年 8月 22日 (木) 11:38:15 JST


菅さん

安藤です

補足ありがとうございます。corba.master_manager オプションはマスターにも有効でしたね。
忘れてました。詳しくはこちらをどうぞ。

http://www.openrtm.org/openrtm/ja/content/rtcconf%E8%A8%AD%E5%AE%9A%E9%A0%85%E7%9B%AE%E4%B8%80%E8%A6%A7#toc8


2013年8月22日 11:17 Yuki Suga <ysuga @ ysuga.net>:
> 菅です.
>
> 同様にマスターマネージャを複数起動していますが,ポートをかえながら起動して回避しています.
>
> rtc.confで
> master_manager: localhost:2811
>
> というオプションで変更できます.
>
> また名前がかぶる可能性もあるので,下記のようにして回避しています.
>
> manager.name: manager_java
> manager.naming_formats: %n_java.mgr
>
> これを使って,複数言語のマスターマネージャを同時に3つ起動するという作業を実現しています.
>
>
>
>
> 2013年8月22日 10:44 Ando Noriaki <n-ando @ aist.go.jp>:
>> 安藤です
>>
>> あまりビギナーな質問ではないので、usersにも転送します(笑
>>
>>> 岡田です.
>>>
>>> 初歩的な質問でbeginnersに連絡したほうがいいのかもしれないのですが,
>>> OpenRTMのマネージャーが使うポートはデフォルトで2810になっているとおもうのですが,
>>> こちらでRTCを別のポート(例えば-ORBInitRef
>>> NameService=corbaloc:iiop:localhost:5005/NameServiceとオプションをつけて5005で立ち上げる)場合にはポートは幾つかになるでしょうか?
>>
>> このオプションは、orb->resolve_initial_references("NameService") という
>> 呼び出しの時に返すオブジェクトリファレンスを与えるためのオプションです。
>> OpenRTM-aistではネームサービスのリファレンス取得やその他のサービスの
>> リファレンス取得に resolve_initial_references は使っていないので、
>> このオプションはシステムの挙動に影響を与えません。
>>
>> もし、ORBのポートを含むエンドポイントを指定したい場合は rtc.conf の
>> corba.endpointsオプションで与えると、希望するIPアドレスおよびポートで
>> ORBを起動することができます。
>>
>>> 例えばこちらのクライアントソフト(hrpsysのrtm.py)で以下のようなコードがあるのですが,ここの2810は替えるべきでしょうか?そのままでいいでしょうか?
>>>
>>>
>>>         def getManagerDirectly(hostname, mgr = None):
>>>                 global orb
>>>                 corbaloc = "corbaloc:iiop:" + hostname + ":2810/manager"
>>>                 try:
>>>                         obj = orb.string_to_object(corbaloc)
>>>                         mgr = RTCmanager(obj._narrow(RTM.Manager))
>>>                 except:
>>>                         mgr = None
>>>                 return mgr
>>
>> このコードはマスタマネージャのリファレンスを取得しているようですので、
>> もし、マスターマネージャのポート番号を変更したならこの2810は変更する必要があります。
>> ただ、OpenRTM-aist内部ではマスタマネージャのポート番号を2810以外に設定する方法は
>> 用意されていなかったと思います。(ちょっと確信がありませんが、、、)
>> エンドポイントの指定とマスターかどうかの指定はマスターの指定が優先されるためです。
>>
>>> ついでに,これもよくわかっていないんですが,複数のRTCをプロセスとして立ち上げると
>>> それぞれのRTCがマネージャをもっていると思うのですが,普通は問題ないのですが,
>>> 特定のユーザだけ,2個目のRTCを立ち上げた時に以下のエラーが出るんですが,
>>> これはどういう状況だかわかったりしますでしょうか?
>>>
>>> omniORB: Failed to bind to address :: port 2810. Address in use?
>>> omniORB: Error: Unable to create an endpoint of this description: giop:tcp::2810
>>
>> これは、2個目のマスターマネージャを起動しているためかと思います。
>> そのプロセスがマスターになる条件は、
>> 1. (スタンドアロンコンポーネントの場合) オプションに-d がついている
>> 2. rtc.conf で manager.is_master: YES が指定されている
>> の2つです。これを満たすプロセスを2つ以上起動すると、ポート番号が被るので
>> おそらくこのようなエラーが出ると思います。
>>
>>
>>
>>> _______________________________________________
>>> openrtm-users mailing list
>>> openrtm-users @ openrtm.org
>>> http://www.openrtm.org/mailman/listinfo/openrtm-users
>> _______________________________________________
>> openrtm-users mailing list
>> openrtm-users @ openrtm.org
>> http://www.openrtm.org/mailman/listinfo/openrtm-users
>
>
>
> --
> ///////////////////////////////////////////////////////////////////
> // Yuki Suga, Ph.D.
> // URL: http://www.ysuga.net/?lang=en
> // E-mail: ysuga @ ysuga.net
> ///////////////////////////////////////////////////////////////////
> _______________________________________________
> openrtm-users mailing list
> openrtm-users @ openrtm.org
> http://www.openrtm.org/mailman/listinfo/openrtm-users


More information about the openrtm-users mailing list