WebアプリケーションのWARファイルにパッケージ化されている.propertiesファイルを変更して、設定で環境を変更できるようにしたいというお客様がいます。彼らは自分のサーバーでこのサイトをホストするので、私は彼らを責めるとは言えませんが、最良のコースが何であるかは少しわかりません。
Java EEアプリケーションサーバーの管理者は、Zipツールを使用してWARパッケージにドリルし、プロパティファイル自体を見つけて変更する方法を知っている必要があります。これが一般的かどうかは不明です。知識かどうか。
私は通常、常に自分のビルドアーティファクトを特定の環境に適したプロパティファイルと共にパッケージ化してきましたが、これはWE WARをビルドしてお客様に引き渡す場合の一種です)プロパティファイルをWARの外部に保持しようとすると、クラスローダーの問題(JBossクラスローダー、Tomcatクラスローダーなど)が原因で乱雑になります。
便宜上、私たちはそれらの環境のプロパティファイルを維持し、それらを要求に応じて変更および構築すると考えています。私のマネージャーはこのアイデアを気に入ってくれます。なぜなら私たちが管理できるのですが、顧客はこれを好まないからです。
あなたならどうしますか?
Q:プロパティは何を変更できますか?
私は、顧客が必要に応じてプロパティを変更できるべきだと主張しますが、結局のところ、柔軟性にお金を払っていますか?
実行中のWARの場合
一部のWebコンテナーはWARファイル全体の再デプロイとしてそれを認識する可能性があるため、実行中のWARファイル内のプロパティファイルを変更すると、jujuの可能性が高くなります(WARファイルのホットデプロイがメモリリークやその他の不明な問題を引き起こす可能性があることは誰もが知っています)。
CLASSPATH上
共通の場所からプロパティファイルを読み取るようにWebアプリケーションを設定することはそれほど難しくないはずです(特に、WARファイルのアプローチと同じディレクトリでプロパティファイルを探す場合)。
分解/作業ディレクトリ
ほとんどのウェブ/アプリサーバーには、現在実行中のアプリのバージョンが機能する展開領域または作業領域があります。プロパティファイルのthatバージョンでプロパティを変更できる可能性があります。これが良い方法だと言っているのではありませんが、
Iの構築についてはどうですか?
これらのプロパティはビジネスまたは管理機能である可能性があるようです。したがって、これを処理するためのきれいなUIを作成してください。プロパティファイルを手動で編集する必要はありません。この設定をプロパティファイルに完全に保存することをやめることもできます。
HTH!
一般に、展開後にプロパティファイルを変更した場合、何か問題が発生した場合は、自分で行うことをお客様に伝えます。
それが1回限りの変更である場合、おそらくそれを順を追って説明することができ、それで問題ありません。彼らが定期的にこれを行いたいように見える場合は、何らかの管理ページまたはユーティリティを追加して、自分でプロパティを変更できるようにする価値があるかもしれません。
.propertiesファイルのデータを頻繁に変更する必要がある場合は、バイナリを変更する必要がないように、データベースに配置するのに適したデータだと思います。