我在Websphere上部署了一个JAVA应用程序。此应用程序正在寻找用于执行SOAP请求的本地WSDL文件。但是,每当Websphere重新启动并在夜间安排时,下面的行会抛出一个NullPointer,因为它无法找到WSDL的路径。当我们循环JVM时,一切正常,直到下次重启。
Url baseUrl = MyJavaClass.class.getClassLoader().getResource("MyInterface.wsdl");
稍后我将需要此baseUrl继续我的SOAP请求。
service = new ServiceInstance(baseUrl, new QName("http://myinterface.blah","ServiceInstance"));
当然,当baseUrl
为Null时,这会引发错误。但是一旦JVM循环一切正常,直到它再次随机破坏。我在我的src/main/resources
文件夹中有WSDL,我把它设置为Source文件夹。
下面是我在Websphere中设置classLoading选项以使其工作的方法。我已经尝试了其他所有失败的可能性。
有什么想法吗?
我无法确定,但是......如果在JVM回收中没有发生这种情况,但是在重新启动时确实发生了这种情况,那么它可以作为重启时某些文件丢失的提示。
在大多数非Windows平台上,临时目录安装在内存支持的存储上,这就是/tmp
等目录的内容在重启时被丢弃的原因。
WebSphere保留已编译的WSDL工件的缓存。它将它们保存在配置文件目录中名为wstemp
的目录中。有可能(虽然我不确定)wstemp
持有/tmp
文件的指针。在这种情况下,重启肯定会导致您的问题。
(或者,也许,您的系统管理员进行了配置更改,wstemp
目录本身指向内存支持的存储?)
您可以尝试的是:下次机器重新启动时,在重新启动WebSphere之前完全删除wstemp
目录。然后试试你的申请。如果它有效,那就意味着我在上面写的内容中有一些道理。如果没有,那么可能是时候向IBM开放PMR了。