java - 在java webapps中持久化数据库连接参数

标签 java web-applications configuration persistence

Java webapps 提供了一种方便的方法来运行它们:将 jar 文件放入 tomcat 的 webapps 文件夹或使用 tomcat 管理器上传就足够了。如果 jar 文件名为 foo123.jar,则很快就可以在 http://:8080/foo123/下访问 Web 应用程序。然而,在大多数情况下,配置都存在问题:将数据存储在数据库中是一个很好的做法,但是我可以在哪里存储数据库连接参数呢?通常您必须修改一些 server.xml 或 web.xml 或其他配置文件才能将其放置在那里,但这会妨碍使用此类应用程序的自动部署。

“简单易用”的 Web 应用程序应该在第一次运行时请求其所需的配置,例如“设置”屏幕,然后将其保留在 Servlet 容器重新启动后仍可正常运行的某个位置。当然,对于数据库连接参数,将它们存储在数据库中并不是一种选择。

根据规范,Servlet 容器必须提供 Web 应用程序具有写入访问权限的目录。可以使用以下方法确定:

File tempDir =
(File) session.getServletContext().getAttribute("javax.servlet.context.tempdir");

此目录的内容绑定(bind)到“servlet 上下文生命周期”,如果我没猜错的话,这意味着服务器重新启动后它是空的。如果这是真的,它就不能用于我的目的。

有人知道这方面的最佳实践吗?我不想重新发明轮子。

由于缺乏更好的解决方案,我会这样实现:正如我所说,如果您使用上面描述的简单部署方式,上下文路径将从 jar 文件名派生。所以我可以想象也将其用于数据库连接。简单来说:如果 Web 应用程序 foo123 在 localhost:3306(MySQL 默认端口)上找到 MySQL 连接,并且可以使用用户名 foo123 和密码 foo123 连接到它,并且有权访问名为 foo123 的模式,那么它在重新启动时始终使用该模式。

你对此有何看法?

最佳答案

您可以只使用 context.xml文件。这将允许您在逐个服务器的基础上存储配置文件,这意味着您永远不必将该信息放入代码本身中。

This example看来总结得相当好。

关于java - 在java webapps中持久化数据库连接参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12860912/

相关文章:

c# - 以编程方式配置 log4net,但额外的日志记录将输出到控制台

php - 如何使用 nginx 和 php-fpm 将请求 url 子文件夹路径路由到特定 php 页面

java 使用带有数组的方法

java - 如何在 Java 中对社交图建模

javascript - Titanium 之外的 Html5 桌面 webapp 选项

python - 使用 python 提取网页上的 URL 列表的简单方法是什么?

javascript - 循环中的 jQuery 元素

java - java中的依赖管理

web-applications - 如何清除 Safari 中网络应用程序的离线缓存?

configuration - 用于 system_auth 的复制因子