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

发布于 2024-10-03 08:38:06 字数 188 浏览 4 评论 0原文

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

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

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

编辑:我使用的环境是 Glassfish

I have some code that I want to make public. The code sends email via servers, connects to databases, and other tasks requiring usernames/passwords.

I'd like to store the passwords and such in a seperate configuration file so that I don't have to sanitize my code on every commit.

How can I do this? It would be easy to do in C using #define, but I'm not sure how to accomplish this in Java.

EDIT: The environment I'm using is Glassfish

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

仙气飘飘 2024-10-10 08:38:06

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

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

The basic method is put the information in a properties file and use the Properties class to load it at run time. If you're using a J2EE server, database connections are configured in the server and the code references them by an abstract name.

I think I should add that if you're using a server, how to configure it and how to get the connections to your code will vary by server and J2EE level so post your environment. Using the Properties class is pretty obvious just by looking at the javadoc and the load() methods.

少女情怀诗 2024-10-10 08:38:06

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

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

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

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

Connection conn = myDS.getConnection();

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

In glassfish, go to the admin console and under Resources create a new connection pool. That defines your database connection and will share a pool of those connections among your applications. Now under JDBC Resources, create a new entry that maps that pool to a name. The name is usually something like jdbc/myappname.

For a J2EE5 or later application, you can now add this as a class level variable:

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

At runtime the server will inject that resource to your database pool. Then when you need a connection, you can do this inside any method:

Connection conn = myDS.getConnection();

The result is your code doesn't have to care at all about the database connection information or managing a pool of connections. You can deploy the identical code on development and production servers, and they will get an appropriate connection. In order to get the injection, it has to be a class the server creates like an EJB, servlet, tag library handler, or JSF managed bean.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文