我正在处理Java EE 7
申请。我正在使用Payara micro
部署我的WAR
文件。现在,我需要在我的应用程序中使用JDBC连接,但是我需要将数据库IP /用户名/密码保存在以后可以更改的位置,而无需重新上载和再次部署WAR
文件。
有人可以告诉我怎样才能实现这个目标?
修改
我在SO上解决了这个问题: https://stackoverflow.com/a/6296375/1931698
但是,我正在寻找一种没有所有管道的解决方案。继承DataSource
只是为了在某个外部文件中包含连接信息看起来有点矫枉过正。
修改
此外,如果我可以向用户提供配置面板,他/她可以输入JDBC连接信息,这将非常有用。有没有办法在运行时更改该信息(有效地丢弃现有的连接池并创建一个新的连接池)?
答案 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 /
中查找和编辑属性文件