代码之家  ›  专栏  ›  技术社区  ›  Witek

javaweb应用程序应该在哪里存储数据?

  •  18
  • Witek  · 技术社区  · 16 年前

    我的Java web应用程序( myapp.war webapps ubuntu10.04上Tomcat上的direcotry。

    tomcat6 )没有对主目录的写入权限 /usr/share/tomcat6/ 并且没有对当前工作目录的写入权限 /var/lib/tomcat6/ ,因为两者都属于 root .

    那么web应用程序应该将数据存储在哪里呢?我希望它不是webapps目录中提取的存档。这个很容易被意外删除。可以配置Tomcat,而不是提取.war文件。那就没有提取的direcotry了。

    也许 应属于用户 tomcat6公司

    5 回复  |  直到 16 年前
        1
  •  4
  •   unhillbilly    16 年前

    javax.servlet.context.tempdir 属性。

    Servlet Specification 2.3 ,第3章Servlet上下文

    名录

    临时工作的方便 存储目录是每个 servlet上下文。Servlet容器 必须提供私人临时 javax.servlet.context.tempdircontext 属性。与关联的对象 属性必须为 键入java.io.File

        2
  •  3
  •   Stephen P    16 年前

    维泰克在回答自己的问题时说 /var/lib/tomcat6/webapps/ is writable /var/lib/tomcat<X> 甚至不存在,所以没有webapps子目录可写或不,这导致我的答案。

    问: javaweb应用程序应该在哪里存储数据?

    <context-param> 或者在myApplication.properties文件中。

    • 我可以把它放在盒子里我想放的地方,系统管理员可以把它放在生产系统上他们想放的地方。
    • 你以后可以改变主意。
    • 你不需要符号链接 在我身上神奇地消失了,打破了系统。)
    • 你可以把它放在任何有磁盘空间的地方。
    • 你呢 是
        3
  •  2
  •   limc    16 年前

    我想这取决于你处理的是什么样的数据。大多数时候,数据进入数据库仅仅是因为执行CRUD既快又容易。如果您想存储本地化的用户配置,而不关心它的可移植性,那么您可以将其存储在 user.home

        4
  •  2
  •   Witek    16 年前

    我在Launchpad上找到了解决方案。 /var/lib/tomcat6/webapps/

    File myFile = new File("webapps/myfile.txt");
    
        5
  •  0
  •   brabster    16 年前

    我还没有看到任何关于在本地存储此类数据的具体指导,可能是因为您通常将此类数据存储在数据库中。