- - PR -
EclipseRCP(Browser) + RMI + BIRT
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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プロトコルを介して渡すのは現実的なのでしょうか。 通信負荷の計測方法が分かっていないので、丸投げのような質問になり申し訳ございません。 ご意見頂ければ幸いです。 よろしくお願い致します。 |
|
投稿日時: 2007-12-14 14:54
byte配列にして送るとかしないと無理でしょう。
RMIで送信するには、Serializableである必要があります。 eclipse swtのBrowserクラスは、Serializableを実装していないので無理。 パス名を表すStringやjava.io.Fileのオブジェクトは、 Serializableを実装していますが、 所詮はサーバ側でのローカルのパスなので、 それだけ余所に持って行っても意味はありません。 |
|
投稿日時: 2007-12-14 20:45
koeさん、早速のご返答ありがとうございました。
Browserクラスを自作のクラスでラップして、その自作クラスにSerializableを実装して試してみようかと思いますが、そういう方法をとっても一緒なのでしょうか。 |
|
投稿日時: 2007-12-14 21:15
無理です。
ラップしたクラスのフィールドはシリアライズできても、 Browserクラスで定義されたフィールドはシリアライズされません。 一度、シリアライズについてちゃんと学ぶことをお勧めします。 |
|
投稿日時: 2008-02-07 13:57
koeさん、返信・お礼が大変遅くなり、申し訳ございません。
いろいろ試した(勉強した)結果、仰る通り、Browserを渡すのは無理で、別の方法を模索しておりました。 最終的に考えていた最低限は満たせました。 BIRTのengineapiを使用し、RMIサーバー側でページを作成し、OutputStreamで出力します。 出力した内容はbyte[]なので、それをString化させ、RMIを介してクライアントのBrowserの引数に充てます。 そうすると、HTMLページは表示できました。(PDFは残念ながら実現出来ておりません) とりあえず、この仕様で行くつもりです。 チャート等が入るとどうなるか等はやりながら検証していくつもりです。 ご指導ありがとうございました。 |
1