在EJB中访问文件系统是否可以接受?

cas*_*lin 2 java ejb java-ee-7 ejb-3.2

使用java.iojava.nio包中的类型来访问文件系统并操纵EJB中的文件是否可以接受?

Pet*_*sik 5

不,您不能这样做,因为如果在某个时候将应用程序集群化,您将永远不知道文件的保存位置。因此,在Java EE环境中进行文件操作是相当不安全的操作。

安全地执行此操作的方法可能是在JNDI中提供服务,该服务将处理您的对象序列化-请参见示例

ByteArrayOutputStream baos= new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(myObj);

new InitialContext().bind("path/to/FileManipulator", baos.toByteArray());
Run Code Online (Sandbox Code Playgroud)

又见这个答案作进一步的解释。这里还有一篇文章,描述了有关java.io在EJB中使用规范的内容。