1

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

所以问题是老问题之一:为什么我不应该在 EJB 中执行磁盘 io?尤其是阅读文件。

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

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

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

非常感谢!

4

3 回答 3

1

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

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

于 2012-04-17T08:31:01.587 回答
0

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

然后你可以有一个管理员 webapp 从浏览器更改它

你可以使用 ldap 来认证/授权 webapp

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

于 2012-06-08T15:14:45.150 回答
0

来自EJB 限制

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

您可以将文件打包到 JAR 中,以便您可以使用getResource()getResourceAsStream()& 来读取它,并且可以独立更改、重新部署。

否则,如果您当前的方法没有遇到任何问题,那么它很好,但根据规范不推荐。

于 2012-04-17T09:36:11.363 回答