- - PR -
RMIクライアントを特定する方法
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-05-26 10:29
複数のクライアントから利用されるRMIサーバオブジェクトがあったとします。
そして、公開してるメソッドとしてaMethod()を持っているとします。 クライアントAがaMethod()を呼んだ場合、サーバ側で「クライアントAから メソッド呼び出しがあった」と知る方法はあるのでしょうか? しかも、IPアドレス単位ではなくスタブ単位で特定できるのは可能でしょうか? ご存知の方いましたら、教えてください。 |
|
投稿日時: 2003-05-26 16:11
「IPアドレス単位ではなくスタブ単位で特定」とは、どういう意味でしょう?
java.rmi.server.RemoteServer.getClientHost() が返す文字列では特定できないとか? |
|
投稿日時: 2003-05-27 09:11
へげもんさんありがとうございます。
確かにIPアドレスでホストを特定することはできると思いますが、 もし、同一ホスト内で複数のスレッドがRMIサーバオブジェクトを 利用するとしたら、各スレッドはNaming.lookup()でスタブを取得する 事になります。 その時に「メソッド呼び出しはどのスタブ(スレッド)からなのか?」 といったことを特定できないかなあ?と悩んでいます。 IPアドレス単位ではなく、スタブ単位とはそういった意味で書きました。 |
|
投稿日時: 2003-05-27 11:53
なるほど、スタブ単位とは呼び出し元のスレッド単位ということですね。
そのあたりはSoketレベルの情報が必要になると思いますが、残念ながらRMI上では隠蔽されてしまってます。 がんばれば、RMISocketFactoryなどを使ってそのあたりの情報を引き出せるようにすることも出来ると思いますが、そこまで使ったことが無いので。 もっと簡単な手段として、メソッドの引数で識別子を渡してしまうなどの手抜きなやり方はどうでしょうか? |
|
投稿日時: 2003-05-29 09:03
そうですね。やっぱりその方法が適当なのかもしれません。
アドバイスありがとうございます。 RMIでクライアントを識別しようと思ったら、最初からそういった仕組み で作ったほうがよいと痛感しました。 もしくは、クライアントを識別する必要の無い設計にするとか、 そういった工夫が必要なのかもしれませんね。 |
1
