Какие зависимости Hibernate должны поставляться с пакетом Центра обновлений Glassfish? - PullRequest
3 голосов
/ 10 августа 2011

Я пытаюсь обновить провайдера Glassfish Hibernate с текущей версии 3.5.0 до 3.6.6.Final.

Мне нужна помощь сообщества (и разработчиков Glassfish). Я отправил этот вопрос через почтовый шлюз на форумы Glassfish, но система форума снова не работает. Если он когда-нибудь вернется, вы можете найти (эквивалентный) вопрос здесь: http://www.java.net/forum/topic/glassfish/glassfish/updating-support-hibernate-glassfish-need-communitys-help. Я также отправил его на форумы Hibernate: https://forum.hibernate.org/viewtopic.php?f=1&t=1010771.

Справочная информация: если вы будете искать интеграцию Hibernate с Glassfish, вы получите десятки и десятки статей, которые все рекомендуют выполнить одно из следующих действий:

  • Поместите Hibernate и его зависимости прямо в domain1/lib.
  • Пакет Hibernate с вашим приложением.
  • Установите Hibernate из Центра обновления Glassfish .

У каждой опции, которая проявляется в настоящее время, есть проблемы, начиная от ошибок и заканчивая проблемами загрузчика классов, или, в случае Центра обновлений, устаревание версии (Hibernate 3.5.0. Наконец, версия Hibernate, установленная Центром обновлений, нарушает JPA 2.0 JPQL-синтаксис и, следовательно, не совместим с JPA 2.0). Состояние можно лучше всего суммировать с этой доброжелательной статьей: http://eskatos.wordpress.com/2007/10/09/hello-world/ Сама статья больше не работает, и обновление статьи также не работает.

Саху предложил другой подход, который мне очень нравится: http://www.java.net/forum/topic/glassfish/glassfish/using-hibernate-glassfish#comment-814634

Это поместит зависимости Hibernate в их собственную папку под domain1/applibs, на которую ссылается пустой hibernate.jar с Class-Path: в MANIFEST.MF. Это замечательно. Он изолирован, прост в обновлении, совместим с механизмом упаковки IPS, и приложениям при развертывании с опцией --libraries необходимо указать, чтобы Hibernate был видимым.

Итак, тогда. Что входит в этот каталог зависимостей? Меня не волнуют переходные зависимости, только авторские Hibernate.

В текущем пакете Центра обновлений Hibernate зависимости минимальны. Вы можете увидеть, что это такое, загрузив http://maven.glassfish.org/index.html#view-repositories;Java.net.2~browsestorage~/org/glassfish-repo/packager/hibernate-ips/3.5.0-Final-1/hibernate-ips-3.5.0-Final-1.zip всякий раз, когда http://maven.glassfish.org не занят своей обычной бизнес-функцией выдачи 503 ошибок.

Причина, по которой они минимальны, состоит в том, что установленный артефакт Hibernate hibernate3.jar, который, кажется, является распределением Hibernate «брось все в чашу с пуншем» и, следовательно, беспощадно растоптан из существование в каждом распределении с тех пор. У этого парня есть приятное резюме: http://www.javaworld.com/community/node/7686

К счастью, в Hibernate версии 3.6.6 этот артефакт больше не производится и не загружается в Maven. Вместо этого ожидается, что вы выберете свои собственные зависимости.

Это хорошо для отдельного разработчика, но когда вы говорите о предоставлении поддержки на уровне сервера приложений, что делать? Включить все необязательные зависимости? Некоторые из них? Какие? И здесь мне нужна твоя помощь.

Взглянув на дескриптор сборки hibernate-all , вы можете увидеть, что прекрасные люди в Hibernate заменили hibernate3.jar этим рецептом. Вы также можете увидеть, что артефакт, созданный этим дескриптором, будет содержать каждый модуль hibernate-*.

Если бы я снимал простое обновление существующего пакета Hibernate Update Center, я бы, вероятно, сделал бы все возможное, чтобы включить это, поскольку он примерно эквивалентен старому hibernate3.jar. Но я решил сначала спросить здесь, поскольку hibernate3.jar является своего рода мерзостью: Какие зависимости - и есть много дополнительных, поставщиков кеша и т. П. - должен ли Центр обновлений Hibernate поддерживать «грузить» с

В качестве сравнения можно увидеть, что JBoss AS7 поставляется с крошечным, крошечным количеством: https://github.com/jbossas/jboss-as/blob/master/pom.xml#L2696 Они, похоже, не включают в себя, например, поставщиков EHCache, SwarmCache или OSCache.

Итак, опять же, кроме hibernate-core и hibernate-entitymanager (которые, очевидно, должны существовать для того, чтобы Hibernate вообще работал), какие еще зависимости должен включать пакет Центра обновлений Hibernate?

...