2017-02-20 10 views
0

В wildfly 10.0.0.Final, eclipselink, похоже, не поддерживается должным образом. Конечно, hibernate - это JPA по умолчанию, предусмотренная для wildfly, но включение модуля eclipselink поддерживается, и использование eclipselink вполне возможно. Однако банка-файл элементов persistence.xml, кажется, решить во время выполнения некоторой специальной wildfly VFS дорожки, которые спящая может работать, но EclipseLink, кажется, не знает, как обращаться.Wildfly 10.0.0.Final - persistence.xml элемент jar-файла не поддерживается должным образом при использовании eclipselink

Из того, что я смог отладить, и теперь, будучи уверенным, что моя конфигурация на 100% правильна. Конфигурация работает

  • wildfly + спящий режим/элемент баночка-файл решает VFS:/путь во время выполнения
  • WebLogic + элемент EclipseLink/банка-файл решает файл:/путь Дарины выполнения
  • widlfy + EclipseLink/не работает - застрял с помощью <class> элемента

Я убежден, что корень проблемы заключается в том, что EclipseLink не готова иметь дело с wildfly специальных VFS (виртуальная файловая система) путями.

Хотя EclipseLink обрабатывает тот же VFS пути, как спящий режим: - Hibernate сканирует путь и выходит найти объектные классы - другой выходит с пустыми руками.

Я собрал следующее примерное приложение. https://github.com/99sono/eclipselink-wildfly-jar-file-issue

Приложение разветвляется на два одинаковых пути.

  • Один для Weblogic,
  • другой для Wildfly.

Приложение weblogic может быть развернуто идеально. Однако его можно в большинстве случаев использовать для демонстрации того, насколько «неприемлемым» может быть определение элемента jar-файла, в зависимости от того, является ли человек: - развертывание из eclipse (например, в развязанной войне) - или развертывание в качестве реального WAR. Это, скорее всего, сводится к ошибке плагина weblogic eclipse, но хорошо ... его можно заставить работать. А именно, чтобы код мог быть развёрнут в обоих модальностях, я был вынужден использовать в качестве jar-файла, значение спецификации, не соответствующее JEE, ../lib/entities.jar. это объясняется более подробно в приложении readme.

В любом случае, Weblogic имеет большое преимущество в использовании обычного файла:/urls, который отлично подходит для работы с eclipselink. Итак, для этого смешанного поведения родительской папки смешанного пути weblogic, связанного с тем, как приложение развертывается, существует обход.

Второе приложение для wildfly. Здесь все становится жестким. В дикой ситуации, когда мы развертываем приложение и отлаживаем логику загрузки Hibernate или логику загрузки eclipselink, мы видим, что используются URL-адреса виртуальной файловой системы (vfs). Как указано выше, URL-адреса vfs для jar-файлов идентичны для спящего режима и для eclipselink.

Если мы развертываем из затмения, наши проекты взорваны. Они не развертываются как реальные .jar-файлы, а в разобранные каталоги.

Если мы используем настоящий WAR-файл, с другой стороны, используя консоль управления, вместо этого наши пути относятся к директории binfly bin. В этом случае эти пути представляют собой 100% -ные виртуализированные каталоги, которые не могут быть открыты в нашей реальной файловой системе. Это контрастирует с сценарием, в котором мы развертываем eclipse с помощью инструментов jboss. Путь к взорванным диспетчерам можно открыть в нашей файловой системе.

Что, кажется, происходит в wildfly, является то, что: - в то время как оба сценария зимуют, кажется, способен справиться с любой VFS путь Jar-файл, который приходит свой путь - EclipseLink не может.

В файле readme для примера приложения содержатся некоторые рекомендации для некоторых хороших классов для отладки развертывания.

Кто-нибудь знает об обходе, чтобы сделать работу jar-файла на eclipelink?

Я сделал что-то не так в моем persistence.xml для ecipselink, и eclipselink готов обрабатывать vfs jboss?

В настоящий момент времени единственное, что работает правильно, - это подход <class>qualified</class, но, конечно же, этот подход является бесполезным в большинстве случаев и просто помогает создать адский ад.

Я искренне приветствую любую помощь на получение элемента баночка-файл для корректной работы с ecipselink 2.6.4 на wildfly 10.

я там никакого света в конце туннеля?

С уважением

ответ

0

Этот вопрос теперь адресован.

Фактически свойство jar-файла правильно поддерживается в wildfly 10. Проблема, с которой я столкнулась, была связана с тем, что наша конфигурация модуля Eclipelink была создана на основе устаревшей документации о дикой природе, в соответствии с которой wildfly в этой точке со временем, скорее всего, еще не изобрели виртуальную файловую систему, а jipijapa-eclipselink-10.0.0.Final.jar не существует.

После того, как я увидел следующую гибернации cllass реализующий сканирования: банка: Файл:/C: /dev/Widlfly10/wildfly-10.0.0.Final/modules/system/layers/base/org/hibernate/jipijapa- hibernate5/главный/ jipijapa-hibernate5-10.0.0.Final.jar! /org/jboss/as/jpa/hibernate5/HibernateArchiveScanner.class

И этот класс зимует быть принадлежащий JBoss поддерживается банка, следующий вопрос почему не такая банка для ссылки eclipse. Что действительно существует.

Таким образом, поддержка сканирования VFS файла задается следующим:

<dependency> 
      <groupId>org.wildfly</groupId> 
      <artifactId>jipijapa-eclipselink</artifactId> 
      <version>10.0.0.Final</version> 
      <scope>provided</scope> 
</dependency> 

И все, что нужно сделать, как только конфигурации модуля в wildfly модулей является подходящим является, чтобы побудить EclipseLink использовать JBoss АРХИВ фабрика:

<property name="eclipselink.archive.factory" value="org.jipijapa.eclipselink.JBossArchiveFactoryImpl"/> 

Это все документ: https://docs.jboss.org/author/display/WFLY10/JPA+Reference+Guide#JPAReferenceGuide-UsingEclipseLink

Смежные вопросы