2

似乎 Java EE 规范不允许从 EJB 读取文件,如下一个链接中所述:

http://java.sun.com/blueprints/qanda/ejb_tier/restrictions.html#file_access

它说:

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

那么我应该如何从应用程序服务器中的文件中读取呢?

4

1 回答 1

3

我同意所有反对这种操作的观点,在你引用的链接中得到了很好的解释。该链接还建议了访问业务数据的首选方式,即通过 JDBC 接口。

但是,使用 GlassFish,我可以@Stateless @EJB@ApplicationScoped CDIBean 和 Bean 中打开和读取驻留在 web 文件夹中的文件。我ClassLoader为此目的使用:

@Stateless
@LocalBean
public class MyBean {

    @PostConstruct
    public void init() {
        ClassLoader loader = LicenseMessage.class.getClassLoader(); 
        InputStream in = loader.getResourceAsStream("../../resources/myFile.txt");
    }
}
于 2012-05-24T19:45:09.093 回答