0

我想在 Tomcat 上运行的基于 servlet 的应用程序中嵌入一个 Derby 数据库。

为此,我需要将数据库文件保存在磁盘上。我希望它们驻留在已部署的 Web 应用程序的子文件夹中(然后我可以使用 转换getServletContext().getRealPath())。

servlet 可以安全写入的可接受的、与应用程序相关的位置是否存在良好实践?如果不存在这样的建议,那么特定于 tomcat 的良好做法是什么?

这个讨论似乎排除了写作WebContent;正如一些教程所指出的那样,我是否必须写一个CATALINA_HOME子文件夹(但感觉很hackish)?

4

2 回答 2

1

当您安装应用程序时,您希望看到您的数据存储在/usr/bin(或C:/Program Files)中的某个位置,还是存储在其余数据所在的主目录中?

不要将您的应用程序二进制文件(永远不会改变)与它所操作的数据结合起来。您不想在删除应用程序时丢失数据,反之亦然。用户主目录甚至更好——安装过程中选择的文件夹——要好得多。

于 2012-12-07T22:56:27.293 回答
1

您需要使文件系统持久性位置成为程序的显式参数,可能作为属性(即-DdataStoreLocation=somepath)。一般而言,Java 应用程序可能有权访问文件系统,也可能无法访问文件系统——它可能在 WAR 中运行,甚至可能已从网络加载,并且没有与类路径相关的文件系统。

让它成为一个明确的要求和你的应用程序与用户的合同的一部分是保证有一个文件系统可供使用的唯一方法,也是一种获取要使用的路径名的方法。

于 2012-12-08T04:24:00.730 回答