我只需要使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