0

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 的模式,它总是在重新启动时使用该模式。

你对那个怎么想的?

4

1 回答 1

1

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

这个例子似乎很好地总结了它。

于 2012-10-12T14:35:59.397 回答