2

次のリンクで明確に述べられているように、Java EE 仕様では EJB からのファイルの読み取りが許可されていないようです。

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

それは言います:

エンタープライズ Bean は、主にファイルがトランザクション リソースではないため、ファイルへのアクセスを許可されていません。EJB がファイル システム内のファイルまたはディレクトリにアクセスしたり、ファイル記述子を使用したりできるようにすると、コンポーネントの配布可能性が損なわれ、セキュリティ上の危険が生じます。

では、アプリケーション サーバーのファイルから読み取るにはどうすればよいでしょうか。

4

1 に答える 1

3

私は、あなたが引用したリンクでよく説明されている、そのような操作に反対するすべての点に同意します。このリンクは、JDBCインターフェイスを介してビジネスデータにアクセスするための推奨される方法も示しています。

ただし、GlassFishを使用すると、Webフォルダー内にあるファイル@Stateless @EJBを、Bean内およびBeanから開いて読み取ることができます@ApplicationScoped CDI。私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 に答える