2016-01-23 1 views
0

Прежде чем задать свой вопрос, лучше сказать, что я работаю на корпоративном ноутбуке без прав администратора. Большая часть программного обеспечения, в котором я нуждалась, поступала из старых программных пакетов, подготовленных в компании, которые содержат смесь полезного и устаревшего программного обеспечения, поэтому среда немного перепуталась, и у моего коллажа не было таких же проблем на его ноутбуке.Flyway не может найти ресурсы в weblogic Развертывание Java EE 7

Я использую Weblogic 12.2.2.1 (по крайней мере, это один приходит с чистого установщиком) с Java 8 обновлений 65.

У меня есть файл, содержащий уха на уровне корневой баночку файл с некоторыми ресурсами и файл войны с веб-приложением и всеми зависимостями. Предполагается, что приложение работает в среде Java EE 7. Когда я развернул его локально, я проверил путь к классам с инструментами JDK, и я мог видеть только основные библиотеки java и weblogic, затем я проверил путь к классам с помощью анализатора классов Loadload, и я увидел, что была загружена банка на корневом уровне файла ушей с помощью weblogic.utils.classloaders.ChangeAwareClassLoader, в то время как весь контент военного файла был загружен weblogic.utils.classloaders.GenericClassLoader Это разделение повлияло, потому что при запуске Flyway пытается загрузить сценарии миграции в качестве ресурсов classpath, и это выходит из строя. Я отлаживал его, и я видел, что он работает от GenericClassLoader и этот загрузчик классов не может видеть эти ресурсы.

Мой первый вопрос: почему GenericClassLoader не может найти ресурсы, разве он не должен проверять также ресурсы, которыми обладают другие загрузчики классов в цепочке наследования? Но тогда, это скорее проблема Weblogic, проблема Flyway или проблема установки?

Могу ли я ожидать тех же проблем в будущем от других сторонних библиотек, ищущих некоторые ресурсы?

Как обходной путь я переместил сценарии в военный файл, есть ли более чистое решение?

Дополнительное примечание. Я пробовал как поэтапное, так и неэтапное развертывание.

ответ

1

Обычные файлы jar в корне файла EAR недоступны для любых других модулей без дополнительной настройки, таких как добавление файла META-INF/MANIFEST.MF, содержащего запись Class-Path в вашем веб-модуле.

Более простой альтернативой является размещение ваших ресурсов в каталоге lib вашего файла EAR. Банки в этом каталоге автоматически становятся видимыми для всех других модулей в EAR:

myApp.ear 
\-META-INF 
    \-application.xml 
\-myWebApp.war 
\-lib 
    \-resources.jar 
Смежные вопросы