在项目netbeans上放置序列化文件对象的位置

时间:2012-02-08 05:22:07

标签: serialization servlets netbeans

我有一个实现Serializable类的桌面应用程序,但现在我将它转换为带有servlet的Web应用程序,我使用Netbeans进行这项工作,我有以下代码:

InputStream input = ClassLoader.getSystemResourceAsStream(file_input);

如果file_input是来自之前序列化的对象的字节码f​​yle,我不知道应该把这个文件放在哪里,因为在桌面应用程序中我将它放在我所有类的同一目录中。

(我有文件,我不需要创建它)。

1 个答案:

答案 0 :(得分:0)

首先,不要在Java EE Web应用程序中使用ClassLoader#getSystemResourceAsStream()。相反,请使用ClassLoader#getResourceAsStream()。我还想在Java SE桌面应用程序中使用ClassLoader#getSystemResourceAsStream()时会产生很大的问号,以确定它是否可以分发,但是除此之外。

ClassLoader最终从类路径加载资源。因此,您需要做的就是确保将文件放在其中一个路径中,这些路径默认由webapp的运行时类路径覆盖,以将新文件路径添加到webapp的运行时类路径通过特定于服务器的配置设置,例如Tomcat shared.loader的{​​{1}}属性。

webapp的运行时类路径所涵盖的默认路径之一是WAR的/conf/catalina.properties文件夹。从IDE项目的角度来看,只需将文件放在“Java Source”(src)文件夹的根文件夹中,即可获得所有Java包和类。 IDE将注意它最终会在构建的WAR文件的/WEB-INF/classes中结束。

顺便说一句,我还是假设您从webapp中创建文件,正如您明确告诉的那样。那不行。如果实际上也需要具有写访问权限,那么您将需要一个绝对磁盘文件系统路径。例如,您可以通过将其作为VM参数或环境变量提供来进行配置。