【问题标题】:Persistence without database web ideas没有数据库网络想法的持久性
【发布时间】:2011-11-16 06:16:26
【问题描述】:

我正在一个团队中使用 jsf 开发一个 java web 软件。我们不想使用数据库,但希望通过文件系统上的简单文件来完成持久化。请不要问为什么,说它很愚蠢,因为大多数情况下都是这样。

我们不能说D:/data/home/user/data 是放置数据的地方,因为可能有人在使用windows、mac 或linux。

是否有一些通过应用程序服务器保存文件的标准方法,这些方法可以在重新启动甚至重新部署应用程序、更新服务器等之后仍然存在 - 真正的持久性?如果没有,有没有tomcat的解决方案?

【问题讨论】:

  • 您是否考虑过像 JavaDB、H2 等嵌入式数据库?它只允许使用 JDBC、JPA 等进行 DB 交互。
  • @Franz,你能不能让你的用户提供文件系统路径。如果您已经达到要求用户下载和部署应用程序的程度(我的假设),那么您当然也可以让他们配置应用程序。
  • 为什么不在类路径中序列化和反序列化。或者,您可以使用它访问任何系统中的环境变量。

标签: java jsp jsf tomcat web


【解决方案1】:

该标准不提供对文件系统中 Web 应用程序可以对任意文件进行读/写访问的位置的访问。

但是,您可以指定一个位置并通过系统属性或属性文件传入该位置。

如果您只想让用户信息在会话范围内可用,请考虑将可序列化对象放入会话中并让容器管理它。

【讨论】:

    【解决方案2】:

    您是在尝试将文件保存在服务器端还是客户端?

    如果它是服务器端,那么您将可以控制操作系统(当然,除非您将应用服务器部署到每个用户并且他们将在本地运行它......),但是我接受您的问题的方式我认为您建议在客户端存储数据。在这种情况下,只要您不存储敏感数据,您就可能需要使用 cookie。

    【讨论】:

      【解决方案3】:

      一些建议:

      1. 如果您需要存储的数据足够小,请在 cookie 中进行。

      2. 提示用户输入文件。如果您不想每次都要求新的/现有的文件,请将路径存储在 cookie 中。

      3. 尝试访问 unix、mac 和 windows 格式的主目录,看看哪一种有效。

      我会说如果 1 不起作用,您应该使用 2,因为您真的不应该在用户不知情的情况下写入用户的驱动器(尤其是从小程序)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-10
        • 1970-01-01
        • 2011-03-09
        • 2022-12-15
        • 1970-01-01
        • 1970-01-01
        • 2012-11-10
        • 1970-01-01
        相关资源
        最近更新 更多