您的问题有我的解决方案:
配置属性
-DconfigurationFile
您通过设置为 JVM 的参数定义配置文件。然后尝试confiFile
在您的classpath
(内部 jar)中查找,如果未找到,则将搜索文件系统。好吧,最后属性将被 JVM 参数覆盖。
Properties prop = new Properties();
String configFile = System.getProperty("configurationFile",defaultConfigurationFile);
try {
InputStream classPathIo = getClass().getClassLoader().getResourceAsStream(configFile);
if(classPathIo != null) {
prop.load(classPathIo);
} else {
prop.load(new FileReader(configFile));
} catch (FileNotFoundException e) {
log.warn("The config file {} cannot be found. It can be setup by -DconfigurationFile parameter.",configFile);
} catch (IOException e) {
log.warn("The config file {} is not readable.",configFile);
} finally {
log.info("Configuration loaded! {} values found from configFile {}.",prop.entrySet().size(),configFile);
prop.putAll(System.getProperties());
}
log4j.properties
解决方案是使用以下 JVM 参数:
-Dlog4j.configuration={path to file}
如果文件不在类路径中(如果是 Tomcat,则在 WEB-INF/classes 中)但在磁盘的某个位置,请使用 file:,例如
-Dlog4j.configuration=file:/somewhere/on/disk/log4j.properties
休眠.cfg.xml
我不知道该怎么做。无论如何,发布后很难配置持久性,因为配置很难绑定到实现。我认为将它保存在类路径中是可以的。