【发布时间】:2010-11-17 00:11:15
【问题描述】:
我有一些代码想要公开。该代码通过服务器发送电子邮件、连接到数据库以及其他需要用户名/密码的任务。
我想将密码等存储在单独的配置文件中,这样我就不必在每次提交时清理我的代码。
我该怎么做?使用#define 在 C 中很容易做到这一点,但我不确定如何在 Java 中完成。
编辑:我使用的环境是 Glassfish
【问题讨论】:
标签: java passwords configuration-files
我有一些代码想要公开。该代码通过服务器发送电子邮件、连接到数据库以及其他需要用户名/密码的任务。
我想将密码等存储在单独的配置文件中,这样我就不必在每次提交时清理我的代码。
我该怎么做?使用#define 在 C 中很容易做到这一点,但我不确定如何在 Java 中完成。
编辑:我使用的环境是 Glassfish
【问题讨论】:
标签: java passwords configuration-files
基本方法是将信息放在属性文件中,并在运行时使用 Properties 类来加载它。如果您使用的是 J2EE 服务器,则在服务器中配置数据库连接,并且代码通过抽象名称引用它们。
我想我应该补充一点,如果您使用服务器,如何配置它以及如何连接到您的代码将因服务器和 J2EE 级别而异,因此请发布您的环境。只需查看 javadoc 和 load() 方法,就可以很明显地使用 Properties 类。
【讨论】:
在 glassfish 中,转到管理控制台并在资源下创建一个新的连接池。这定义了您的数据库连接,并将在您的应用程序之间共享这些连接池。现在在 JDBC Resources 下,创建一个将该池映射到名称的新条目。该名称通常类似于 jdbc/myappname。
对于 J2EE5 或更高版本的应用程序,您现在可以将其添加为类级变量:
@Resource(mappedName="jdbc/myappname") 数据源 myDS;
在运行时,服务器会将该资源注入您的数据库池。然后当你需要连接时,你可以在任何方法中这样做:
连接连接 = myDS.getConnection();
结果是您的代码完全不必关心数据库连接信息或管理连接池。您可以在开发和生产服务器上部署相同的代码,它们将获得适当的连接。为了获得注入,它必须是服务器创建的类,例如 EJB、servlet、标记库处理程序或 JSF 托管 bean。
【讨论】: