Java 从EJB读取文件

Java 从EJB读取文件,java,jakarta-ee,jboss,ejb,Java,Jakarta Ee,Jboss,Ejb,Java EE规范似乎不允许从EJB读取文件,这在下一个链接中有明确说明: 它说: 不允许企业bean访问文件,主要是因为文件不是事务性资源。允许EJB访问文件系统中的文件或目录,或使用文件描述符,会损害组件的可分发性,并会造成安全隐患 那么,我应该如何读取应用服务器中的文件 我同意所有反对这一行动的观点,在你引用的链接中有很好的解释。该链接还建议了访问业务数据的首选方式,即通过JDBC接口 但是,使用GlassFish,我能够从@无状态的@EJB以及@ApplicationScoped

Java EE规范似乎不允许从EJB读取文件,这在下一个链接中有明确说明:

它说:

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


那么,我应该如何读取应用服务器中的文件

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

但是,使用GlassFish,我能够从
@无状态的
@EJB
以及
@ApplicationScoped
Bean中打开和读取驻留在web文件夹中的文件。为此,我使用
ClassLoader

@Stateless
@LocalBean
public class MyBean {

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

并不是应用服务器中的所有东西都是EJB,它被降级为EJB3.2中的推荐。“伤害自己”的风险适用于服务器中运行的所有代码。ejb并没有什么特别之处使它在其他地方变得不安全或更安全。