如何在Java配置文件中存储敏感数据?

时间:2010-11-17 00:11:16

标签: java passwords configuration-files

我有一些我希望公开的代码。代码通过服务器发送电子邮件,连接到数据库以及需要用户名/密码的其他任务。

我想将密码等存储在一个单独的配置文件中,这样我就不必在每次提交时都清理我的代码。

我该怎么做?使用#define在C中很容易做到,但我不确定如何用Java实现这一点。

编辑:我正在使用的环境是Glassfish

2 个答案:

答案 0 :(得分:8)

基本方法是将信息放在属性文件中,并使用Properties类在运行时加载它。如果您使用的是J2EE服务器,则在服务器中配置数据库连接,代码通过抽象名称引用它们。

我想我应该补充一点,如果您正在使用服务器,如何配置它以及如何获得与代码的连接将因服务器和J2EE级别而异,因此请发布您的环境。通过查看javadoc和load()方法,使用Properties类非常明显。

答案 1 :(得分:1)

在glassfish中,转到管理控制台,在“资源”下创建一个新的连接池。它定义了您的数据库连接,并将在您的应用程序之间共享这些连接的池。现在,在JDBC Resources下,创建一个将该池映射到名称的新条目。名称通常类似于jdbc / myappname。

对于J2EE5或更高版本的应用程序,您现在可以将其添加为类级变量:

@Resource(mappedName =“jdbc / myappname”)DataSource myDS;

在运行时,服务器会将该资源注入数据库池。然后,当您需要连接时,可以在任何方法中执行此操作:

连接conn = myDS.getConnection();

结果是您的代码不必关心数据库连接信息或管理连接池。您可以在开发和生产服务器上部署相同的代码,它们将获得适当的连接。为了获得注入,它必须是服务器创建的类,如EJB,servlet,标记库处理程序或JSF托管bean。