2016-11-19 4 views
-1

私は何かの状態をリアルタイムで追跡する必要のあるアプリケーションを持っているとしましょう。追跡は、私が外部プロセスから得たイベントを介して行われます。私はそれを開発中です。クラス構造に関係しないイベントを処理するクラスメンバー関数をすばやく修正する必要があります。状態を失うことなくjavaを再コンパイルして再起動する

私は再コンパイルして再起動する必要がありますが、その間にアプリケーションの状態が失われます。私はファイルや何かの状態を保存することができます:

イベントは時間が重要であり、イベントを処理しないことは受け入れられないので、ミリ秒も失うことはできません。私はこの問題に近づく方法があれば疑問に思っていました。

編集:

私はデータを追跡するためのクラスを使用していますが、その寿命サイクルが分以上になることはありません、彼らは実際にその後どこにも保存されることはありません、そしてそれらが削除されます。データはクラスインスタンスメンバに格納されており、それらのいずれかの追跡を失う余裕はありません。

私もこれらのクラスを複数のスレッドで使用しています。

+0

[実行時にクラスをリロードする](https://www.toptal.com/java/java-wizardry-101-a-guide-to-java-class-reloading) – kajacx

+0

この質問は非常に広すぎます。動的なクラスの再読み込み(以下の回答に従って)、または一度に複数のバージョンのアプリケーションを実行できる異なるデプロイメントモデルを調べることができます。 – Whymarrh

+0

実行時にコードを生成したいと本当に本当に本当にありますか?イベントを処理するための戦略パターンを実装できないのはなぜですか?コードは注入されていますか? –

答えて

2

dynamic class reloadingを実装するとよいでしょう。

元のクラスのインスタンスを修正したクラスのインスタンスに魔法の代わりに変換する代わりに、新しいインスタンスを作成できるの新しいクラスが得られます。クラスを使ってデータを処理するだけで、データを格納しない場合は、うまくいくはずです。

+0

私はデータを追跡するためにクラスを使用していますが、ライフサイクルは1分を超えることはなく、その後は実際には決して格納されず、削除されます。 – Nirri

+0

@Nirri:それはうまくいくはずです。最後に読み込まれた 'Class'オブジェクトへの参照を保持して、必要なときにいつでも新しいインスタンスを作成することができます。 –

関連する問題