我有一个简单的portlet可以在WebSohere Portal Server中部署。
这是一个war文件,在其lib文件夹中包含一个jar文件。在jar文件中,我尝试读取属性文件。在我的portlet项目中,我在src的根目录中有一个属性文件,可以在jar文件中读取没有问题。
但是,如果我重新部署war文件而不重新启动服务器,则下面的代码行将返回null,并且无法从属性文件中读取。重启服务器后,一切都还好。
InputStream inStream = this.getClass()。getClassLoader()。getResourceAsStream(“myFile.properties”);
我检查了ClassLoader的设置,父亲是最后的。我不知道是什么原因。有什么想法吗?
答案 0 :(得分:0)
由于性能原因,文件被读取一次并被缓存。
编辑:如果您希望修改文件,请将文件保留在本地文件系统上的EAR文件之外,并使用环境/服务器变量指向其路径。请参阅代码中的变量以加载文件。
答案 1 :(得分:0)
尝试使用上下文类加载器而不是类的类加载器,因为您没有将jar中的资源与类捆绑在一起(如果我正确阅读了您的描述)。
Thread.currentThread().getContextClassLoader().getResourceAsStream(...)
您是否偶然将此jar放在另一个Web模块中,或者可能放在WebSphere Shared Library文件夹中?由于您描述的行为是null而不仅仅是旧的文件值,我不太倾向于认为缓存涉及更多,您只是得到一个不同于您想到的类实例,因为您正在使用类加载器实用程序类本身,未找到Web模块的WEB-INF / classes中的属性文件。