似乎Java EE规范不允许从EJB读取文件,如下一个链接所示:
http://java.sun.com/blueprints/qanda/ejb_tier/restrictions.html#file_access
它说:
企业bean不允许访问文件主要是因为文件不是事务资源。允许EJB访问文件系统中的文件或目录,或使用文件描述符会损害组件的可分发性,并且存在安全隐患。
我应该如何从应用服务器中的文件中读取?
答案 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");
}
}