我想在运行在Tomcat上的基于servlet的应用程序中嵌入Derby数据库。
为此,我需要将数据库文件保留在磁盘上。我希望他们驻留在已部署的Web应用程序的子文件夹中(然后我可以使用getServletContext().getRealPath()
进行转换。)
是否有一个良好的做法可以接受,应用程序相关的位置,servlet可以安全地写入?如果不存在这样的建议,那么特定于tomcat的良好做法是什么?
This discussion似乎排除在WebContent
写作;我是否必须写一个CATALINA_HOME
子文件夹,正如一些教程指出的那样(但感觉很乱)?
答案 0 :(得分:1)
当您安装应用程序时,您是希望将数据存储在/usr/bin
(或C:/Program Files
)中的某个位置,还是存储在其他数据所在的主目录中?
不要将您的应用程序二进制文件(永不更改)与其运行的数据结合在一起。删除应用程序时,您不想丢失数据,反之亦然。用户主目录甚至更好 - 安装期间选择的文件夹 - 要好得多。
答案 1 :(得分:1)
您需要将文件系统持久性位置作为程序的显式参数,可能作为属性(即-DdataStoreLocation=somepath
)。通常,Java应用程序可以访问或不访问文件系统 - 它可以在WAR内运行,甚至可以从网络加载,也没有类路径相关的文件系统。
将其作为明确的要求,并且应用程序与用户签订合同的一部分是保证文件系统可以使用的唯一方法,以及获取路径名称的方法。