System.getProperty(“mode”)返回“null”

时间:2017-01-16 09:17:32

标签: java tomcat properties

我们最近不得不从头开始设置一个tomcat服务器。 Tomcat版本是8.0.20。部署war文件,现在System.getProperty("mode")返回“null”,它应返回PREPROD。

它应该从位于webapps目录中的mode.properties文件中读取此“mode”。注释掉的两行显示了另一部分代码在新的tomcat服务器上不再起作用。我用可能有用的代码替换它。

//String pathOfWebInf = sce.getServletContext().getRealPath("WEB-INF");
//String pathOfLocalhostFile = pathOfWebInf + File.separator + "classes"
//      + File.separator;
String pathOfLocalhostFile = this.getClass().getResource("/").getPath();

String mode = System.getProperty("mode");
String fileName = "localhost-oracle.properties." + mode;

StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
encryptor.setPassword("xxx");

Properties dbProps = new EncryptableProperties(encryptor);
try
{
    InputStream is = new FileInputStream(pathOfLocalhostFile + fileName);
    dbProps.load(is);
} catch (Exception e)
{
    throw new IOException("Could not read properties file " + pathOfLocalhostFile + fileName);
}

2 个答案:

答案 0 :(得分:2)

System.properties 与运行JVM的计算机中的所有属性相关...此处没有定义模式键,这就是为什么你得到null作为价值......

通过执行以下操作检查电脑中的所有属性:

final Properties props = System.getProperties();
props.list(System.out);

并验证自己,该地图中没有模式键...

答案 1 :(得分:1)

你必须先加载mode.properties,就像这样

private Properties mode=null;
mode = new Properties();
mode.load(new FileInputStream(pathtoMODE));

String mode = mode.getProperty("mode");