Websphere 8.5重新启动中断classLoader代码

时间:2019-02-06 17:31:29

标签: websphere java-7

我在Websphere上部署了JAVA应用程序。该应用程序正在寻找本地WSDL文件来执行SOAP请求。但是,每当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选项以使其工作的方式。我尝试了其他所有失败的可能性。
enter image description here 有任何想法吗?

1 个答案:

答案 0 :(得分:0)

我不确定,但是...如果在JVM回收中没有发生这种情况,但是在重新启动时发生了,这暗示着某些文件在重新启动时丢失了。

在大多数非Windows平台上,临时目录都安装在内存支持的存储上,这就是为什么/tmp之类的目录内容在重新启动时会被丢弃的原因。

WebSphere保留已编译WSDL工件的高速缓存。它将它们保存在配置文件目录中名为wstemp的目录中。 (尽管我不确定)wstemp可能持有指向/tmp中文件的指针。在这种情况下,重新启动肯定会导致您的问题。

(或者,也许您的系统管理员进行了配置更改,其中wstemp目录本身指向内存支持的存储?)

您可以尝试的方法是:下次机器重新引导时,在重新启动WebSphere之前,请完全删除wstemp目录。然后尝试您的应用程序。如果它有效,则意味着我在上面写的内容有些道理。如果没有,那么也许是时候与IBM一起打开PMR了。