当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

通过将我的Java Web应用程序(myapp.war)放入Ubuntu 10.04上的Tomcat上的webapps目录中进行了部署。

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

那么,Web应用程序应将数据存储在哪里?我希望它不是webapps目录中提取的档案。可以很容易地将其删除。可以配置Tomcat,而不提取.war文件。这样就不会有提取的密码。

也许/var/lib/tomcat6/应该属于用户tomcat6,这是Ubuntu中的错误吗?

最佳办法

如果文件的持久保存时间不必超过servlet上下文的life-cycle,则servlet容器为每个servlet上下文提供一个专用的临时目录,由javax.servlet.context.tempdir属性指定。

请参阅Servlet Specification 2.3,第3章Servlet上下文

3.7.1 Temporary Working Directories

The convenience of a temporary storage directory is required for each servlet context. Servlet containers must provide a private temporary directory per servlet context and make it available via the javax.servlet.context.tempdircontext attribute. The object associated with the attribute must be of type java.io.File

次佳办法

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

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

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

  • 我可以将其放置在框上所需的位置,SysAdmins可以将其放置在生产系统上所需的位置。

  • 您稍后可以改变主意。

  • 您不需要符号链接(以前这些符号链接已经在我身上神奇地消失了,从而破坏了系统。)

  • 您可以具有几组测试数据,并且只需将配置指向所需的任意一组即可。

  • 您可以将其放在有磁盘空间的任何地方。

  • 稍后您将改变主意。

第三种办法

我在启动板上找到了解决方案。 /var/lib/tomcat6/webapps/是可写的。这意味着以下工作:

File myFile = new File("webapps/myfile.txt");

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8719.html,未经允许,请勿转载。