从Java EE容器读取/写入文件总是一个错误的决定?

时间:2013-05-07 08:05:20

标签: java java-ee

我听到很多,从Java EE环境(例如Glassfish服务器)读取和编写文件是糟糕的设计和糟糕的决定。它总是如此吗?

我知道这不好,因为多个线程可以访问一个文件。 我想为我的应用程序创建一个动态属性文件。只有一个或两个管理员会调整属性。所以我可以在数据库中保留属性,但更简单的方法是将它存储在文件中。

这样一个错误决定的简单方法是什么?缺点是什么?

2 个答案:

答案 0 :(得分:2)

您可能知道,规范禁止在EJB中写入(和读取)文件,因为Files不是事务资源,因此无法由容器管理。因此,如果您想要安全起见,请不要这样做。也就是说,许多人仍然没有遇到任何问题,包括许多需要配置的常见第三方库。不过,我会考虑把它放在数据库中。它不会 更难。

修改

我的回答是在假设您正在讨论在EJB容器中执行此操作时编写的,当然,当我再次阅读您的问题时,情况可能并非如此。如果它只是一个简单的Web应用程序,则规范中不存在此类限制。但是你可能会觉得将它放在数据库中是有用的,因为它更容易将增量更新同步到数据库而不是文件。

答案 1 :(得分:1)

在这件事上,这不是一个糟糕的决定。

正如您所提到的那样,按容器存储文件作为普通用户案例是一个错误的决定,因为它是:

  1. 不是线程安全的。
  2. 但是你提供的情况是配置而不是正常使用,所以我看不出这个缺点。

    但无论如何你应该小心并使用某种互斥方式,不要一次由两位管理员存储文件。