Websphere アプリケーション サーバーで実行時に Java グローバル変数の値を変更する方法はありますか? Java アプリケーションでプロパティ ファイルを使用して、グローバル変数の値を指定します。しかし、実行時に変数の値を変更する必要がある場合があります。たとえば、「fileServerLocation」という名前の変数があり、その値が「C:\Users\test\Downloads」で、それを「C:\Users\test\Desktop」に変更したい場合は、サーバーにアプリケーションを再デプロイせずに変数の値を変更する方法はありますか?
3 に答える
グローバル変数の詳細を理解しようとはしませんが、「グローバル変数」はアプリケーションごとのグローバル変数だと思います。
状態の変更がどのように実行されるべきかの動的な更新方法に焦点を当てます。
この通常の管理操作を行う正しい方法は、JMX 標準を使用することだと思います。実行時に値を動的に更新するには、オペレーションを使用して MBean を公開する必要があります。値の更新は、ある種のメモリバリアを使用して「スレッドセーフ」にする必要があります。
値の更新は、何らかの管理ツール (JMX クライアント) を使用して実行されます。
HTTP 要求を介してトリガーされる Web サービスまたは EJB 呼び出しを構築できます。実行時にフィールド値を変更するだけです。認証(ユーザー名/パスワードなど)の実行を要求するには、この「管理者リクエスト」を行う必要がある場合があります。volatile
また、変更後にすべてのスレッドで表示されるようにするには、このフィールドを宣言する必要がある場合があります。
ClassLoader
everyには、静的フィールド (グローバル変数) の独自の値があることに注意してください。通常、すべての EJB は同じクラス ローダーを共有しますが、各war
モジュールには独自のクラス ローダーがあります。