Мне просто нужно сделать системную переменную в jboss-сервере нечувствительной к регистру.
переменная определена в файле start.sh как показано ниже:
cd /opt/logs
nohup /opt/jboss/bin/standalone.sh -DmyEnvironment=Release_19.2.2_ST -c standalone-full_st.xml &
Ниже приведен текущий код, который я использую для добавления строки с именем файла в соответствии с окружением.
public static String getEnvConfiguredFile(String file) {
String env = System.getProperty("myEnvironment");
if(env !=null) {
if(env.contains("AT")){
return file+"_at";
}
else if(env.contains("ST")){
return file+"_st";
}
else if(env.contains("PROD")){
return file+"_prod";
}
else{
return file;
}
}else {
return file;
}
}
Проблема в том, что когда я использую -DmyEnvironment = Release_19.2.2_st (здесь st в нижнем регистре), я получаю сообщение об ошибке приложения, так как не удается найти файл.
Чтобы запустить пробег в нижнем регистре, я изменил метод на:
public static String getEnvConfiguredFile(String file) {
String envtmp = System.getProperty("myEnvironment");
env=envtmp.toUpperCase();
if(env !=null) {
if(env.contains("AT")){
return file+"_at";
}
else if(env.contains("ST")){
return file+"_st";
}
else if(env.contains("PROD")){
return file+"_prod";
}
else{
return file;
}
}else {
return file;
}
}
Хотя проблема выглядит просто, но заглавные буквы в start.sh работают нормально, а строчные выдают ошибку.
Ниже приведено исключение
Caused by: java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:434) [rt.jar:1.7.0_71]
at java.util.Properties.load0(Properties.java:353) [rt.jar:1.7.0_71]
at java.util.Properties.load(Properties.java:341) [rt.jar:1.7.0_71]
at com.corridor.util.PropertiesUtil.<init>(PropertiesUtil.java:22) [home-util.jar:]
at com.corridor.util.PathUtil.getBrokerProperties(PathUtil.java:90) [home-util.jar:]
at com.corridor.util.MessageUtil.<clinit>(MessageUtil.java:32) [home-util.jar:]
... 153 more