Como diferenciar entre propriedades de teste e produção em um aplicativo?
Estamos desenvolvendo uma grande solução de e-sales para J2ee. Ele tem muitas integrações: CMS, ERP, Mail server etc. Todos esses sistemas são divididos em ambientes de teste e produção.
Precisamos implantar nosso aplicativo em nossos servidores de teste com configuração de teste e, quando implantado em nossos servidores de produção, ele deve usar a configuração de produção. Como podemos fazer nosso aplicativo selecionar as propriedades corretas?
A coisa que tentamos até agora é esta:
Todos os nossos arquivos de propriedades contêm propriedades de teste e propriedades de produção
test.mvxapi.server = SERV100TS test.mvxapi.username = user test.mvxapi.password = password test.mvxapi.port = 6006 test.mvxapi.cono = 600 mvxapi.server = SERV10001 mvxapi.username = user mvxapi.password = password mvxapi.port = 6001 mvxapi.cono = 100
O Util que lê essas propriedades possui um switch: isTest () que prefixa a chave com "test".
public String getProperty(String property) { return properties.getProperty(prefix + "" + property); }
O switch é definido por outra propriedade que é criada pelo nosso servidor de compilação. Quando o .EAR é construído, o script para nossos servidores de produção é inserido (input to build.xml) "isProduction = true" em system.properties.
<propertyfile file="${buildDir}/system.properties">
<entry key="isProduction" value="${systemType}"/>
</propertyfile>
Não tenho certeza se essa é a melhor maneira de fazer isso. Se por algum motivo "isProduction = false" é cometido de forma errada para o nosso ambiente de produção, todo o inferno é solto.
Eu li as pessoas têm propriedades localmente no servidor. Mas nós realmente não queremos ter arquivos espalhados. Temos cluster de servidores de produção. Certificar-se de que cada servidor tenha o arquivo de propriedades correto não parece ser a prova de falhas