Websphere 8.5重新启动会破坏classLoader代码

问题描述 投票:1回答:1

我在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选项以使其工作的方法。我已经尝试了其他所有失败的可能性。 enter image description here有什么想法吗?

websphere java-7
1个回答
0
投票

我无法确定,但是......如果在JVM回收中没有发生这种情况,但是在重新启动时确实发生了这种情况,那么它可以作为重启时某些文件丢失的提示。

在大多数非Windows平台上,临时目录安装在内存支持的存储上,这就是/tmp等目录的内容在重启时被丢弃的原因。

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

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

您可以尝试的是:下次机器重新启动时,在重新启动WebSphere之前完全删除wstemp目录。然后试试你的申请。如果它有效,那就意味着我在上面写的内容中有一些道理。如果没有,那么可能是时候向IBM开放PMR了。

© www.soinside.com 2019 - 2024. All rights reserved.