OVERDOSE

IT関連の話題とJavaのTipsをメインに書いています。

Java Tips

すべて表示

クラスの自動生成

最近、チョッと興味を持っているのがあります。
クラスの自動生成ですが、これはよくある話だと思います。
データベースやXMLとのマッピングにはよく使われますね。

ちなみにクラスを動的に生成しても、それを利用したソースのコンパイルができません。
コンパイラが参照するクラスが存在しないからです。
動的に生成しているので、実行するまでクラスが存在しません。
ネットワーククラスローダでクラスをロードしても同じですね。
結局は、インターフェイスをかまして、
スーパークラスにキャストするようなロード方法しかコンパイルできないです。

クライアント側にも同じクラスがあればロードできますのでコンパイルが可能ですが、
それなら、ネットワーク越しでクラスをロードする意味がありません。

そこで、考えたのが「Jakarta Slide」を使ったアイデアです。
例えばデータベースの状態を元に自動的にBeanクラスを生成する事ができても、
コンパイルができませんよね。
そこで、Jakarta Slideを使ってWebDAV越しでクラスパスを設定するのです。

具体的にはコンパイル時にはWebDAVサーバに繋ぐと、
hoge.jarが存在して、ネットワーククラスローダでもhoge.jarが参照可能。
でもhoge.jarは実体がなく、アクセスされる事によって
自動的にデータベースの定義を元に生成してWebDAVで見れるような状態にすると言う感じです。
jarファイルの実体は必要ありません。取得の要求が来てからストリームで返すだけです。
ファイルリスト取得のが来たら、jarのファイル名を返すだけですね。

このような実装を行えば、動的に生成するクラスでもコンパイルのクラスパスが通せますし、
静的に保持しているわけではないのでリソースの管理が省力化されますね。
データベースとの定義の相違も発生しないですし、いい事尽くめです。
さらに、エクリプスの外部jarの追加も可能です。

後は実装ですね。。。これが一番厄介かも。

その他の最新記事

すべて表示

前回に引き続いてリフレクションについて解説します。 今回はフィールド編+セキュリティについてです。 フィールドはクラスの状態を保持するものです。 他の言語に馴染みのある方向けに言うと、「グローバル変数」のようなものです。 この ...すべて表示すべて表示

山田ウィルス

2005/5/11(水) 午前 0:25

最近2chでは、山田ウィルスがすごいことになっている。 感染すると、 ・HTTPDが80ポートで動き、全ドライブ/全ディレクトリ/全ファイルを公開する。 ・2chの色んな板に、自分のマシンのURLを書き込む ・スクリー ...すべて表示すべて表示

初心者には結構敷居の高い、リフレクションを使ってみます。 まずは、java.lang.reflect.Methodクラスについて解説してみます。 Methodクラスは、クラスのメソッドに関するアクセス・情報を提供するクラスです。 ...すべて表示すべて表示


.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事