- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:WEBサーバ側でロードされたクラスの存続期間について確認させてください)
WEBサーバ側でクラスの存続期間について確認 | 30文字前後でセンセーショナルなタイトル生成
このQ&Aのポイント
- WEBサーバ側でクラスの存続期間について確認するため、ローカルファイルにある設定情報を格納するfinalなクラスを作成しました。クライアントアプリケーションが起動する際にサーブレットを起動し、設定情報を参照して処理を進めますが、Tom-catが再起動するまで情報が存続するかどうかが心配です。
- Javaアプリケーションではクラスのstatic領域はアプリケーション終了時まで生きていますが、Tom-cat側でロードされたクラスのstatic領域の情報は永続的に存在し続けるのか不明です。テストでは確認しにくく、サービスのタイミングで情報の初期化などが行われる可能性があるため、詳しい方に確認したいです。
- Tom-catの挙動やクラスの存続期間について詳しい情報を知りたいです。サーバ側で格納された情報がTom-catが再起動するまで永続的に存続しているかどうかを確認する方法が知りたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
結論から言うと、static領域の情報は(無理やり消さなければ)永続的に存在します。 これを利用してご質問のようなことを実現するのは、Webアプリケーション開発では一般的なことです。 Webアプリケーションサーバ(ここで言うTomcat)は、Javaを動かすために、JavaVMを持っています。(持っているっていう言い方はおかしいかも…) ですので、JavaVMに対してstaticな領域を確保したなら、それはJavaVMが終るまでstaticな領域として存在するはずです。 では、WebアプリケーションサーバにおいてJavaVMが終るのはいつか、というと、管理者がWebアプリケーションサーバを停止させた時(もしくは落ちた時)です。 ということは、意図的にWebアプリケーションサーバ(Tomcat)を停止させたり、何らかの事故で停止してしまったりしたときを除き、static領域は存在しつづけると考えてよいでしょう。 ローカルのjavaアプリケーションと同じ考えです。この場合、サーバのjavaアプリケーションであり、そのjavaアプリケーションがTomcat自体である、と考えればよいかと思います。(作成したServletたちは、Tomcatが動かす部品に過ぎないと考えればよいでしょう。)
お礼
ありがとうございます 大変参考になりました