java - 使用 Wildly Ejb 实现的文件操作

标签 java ejb wildfly stateless

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

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

"Sun blueprint: EJB Restrictions"

EJB Bad Practices: Use of Java I/O

Stackoverflow

最佳答案

What is the best thing for Wildfly ?

只是在做文件操作(认真)。这并不是说安装了安全管理器来阻止您这样做。

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

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

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

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

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

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

没错,在当前的 EJB 规范中,您将不会再发现禁止使用来自 EJB 的 IO(再说一次,这绝不意味着说“EJB”,而应该读作“Java EE”)。

参见:

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

两个小的极端例子:

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

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

在这两者之间实际上是无限量的变化。例如,我们有一个更大的企业应用程序,它以非常可控和特定的方式从单例中对外部文件夹进行 IO。该应用程序在高负载下为数百万用户提供服务,并且 IO 从未出现过问题。因此,即使是“企业”和“交易”也不一定意味着“无 IO”。这真的取决于。

关于java - 使用 Wildly Ejb 实现的文件操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32352351/

相关文章:

java - 路径中文件名的正则表达式 - macos

unit-testing - 使用嵌入式容器测试 EJB 3.1 应用程序

java - 尝试连接到 Wildfly 10.1 上的 EJB 并获取 : Session id hasn't been set for stateful component

Apache 反向代理和 Wicket CsrfPreventionRequestCycleListener

jboss - wildfly - 访问管理控制台

java - 无法使用 org.wildfly 构建 Java EE 项目 :wildfly-spec-api dependency

java - 如何避免将此方法和所有其他变量设为静态?

java - 用 Java 进行 TCP 套接字编程的好介绍?

java - 编写 jax-ws web 服务并生成无 XSD 的 WSDL

java - 我可以将属性注入(inject) JPA 实体监听器吗