Java EE 7:如何从属性文件/文件系统上的任何文件加载JDBC连接信息

时间:2017-04-17 06:26:38

标签: jdbc java-ee-7

我正在处理Java EE 7申请。我正在使用Payara micro部署我的WAR文件。现在,我需要在我的应用程序中使用JDBC连接,但是我需要将数据库IP /用户名/密码保存在以后可以更改的位置,而无需重新上载和再次部署WAR文件。

有人可以告诉我怎样才能实现这个目标?

修改

我在SO上解决了这个问题: https://stackoverflow.com/a/6296375/1931698

但是,我正在寻找一种没有所有管道的解决方案。继承DataSource只是为了在某个外部文件中包含连接信息看起来有点矫枉过正。

修改

此外,如果我可以向用户提供配置面板,他/她可以输入JDBC连接信息,这将非常有用。有没有办法在运行时更改该信息(有效地丢弃现有的连接池并创建一个新的连接池)?

2 个答案:

答案 0 :(得分:0)

Payara Micro应该允许使用语法$ {system.property.name}替换数据源定义中的系统属性,您可以使用它来定义数据库用户名和密码以及连接字符串。

在171.1之后还有使用语法$ {ENV = env.name}的环境变量支持,其中env.name是环境变量名。

答案 1 :(得分:-1)

src文件夹中(在类路径中)使用java.utils.Properties和单独的 myproperties.properties 文件。

Properties prop = null;
try { 
 prop = new Properties();
 InputStream inputStream  = getClass().getClassLoader()
                          .getResourceAsStream("myProperty.‌​properties");
  if (inputStream != null) { 
    prop.load(inputStream); 
  } 
} catch (IOException e) {
   errorLog.error("Property file not found in classpath: 
                           ClientChecking Class.");
}
String userName = prop.getProperty("USERNAME");  

myproperties.properties 文件必须包含:

USERNAME=user123 

如果您使用Apache tomcat进行托管,那么您可以从路径WebContent(根目录) / WEB-INF / classes /

中查找和编辑属性文件