【问题标题】:File operations with Wildly Ejb implementationWildly Ejb 实现的文件操作
【发布时间】:2015-11-27 21:56:38
【问题描述】:

我想在stateless EJB 方法中进行一些文件操作(复制)。我知道不建议这样做。但是对于一些特殊的EJB 实现来说是可能的。 Wildfly 最好的东西是什么?

编辑一些令人不安的旧链接:

"Sun blueprint: EJB Restrictions"

EJB Bad Practices: Use of Java I/O

Stackoverflow

【问题讨论】:

    标签: java ejb wildfly stateless


    【解决方案1】:

    Wildfly 最好的东西是什么?

    只是做文件操作(说真的)。好像没有安装安全管理器来阻止您这样做。

    无状态 EJB 与 Java EE 中 bean 中的许多其他类型的方法没有什么不同。并非像某些人认为的那样,它在 EJB 方法中是不允许的,但在 CDI bean 方法中是允许的。事实并非如此。

    那里有一些旧信息,其中规范说“不允许使用 EJB”。但实际上的意思是 Java EE 是不允许的。当时 EJB 被视为等同于 Java EE,因此这就是这种广泛传播的混乱的根源。

    后来这个神话开始了它自己的生活,人们梦想着可以在 Servlet 中执行 IO,但不能从 EJB 执行 IO 的场景,因此他们设计了各种疯狂的架构来委托 IO(或线程,另一个最爱)从 EJB 到 Servlet。太可笑了!

    限制(如上所述,针对整个 Java EE,而不仅仅是 EJB)也太急切了。根本没有理由绝对禁止它。

    您引用的一些答案是更具追溯性的原因。人们只是为规则编造理由以某种方式证明他们的世界是正当的,即使理由和规则不匹配。

    因此,规则已从 EJB 规范中删除

    没错,在当前的 EJB 规范中,您不会再发现禁止使用来自 EJB 的 IO(同样,它从来没有说“EJB”,但应该读作“Java EE”)。

    见:

    当然,与许多事情一样,在使用 IO 时可能需要谨慎,也可能不必谨慎,但这与 Java EE 或 EJB 完全无关,几乎适用于任何应用程序,并且更多地取决于 IO 的种类,您正在编写的应用程序类型和您的情况。

    两个小的极端例子:

    您自己的个人 Java EE 应用程序,您是您在家中安装在您的树莓派上的唯一开发人员,它在启动时从外部位置读取一个小配置文件 -> 几乎总是可以的。

    由许多不同团队开发的大型集群企业应用程序,单独集成,单独部署,高度事务性,想要将临时数据写入文件系统但必须在事务结束时再次清理 -> 可能不是一个好主意.

    在这两者之间实际上是无限量的变化。例如,我们有一个更大的企业应用程序,它以一种非常受控和特定的方式从 Singleton 向外部文件夹执行 IO。该应用程序在高负载下为数百万用户提供服务,并且 IO 从来没有出现过问题。所以即使是“企业”和“事务”也不一定非要表示“无IO”。这真的取决于。

    【讨论】:

    • 感谢您的回答。所以在实践中使用来自 EJB 的 WildFly 文件是安全的吗?关于 EJB 的一些旧信息让我感到困惑。请检查更新
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多