
内容)tomcat起動時にpropertiesファイルの内容を変更しても、有効にならないのは仕様でしょうか。
Servletから以下のコマンドを使用し、propertiesファイルを読み込む
プログラムを作成しました。
private static final String FILE_NAME = "test.properties";
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream( FILE_NAME );
プログラムを実行し、FILE_NAMEの各キー値をメモしました。
FILE_NAMEの各キーの値を編集後(tomcatの再起動はしていない)、
再度プログラムを実行したところ、以前のpropertiesファイルの
キー値が返ってきてしまいました。
これは仕様でしょうか。
No.4ベストアンサー
- 回答日時:
No2です。
クラスローダの名前は
System.out.println(this.getClass().getClassLoader().class.getName());
でわかります。
あとはそのクラスの実装ですが、Tomcatであればソースコードが公開されているので、それを見ればわかります。
Tomcat未経験ですので、どのクラスローダが使用されているのかわかりませんが、Tomcat6.0.13のソースを見てみました。
例として WebappClassLoader というクラスを見ると、resourceEntries という名の HashMap のフィールドがありここに取得したリソースがキャッシュされています。getResourceAsStream からたどれば、初回取得時に resourceEntries に put され、2回目以降は resourceEntries から get していることがわかります。
こんな感じで調べてみてはいかがでしょう。
ありがとうございました。
tomcat4.1を使用しておりまして、
WebappClassLoaderのソースをみたところ、同じような動きを
しておりした。
ClassLoaderを使用しない方法を考えて見ます。
No.3
- 回答日時:
> properties.load(inputStream);
ここで使われている、inputStream自身は毎回作られるのでしょうか?
この回答への補足
回答ありがとうございます。
下記のソースプログラムが毎回呼ばれる形になっておりますので、
毎回作られています。
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream( FILE_NAME );
No.2
- 回答日時:
tomcat未経験ですが。
一般的にクラスローダが取得したリソースは、初回取得時にキャッシュされます。したがって propaerties ファイルを変更したのであれば、アプリケーションサーバーの再起動が必要だと思われます。
しかし、実際のところその辺の動きは各クラスローダの実装によります。this.getClass().getClassLoader() で取得されるクラスローダがどのように実装しているか調べてみてはいかがでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- C言語・C++・C# このプログラミング誰か教えてくれませんか 2 2022/05/14 09:45
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
今日は こどもの日 で、良い天...
-
同一パッケージにあるクラスが...
-
レーザーポインターを探しています
-
恋愛
-
そんなにお金がなくても年に1度...
-
中学生です。 私は教室の黒板に...
-
女子高に通ってます。 私のクラ...
-
小学4年の頃、好きな同級生にス...
-
3年間同じクラスになる確率
-
他クラスのすごくかっこいい同...
-
フランス語でメッセージ
-
河合塾
-
クラスの可愛い人ランキングで...
-
FTPについて
-
java servletについて
-
Java の問題集
-
ClassLoaderを作成してみたいの...
-
クラスのプロパティに構造体を...
-
パッケージについて
-
Javaでの構造体の構造体のクラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じクラスにならない確率を教...
-
そんなにお金がなくても年に1度...
-
河合塾のクラス分けについて
-
今回のクラス替え最悪でした、...
-
3年間同じクラスになる確率
-
java eclipse 型に解決できません
-
恋愛
-
同一パッケージにあるクラスが...
-
小学4年の頃、好きな同級生にス...
-
配列の重複する値とその個数を...
-
main()を持つクラスが2つ以上...
-
EclipseでJSPのコンパイルエラー
-
共通で使う関数を集めたクラス...
-
他クラスのすごくかっこいい同...
-
どこからも呼ばれていない無意...
-
中学生です。 私は教室の黒板に...
-
ネスカフェ エクセラ と UCCク...
-
dllと同じプロジェクトにする方法
-
「隣の芝生は青く見える」現象...
-
コンボボックスのマウスホイー...
おすすめ情報