- PR -

RMIリモートオブジェクトの生成

投稿者投稿内容
会議室デビュー日: 2005/08/12
投稿数: 5
投稿日時: 2005-08-12 16:47
基本的な質問で申し訳ありません。RMIに関する質問です。
RMIサーバー側でrmiregistryを起動した状態で、
java -Djava.rmi.server.codebase=file:/略/
 -Djava.security.policy=policy MyServerObj
を実行し、MyServerObj内でリモートオブジェクトの生成とレジストリ登録を行い、
クライアント側からRMIでメソッド実行できることは確認できたのですが、
このリモートオブジェクトを単独のJavaVMではなく、JRunなどのAPサーバー上の
JavaVM上に生成させたいのですが、やり方がよく分かりません。
APサーバーを起動時に自動的にリモートオブジェクトを生成させ、常駐させようと
思っています。
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2005-08-12 17:02
通常のJavaアプリケーションであれば、LocateRegistry#createRegistry()で
現在実行しているJVM上にRMIレジストリサーバーを作成することはできますが、
JRunのWebアプリケーションのセキュリティポリシーでこのメソッドが成功する
かどうかはわかりません。

お使いのAPサーバーにEJBコンテナがあるなら、それを使って使用したいリモート
オブジェクトをEJBとして実装してJNDIに登録しておくのが正道だと思いますが・・・
#EJB=J2EEの仕様でラップしたRMIサーバーオブジェクトだと思っていいですよ。


ところで、Webアプリケーションに閉じた範囲でしか共有しないオブジェクトであ
れば、常駐のサーバーオブジェクトなど作らなくても、アプリケーションコンテキ
ストにインスタンスを1個しまっておいて共有する(スレッド間の排他だけ注意)、
でも必要十分だと思いますけれど、いかがでしょうか。
会議室デビュー日: 2005/08/12
投稿数: 5
投稿日時: 2005-08-12 20:55
返信ありがとうございます。
このリモートオブジェクトは別のサーバ上のサーブレットから利用予定です。
EJBでの実装もありと思いますが、今のとこシンプルにRMIで行おうとしています。

今つまづいているのは、もっと初歩的なところでして、APサーバー起動時に
このリモートオブジェクトを自動生成する手段が分からないのです。
自動の必要がなければ、リモートオブジェクトを生成するサーブレットを作って
そのサーブレットにリクエストするなどすればよいとは思うのですが・・・。
結局、特定のJavaアプリケーションをAPサーバー起動時に自動実行できれば、
解決すると思っているのですが、その方法が分かりません。
一般的にはどうやるものなのでしょうか。
(とりあえずrmiregistryは事前起動されている前提でかまいません)
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-08-12 23:27
>EJBでの実装もありと思いますが、今のとこシンプルにRMIで行おうとしています。
>
>今つまづいているのは、もっと初歩的なところでして、APサーバー起動時に
なぜRMIをベタにさわるのがシンプルだと考えましたか?
素直にEJBを使えばマニュアル通りに使えば済みますし、わからない点があればサポートを受けられますよ。
会議室デビュー日: 2005/08/12
投稿数: 5
投稿日時: 2005-08-12 23:57
ありがとうございます。やはりEJBで実装すべきものということですか。
今回の件はEJBコンテナがない環境で実現させようと考えているのですが、
その場合はどう実現すべきものでしょうか。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-08-13 00:40
なるほど
>リモートオブジェクトを単独のJavaVMではなく、JRunなどのAPサーバー上の JavaVM上に生成させたいのです
と前提にあったものですから、それならば素直に EJB を使えばよいかと思いました。
前提が変わっているのであれば回答も変わってくるかと思います。
結局何がしたいのでしょう?
会議室デビュー日: 2005/08/12
投稿数: 5
投稿日時: 2005-08-13 15:12
すみませんでした。JRunは一例で、実際はEJBコンテナがないサーバで行おうと思っています。
やりたいことは、
APサーバーを起動時に自動的にRMIサーバーオブジェクト(リモートオブジェクト)を生成させたいだけです。
(APサーバーのデータソースなどを利用します)
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2005-08-15 10:35
なぜリモートオブジェクトが必要なのかがよく見えませんが…

APサーバー起動時に一回だけ何かしたいという目的なら
=Servlet#init()かServletContextListener#contextInitialized()
あたりに必要な処理を書いて使えばOKです。ここの会議室によく出
てくる話題ですよ。

スキルアップ/キャリアアップ(JOB@IT)