我正在尝试将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集成,您将获得数十篇文章,建议您执行以下任务之一:
domain1/lib
。目前显示的每个选项都存在问题,从错误到类加载器问题,或者在更新中心的情况下,版本过时(Hibernate 3.5.0.Final,更新中心安装的Hibernate版本)违反了JPA 2.0 JPQL语法,因此不兼容JPA 2.0)。这篇善意的文章最好总结一下这个状态:http://eskatos.wordpress.com/2007/10/09/hello-world/文章本身不再适用,文章的更新也不起作用。
Sahoo提出了另一种我非常喜欢的方法: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 Update Center包中,依赖关系很小。每当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不忙于抛出503错误的常规业务功能时,您可以通过下载http://maven.glassfish.org来查看它们是什么。
它们最小化的原因是所安装的Hibernate工件是hibernate3.jar
,这似乎是Hibernate的一掷千金的分布,因此被无情地踩踏了从那时起,每一个发行都不存在。这个人有一个很好的总结:http://www.javaworld.com/community/node/7686
在Hibernate版本3.6.6中,幸运的是,此工件不再生成或上传到Maven。相反,预计您将选择自己的依赖项。
对于个人开发人员来说这很好,但当您谈到在应用程序服务器级别提供支持时,该怎么办?包括所有可选的依赖项?他们中有一些?哪个?这就是我需要你帮助的地方。
通过查看hibernate-all
assembly descriptor,您可以看到Hibernate的优秀人员已使用此配方替换hibernate3.jar
。您可以进一步看到此描述符生成的工件将包含其中的每个hibernate-*
模块。
如果我正在拍摄现有Hibernate更新中心软件包的简单升级,我可能会尽我所能来包含它,因为它大致相当于旧的hibernate3.jar
。但我想我先问这里,因为hibernate3.jar
有点令人厌恶:有什么依赖 - 有很多可选的,缓存提供者等 - 应该是Hibernate Update Center支持“船“与?
作为一种比较,您可以看到JBoss AS7的数量非常小:https://github.com/jbossas/jboss-as/blob/master/pom.xml#L2696例如,它们似乎不包括EHCache,SwarmCache或OSCache提供程序。
那么,除了hibernate-core
和hibernate-entitymanager
(显然必须存在才能使Hibernate工作)之外,Hibernate Update Center软件包还应包含哪些其他依赖项?