2012-04-02 10 views
2

実行時にHotswapでクラスが変更されたことを検出する方法はありますか?Hotswapの検出方法

データを生成するクラスがあります。後で使用するために保存します。私はHotswapが発生した後に手動でデータ再生成をトリガーすることができますが、私はこれを自動化したいと思います。私は、データが即座に自動的に再生成されるように、クラスのいずれかが変更されたときに検出できる任意のソリューションを探しています。私は、異なるクラスのデータを生成する複数のクラスがあり、すべてを再生成するためのオーバーヘッドがあるため、どのクラスが変更されたかを検出したいと思います。

+0

あなたはクラスのhashCodeが変化したかどうかをチェックしてみました?例えば。 hotswapがSomeClass.class.hashCode()に影響するかどうかを監視します。 –

+0

クラスのhashCodeは変更されません。 – msell

答えて

3

あなたはバイトコードの変更を監視するために、Javaエージェントを使用することができます。

APIドキュメント: http://docs.oracle.com/javase/6/docs/api/java/lang/instrument/ClassFileTransformer.html

例:

http://www.informit.com/guides/content.aspx?g=java&seqNum=589

+0

エージェントのJARを作成する必要がありますか、それとも即座に登録する簡単な方法はありますか? – msell

+0

対応するパラメータでJVMを起動する必要があります。<< -javaagent:コマンドライン引数を使用してアプリケーションを起動すると、JVMはこのJARファイルを開き、MANIFEST .MFファイルを開き、Premain-Classのpremain()メソッドを呼び出します。私。その場でエージェントを登録することはできません。 –

+0

それは動作します、ありがとう。エージェントが自分のアプリケーションと直接通信する方法はありますか?それとも、ソケットなどを使用する必要がありますか? – msell