从EJB读取文件

时间:2012-05-24 10:00:23

标签: java java-ee jboss ejb

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

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

它说:

  

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

我应该如何从应用服务器中的文件中读取?

1 个答案:

答案 0 :(得分:3)

我同意所有针对此类操作的观点,在您引用的链接中有详细解释。该链接还建议了访问业务数据的首选方式,即通过JDBC接口。

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

@Stateless
@LocalBean
public class MyBean {

    @PostConstruct
    public void init() {
        ClassLoader loader = LicenseMessage.class.getClassLoader(); 
        InputStream in = loader.getResourceAsStream("../../resources/myFile.txt");
    }
}