- PR -

EclipseRCP(Browser) + RMI + BIRT

1
投稿者投稿内容
しんい
ベテラン
会議室デビュー日: 2005/09/01
投稿数: 55
投稿日時: 2007-12-14 11:22
お世話になっております。

EclipseRCPでアプリケーションを作成しております。
実現したい内容としては、BIRTで作成した帳票類をRMIサーバーを介してEclipseRCPクライアント(SWTのBrowserクラスを使用)から見ることです。
ちなみに、クライアントとサーバー間の通信はRMIプロトコルのみに限定したいと考えております。

Tomcatを使用する場合はURLを、ファイルを直接参照する場合はファイルのPathをBrowserクラスの引数に充てれば良い事は理解しております。
しかし、RMIのURIを引数に充てようにも、RMIサーバーは指定できても、ファイルは指定できません。
fileクラスを引数にしようにも、コンパイルエラーになります。
また、ファイルPathを取得して引数に充てるとしても、RMIプロトコルのみに限定するという観点で不可能だと思います。
可能性として、なんらかの方法でRMIサーバーを経由してファイルを参照する方法はあるのでしょうか。

もしくは、ファイルPathを引数に充てたBrowserクラスをRMIサーバーで生成し、Browserクラスごとクライアントに渡す方法も考えられると思います。
ただ、通信的に重くなりすぎるのであれば、問題と感じます。
BrowserクラスをRMIプロトコルを介して渡すのは現実的なのでしょうか。
通信負荷の計測方法が分かっていないので、丸投げのような質問になり申し訳ございません。

ご意見頂ければ幸いです。
よろしくお願い致します。
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2007-12-14 14:54
byte配列にして送るとかしないと無理でしょう。
RMIで送信するには、Serializableである必要があります。

eclipse swtのBrowserクラスは、Serializableを実装していないので無理。

パス名を表すStringやjava.io.Fileのオブジェクトは、
Serializableを実装していますが、
所詮はサーバ側でのローカルのパスなので、
それだけ余所に持って行っても意味はありません。
しんい
ベテラン
会議室デビュー日: 2005/09/01
投稿数: 55
投稿日時: 2007-12-14 20:45
koeさん、早速のご返答ありがとうございました。

Browserクラスを自作のクラスでラップして、その自作クラスにSerializableを実装して試してみようかと思いますが、そういう方法をとっても一緒なのでしょうか。
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2007-12-14 21:15
無理です。
ラップしたクラスのフィールドはシリアライズできても、
Browserクラスで定義されたフィールドはシリアライズされません。

一度、シリアライズについてちゃんと学ぶことをお勧めします。
しんい
ベテラン
会議室デビュー日: 2005/09/01
投稿数: 55
投稿日時: 2008-02-07 13:57
koeさん、返信・お礼が大変遅くなり、申し訳ございません。

いろいろ試した(勉強した)結果、仰る通り、Browserを渡すのは無理で、別の方法を模索しておりました。

最終的に考えていた最低限は満たせました。

BIRTのengineapiを使用し、RMIサーバー側でページを作成し、OutputStreamで出力します。
出力した内容はbyte[]なので、それをString化させ、RMIを介してクライアントのBrowserの引数に充てます。
そうすると、HTMLページは表示できました。(PDFは残念ながら実現出来ておりません)

とりあえず、この仕様で行くつもりです。
チャート等が入るとどうなるか等はやりながら検証していくつもりです。
ご指導ありがとうございました。
1

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