複数の Maven プロジェクトと継続的インテグレーション (例: hudson または jenkins) を使用して、各環境 (dev、qa、prod) のすべてのプロパティ ファイルを含む構成 jar を構築し、すべてを EAR としてバンドルします。しかし、必要なときに本番環境で簡単に変更することはできません。
構成はアプリケーションインスタンスのデータベースにあるはずだと思います。ローカル マシンの構成は、dev や QA、PROD、DR などとは異なる場合があります。
必要なのは、簡単な方法で構成をデータベースから取得する方法です。
Apache commons-configuration の提供された依存関係を使用して別のプロジェクトを作成します。データを保存する方法はたくさんありますが、データベースが好きで、構成はデータベース環境に存在します。
import javax.sql.DataSource;
import org.apache.commons.configuration.DatabaseConfiguration;
public class MYConfig extends DatabaseConfiguration {
public MYConfig(DataSource datasource) {
super(datasource, "TABLE_CONFIG", "PROP_KEY", "PROP_VALUE");
}
}
ほとんどの設定を DB に置き、それを変更するための簡単な画面を用意します。内部的には、値を読み取って変更できる汎用構成サービス EJB を使用できます。各モジュールには、特定のゲッターとセッターを持つカスタム拡張バージョンを含めることができます。
単純な API としての Commons 構成。その後、必要に応じて GUI を作成できます。好きなようにインターフェースを行うことができます。または、クイックウィンとしてインターフェイスがありません。
すべてのプロパティ ファイルをバージョン管理してから、本番環境でチェックアウトし、変更後に本番環境のブランチにチェックインします。
バージョン管理は素晴らしいです。コンポジションを使用して別の DatabaseConfiguration を追加します。拡張するクラスはアクティブな構成であり、構成されたクラスは監査です。バージョンを持つことができる別のコンストラクターがあります。適切なメソッドをオーバーロードするだけで、目的の効果が得られます。
import javax.sql.DataSource;
import org.apache.commons.configuration.DatabaseConfiguration;
public class MYConfig extends DatabaseConfiguration {
final DatabaseConfiguration audit;
public MYConfig(DataSource datasource) {
super(datasource, "TABLE_CONFIG", "PROP_KEY", "PROP_VALUE");
audit = new DatabaseConfiguration("TABLE_CONFIG_AUDIT", "PROP_KEY", "PROP_VALUE");
}
@Override
public void addProperty(String key, Object value) {
Object wasValue = super.getProperty(key);
super.addProperty(key, value);
audit.put(key,wasValue);//add version code
}
}
http://commons.apache.org/proper/commons-configuration/