- - PR -
Tomcatでのダイナミックプロキシの使用について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-03-14 16:47
そういう用途でしたら、DIコンテナ(Spring Frameworkとか)を 使用するとすっきり行きそうだと思うのですが、いかがでしょう? | ||||
|
投稿日時: 2005-03-14 16:54
実はちょっとDIコンテナを意識して作っています。
業務ではなく趣味と好奇心と勉強を兼ねてやっているもので、 本来の業務ならちゃんとしたDIコンテナを使うべきですね。 (仕事中にこういう質問もどうかと・・・) 勉強になりました。ありがとうございます。 | ||||
|
投稿日時: 2005-03-14 17:35
Proxyを使用せず、Javassistの使用を検討してみようかなと思います。
匿名クラスの実装みたいな事を動的にできればいいので、 Javassistならインターフェイスの実装クラスの生成ができそうですね。 多分ObjectInputStreamもProxyとして解決するのではなく 通常のインターフェイスの実装クラスとして解決してくれるような気がします。 取りあえず、試してみてから報告します。 | ||||
|
投稿日時: 2005-03-15 02:06
Javassistを使ってみました。
これなら最初の問題は発生しないのですが、別の問題が発生しました。 Javassistで動的にクラスを生成しているのですが、 WebappClassLoaderでクラスを読み込んでいるとリロード時に JavassistのClassPoolも初期化されてしまい、 リロード時の復元処理でのクラスの解決が行えなくなります。 解決するとなると、別コンテキストにしてHttp経由で動的クラスを生成するとか 色々方法はあると思いますが、ここまで来るとSpringとかSeaserを使った方が いいような気がしてきました。 | ||||
|
投稿日時: 2005-03-15 08:57
なんか日記みたいになって申し訳ないのですが、
動的に生成したクラスを永続化することによりうまくいきました。 Javassistは強力ですね。応用方法を模索してみたいと思います。 | ||||
|
投稿日時: 2005-03-15 11:21
個人的な興味ですが、
Java上で実行時まで処理ロジックの決定を遅らせるような仕組みとしては、 各種スクリプト言語との組み合わせで実現するのが、今のところ主流のよう ですけれど、 それに比べて、Javaクラスを実行時に作成する事で得られるアドバンテージ って、なんでしょうね? Jython,JRuby,はたまたGroovyあたりをJakarta-BSF上で使用する、でもよい と思うのですが。 | ||||
|
投稿日時: 2005-03-15 12:00
ん〜アドバンテージですか・・・
DIコンテナの方がテストが行いやすかったり、 ツールによる生成が行いやすいという気がします。 また、通常クラスと同じ扱いなのでメソッド補完ができるのが大きいです。 スクリプトの場合、規模の小さい業務ロジックだと さくさくと作成できるメリットを感じます。 正直どっちもどっちという気がします。好みの問題かなと。 | ||||
|
投稿日時: 2005-03-15 12:32
了解です。今のところは、ということですね。
私も頭で考えている範囲では、好みの問題レベルのような気がします。 勉強のために実装までやっていらっしゃっているようですので、事前の 思考実験では見つからなかった面白いネタが、今後の作業を通じて何か 見つかるかも、ということですよね。 何か見えたら、フィードバック宜しくです^^; |