Java Web 应用程序应该在哪里存储其数据?

2022-09-02 22:24:03

我的Java Web应用程序()通过将其放入Ubuntu 10.04上Tomcat上的desectry来部署。myapp.warwebapps

此应用程序需要在文件中保存一些数据。但是运行Tomcat()的用户对主目录没有写入权限,也没有对当前工作目录的写入权限,因为两者都属于。tomcat6/usr/share/tomcat6//var/lib/tomcat6/root

那么,Web 应用程序应该在哪里存储其数据呢?我希望它不是webapps direcotry中提取的存档。这个可以很容易地被意外删除。而且Tomcat可以配置,而不是提取.war文件。然后就不会有提取的direcory。

也许应该属于用户蚂蚁这是Ubuntu中的一个错误?/var/lib/tomcat6/tomcat6


答案 1

如果文件的保留时间不需要超过 servlet 上下文的生命周期,那么 servlet 容器将为每个 Servlet 上下文提供一个由 attribute 指定的专用临时目录。javax.servlet.context.tempdir

请参见 Servlet 规范 2.3,第 3 章 Servlet 上下文

3.7.1 临时工作目录

每个 servlet 上下文都需要临时存储目录的便利性。Servlet 容器必须为每个 Servlet 上下文提供一个私有的临时目录,并通过 javax.servlet.context.tempdircontext 属性使其可用。与该属性关联的对象必须是 java.io.File 类型


答案 2

在回答他自己的问题时,Witek说 - 至少在他安装他的Ubuntu版本时。在我的RHEL 5.2系统上甚至不存在,因此没有Web应用程序子目录可写或不可写,这导致了我的答案。/var/lib/tomcat6/webapps/ is writable/var/lib/tomcat<X>

问:Java Web 应用程序应该在哪里存储其数据?
答:无论您在哪里配置它来存储其数据。

使位置可配置为 web.xml或 myApplication.properties 文件中。<context-param>

  • 我可以把它放在我的盒子上我想要的地方,系统管理员可以把它放在生产系统上他们想要的地方。
  • 您可以稍后改变主意。
  • 你不需要符号链接(这些链接以前在我身上神奇地消失了,破坏了系统。
  • 您可以拥有多组测试数据,并且只需将配置指向所需的任何一组。
  • 您可以将其放在有磁盘空间的任何位置。
  • 你以后会改变主意。

推荐