【问题标题】:How can I store sensitive data in Java configuration files?如何在 Java 配置文件中存储敏感数据?
【发布时间】:2010-11-17 00:11:15
【问题描述】:

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

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

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

编辑:我使用的环境是 Glassfish

【问题讨论】:

    标签: java passwords configuration-files


    【解决方案1】:

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

    我想我应该补充一点,如果您使用服务器,如何配置它以及如何连接到您的代码将因服务器和 J2EE 级别而异,因此请发布您的环境。只需查看 javadoc 和 load() 方法,就可以很明显地使用 Properties 类。

    【讨论】:

    【解决方案2】:

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

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

    @Resource(mappedName="jdbc/myappname") 数据源 myDS;

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

    连接连接 = myDS.getConnection();

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

    【讨论】:

      猜你喜欢
      • 2014-05-25
      • 2013-07-14
      • 2021-12-08
      • 2021-11-14
      • 2017-09-05
      • 2020-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多