Я пытаюсь обновить провайдера 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?