Перезагрузка Websphere 8.5 ломает код classLoader - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть приложение JAVA, развернутое в Websphere.Это приложение ищет локальный файл 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 все работают нормально, до тех пор, пока они снова не сломаются случайно.У меня есть WSDL внутри моей папки src/main/resources, которую я установил как папку с исходным кодом.
Ниже показано, как мои параметры classLoading установлены в Websphere, чтобы эта работа работала.Я перепробовал любую другую возможность, которая не удалась.
enter image description here Есть идеи?

1 Ответ

0 голосов
/ 13 февраля 2019

Не могу сказать точно, но ... если этого не происходит при перезапуске JVM, но происходит при перезагрузке, это служит намеком на то, что некоторые файлы пропали при перезагрузке.

На большинстве платформ, отличных от Windows, временные каталоги монтируются в хранилище с памятью, поэтому содержимое каталогов, таких как /tmp, удаляется при перезагрузке.

WebSphere хранит кэш скомпилированных артефактов WSDL.Он хранит их в каталоге wstemp внутри каталога профиля.Возможно (хотя я не уверен), что wstemp содержит указатели на файлы в /tmp.В этом случае перезагрузка наверняка вызовет вашу проблему.

(Или, может быть, ваш системный администратор внес изменения в конфигурацию, в результате чего каталог wstemp сам указывает на хранилище с памятью?)

Что вы можете попробовать сделать так: в следующий раз, когда машина перезагрузится, полностью удалите каталог wstemp, прежде чем перезапускать WebSphere.Тогда попробуйте ваше приложение.Если это работает, то это означает, что в том, что я написал выше, есть доля правды.Если этого не произойдет, возможно, пришло время открыть PMR в IBM.

...