EJB 1.1和磁盘io

时间:2012-04-17 08:19:17

标签: java ejb disk

我有一个关于EJB 1.1的问题(是的,真的那么老...... - 请不要欺负我......)

所以问题是旧问题之一:为什么我不应该在EJB中做磁盘io?特别是阅读文件。

更精确的用例:它只是一个文件,需要作为某些特殊数据导出的模板。 所以它是:

  • 一个文件
  • 很少改变(例如在特殊的维护时间内)
  • 很少阅读
  • 没有重负荷

有什么理由,为什么不从磁盘读取该模板文件? 当我尝试在EJB中执行磁盘操作时,是否存在任何技术限制,如ForbiddenOperationException。我已经进行了测试,阅读和转移工作正常。这种行为在EJB 2.x或3.x中是不同的吗?

非常感谢!

3 个答案:

答案 0 :(得分:1)

这个限制在规范中允许EJB的集群,如果EJB是自包含的并且不依赖于外部环境(例如文件系统),则这更容易。

访问文件系统应该可以正常工作,但是,如果您真的想要遵守规范,可以将文件捆绑在EJB jar中,并使用Class.getResourceAsStream从类路径访问它。

答案 1 :(得分:0)

来自EJB Restrictions

  

不允许企业bean访问文件主要是因为   文件不是事务资源。允许EJB访问文件   或文件系统中的目录,或使用文件描述符   妥协组件可分发性,并且存在安全隐患。

您可以将文件打包到JAR中,以便您可以使用getResource()getResourceAsStream()&可以改变,独立重新部署。

另外,如果您没有遇到当前方法的任何问题,那么它很好,但不建议按照规范。

答案 2 :(得分:0)

为什么不将它作为blob存储在数据库中?

然后您可以拥有一个管理员webapp来从浏览器

更改它

您可以使用ldap对webapp进行身份验证/授权

哎呀,抱歉让生活如此复杂