【发布时间】:2019-02-06 17:31:28
【问题描述】:
我在 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,我将其设置为源文件夹。
下面是如何在 Websphere 中设置我的 classLoading 选项以使其工作。我已经尝试了所有其他失败的可能性。
有任何想法吗?
【问题讨论】:
-
您所说的“Websphere 重新启动”指的是什么?这和你后面提到的重启 JVM 有什么不同吗?
-
每当我们遇到这个问题时,我们都会从控制台循环 JVM。实际的服务器本身每晚都会重新启动。
-
“实际服务器”在物理机(或虚拟机,我猜)中?我不确定为什么重新启动服务器会在随后的 JVM 重新启动时触发类似的事情,除非可能存在网络存储位置不可用或系统重新启动时应用部署损坏的问题。
-
设置
baseUrl的代码在哪里?在构造函数/初始化程序中?类对象?在什么样的班级? (Servlet等) -
MyJavaClass 是设置
baseUrl的类。它位于com.common.service包中的我的src\main\java源文件夹中。