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

时间:2012-10-12 14:11:14

标签: java web-applications configuration persistence

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

“易于使用”的Web应用程序应该在第一次运行时请求其所需的配置,如“设置”屏幕,然后将其保留在servlet容器重启后仍然存在的某个位置。当然,对于数据库连接参数,不能将它们存储在数据库中。

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

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

此目录的内容绑定到“servlet上下文生命周期”,如果我说得对,这意味着在服务器重新启动后它是空的。如果这是真的,它不能用于我的目的。

有人知道某种最佳做法吗?我不想重新发明轮子。

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

你怎么看?

1 个答案:

答案 0 :(得分:1)

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

This example似乎很好地总结了它。