Javaで作成したウェブアプリケーションで
もともと設定ファイルの差し替え時には、デプロイ、再起動が必要という仕様だった。
設定ファイルがwarの中にあって、デプロイ時にディレクトリが展開される。
設定ファイルは初期起動時のみ読み込みだから、編集後は再起動が必要だった。
その仕様は、設定ファイルのリソースが低いため毎回読みこむような実装とした。
設定ファイル書き換えの度に再起動って…。(設計で決まって合意したことなんだけど)
まあ、毎回、読み込むようにしたので、それはそれで運用面では便利になったと思う。
…外出しにすべきだったけど。
今度は設定ファイルであるプロパティファイルのメンテナンスの問題に気がついた。
プロパティファイル内の日本語部分がnative2asciiされてUnicodeで保存されていた。
そうだった、プロパティエディタ使っていたからUnicodeを意識していなかった。
ネイティブコードからUnicodeへ変換(native2ascii) – Javaソースファイルのエンコーディング – Java入門
http://www.javadrive.jp/start/encoding/index3.html
運用者はUTF-8で編集したいよなあ。(SJISやEUCは妄想シミュレーションの中に含めない)
すらすらnative2asciiで記述できる運用者はいないよなあ。
Java – プロパティファイルをUnicode以外で記述、読み込む – Qiita [キータ]
http://qiita.com/areph@github/items/e2430fe12a2880fb7a2e
これでUTF-8のプロパティファイルも読み込める。
編集もUTF-8で書けば楽勝だと思った。
で、その後、Eclipseで修正したら、勝手にnative2asciiされて保存された。
プロパティエディタとかで編集したからだ。
あ~。これは運用時には問題かも。
【運用問題シミュレーション】
開発者はとりあえずUTF-8でファイル作成しておく。
運用者がプロパティファイルをUTF-8で編集。
開発者が同じプロパティファイルを編集する。native2asciiされて保存。
運用者がプロパティファイルを開くとnative2asciiされてる。 運用者「!?」
運用者が修正して保存。asciiばかりだから文字コードがSJISになって、SJISで保存しちゃうかも。
開発者がSJISを含むプロパティファイルを開く。開発者「!?」
うむ、どうしよう。
…ずっとさかのぼって、そもそも論から言えば、
設定ファイルにはプロパティファイルのパスだけ書いといて、
warの外出しにしなかったのが問題だった。