J'ai créé un projet web avec eclipse pour exécuter mon service web sur Tomcat v7. J'ai un fichier de configuration qui doit définir certaines variables qui doivent être changées pendant que le serveur web est en place sans avoir besoin de le redémarrer. Le problème est: où puis-je mettre ce fichier? Au moment où je l'ai mis dans le "./" dir, mais il semble que lorsque j'exporte le fichier WAR et l'installe sur le serveur web, il ne fonctionne pas. Est-il possible de créer ce fichier et de le modifier dans le WAR?Création d'un fichier de configuration à l'exécution en Java exporté WAR
Voici une partie du code du fichier .class qui accède au fichier de configuration
public class ToolConfigurations {
private static final Logger log = LogManager.getLogger(ToolConfigurations.class); //Oggetto logging
private static ToolConfigurations instance = null; //verificarne la necessità
private static String defaultServerName = null;
private static String defaultDbName = "postgres";
private static String defaultDbUser = "postgres";
private static String defaultDbPass = "password";
private static int defaultDbMaxConnNum = 10;
private static String configFilePath = ".\\";
private static String configFileName = "tool.properties";
private String serverName = null;
private String dbName = null;
private String dbUser = null;
private String d`enter code here`bPass = null;
private int dbMaxConnNum = -1;
private ToolConfigurations() throws Exception {
File file = new File(configFilePath + configFileName);
if(file.exists()) {
//file configurazione esiste
FileReader in = new FileReader(file);
BufferedReader br = new BufferedReader(in);
String line = null;
while((line = br.readLine()) != null) { //Leggo riga per riga il file
String[] values = line.split(" ");
switch (values[0]) {
case "serverName":
serverName = values[1];
break;
case "dbName":
dbName = values[1];
break;
case "dbUser":
dbUser = values[1];
break;
case "dbPass":
dbPass = values[1];
break;
case "dbMaxConnNum":
dbMaxConnNum = Integer.parseInt(values[1]);
break;
default:
log.warn("Elemento inaspettato nel file di configurazione: " + values[0]);
break;
}
}
br.close();
in.close();
}else {
if(file.createNewFile() == false) {
//Errore creazione file
log.error("Errore creazione file di configurazione");
throw new Exception("Errore creazione file configurazione");
}
//CREO FILE CONFIGURAZIONE CON IMPOSTAZIONI DI DEFAULT
FileWriter fw = new FileWriter(file);
fw.write("dbName " + defaultDbName + "\r\n");
fw.write("dbUser " + defaultDbUser + "\r\n");
fw.write("dbPass " + defaultDbPass + "\r\n");
fw.write("dbMaxConnNum " + defaultDbMaxConnNum + "\r\n");
fw.flush();
fw.close();
log.warn("File di configurazione non trovato. Path: " + file.getAbsolutePath() + ". Creato nuovo file con configurazioni di default.");
//CARICO IMPOSTAZIONI DI DEFAULT
dbName = defaultDbName;
dbUser = defaultDbUser;
dbPass = defaultDbPass;
dbMaxConnNum = defaultDbMaxConnNum;
}
}
public static synchronized ToolConfigurations getInstance() throws Exception {
if(instance == null) {
instance = new ToolConfigurations();
}
return instance;
}
...
GUERRE ne sont pas destinés à être modifiés lors de l'exécution. Cela dit, vous pouvez manipuler une guerre éclatée (décompressée). Je recommanderais contre. Vous pourriez trouver une meilleure idée de mettre votre configuration dans JNDI. –
J'ai besoin d'un endroit où mettre et atteindre mes fichiers de configuration indépendamment de l'environnement dans lequel je l'ai mis. –