【发布时间】:2011-05-04 19:14:14
【问题描述】:
我想用最新的 hibernate、hibernate-annotations 和 ehcache 依赖项更新我的 Maven pom.xml。
我阅读了休眠下载页面和 ehcache 下载页面。我所有试图解释它的尝试似乎都失败了。有人可以写出应该进入 pom.xml 的 sn-p 吗?
神秘的休眠下载页面: http://hibernate.org/downloads
神秘的 ehcache 下载页面: http://www.terracotta.org/dl/ehcache-oss-download-catalog
这是我目前所拥有的:
<properties>
<hibernate.version>3.6.0.Final</hibernate.version>
</properties>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
<exclusions>
<exclusion>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
</exclusion>
<exclusion>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>${hibernate.version}</version>
<exclusions>
<exclusion>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.2.0</version>
<type>pom</type>
</dependency>
</dependencies>
<repositories>
<repository>
<id>codehaus-repository</id>
<name>Codehaus</name>
<url>https://nexus.codehaus.org/content/repositories/releases/</url>
<layout>default</layout>
</repository>
<repository>
<id>java.net</id>
<url>http://download.java.net/maven/1</url>
<layout>legacy</layout>
</repository>
<repository>
<id>central</id>
<name>Maven Repository Switchboard</name>
<layout>default</layout>
<url>http://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>sonatype-ehcache</id>
<url>http://oss.sonatype.org/content/repositories/sourceforge-releases</url>
<layout>default</layout>
</repository>
<repository>
<id>JBoss Repository</id>
<url>https://repository.jboss.org/nexus/content/groups/public</url>
<layout>default</layout>
</repository>
</repositories>
我知道,它看起来很乱,因为我似乎不知道所有依赖项都存储在哪里。
以上失败:
Invocation of init method failed; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
更新: 帕斯卡,你的回复很清楚,解释得很好。但是,hibernate 在启动时仍然失败。
-
sl4j 抛出错误,添加:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.1</version> </dependency> -
这个警告有很多实例:
g in the two-phase commit! 1797 [main] WARN net.sf.ehcache.hibernate.AbstractEhcacheRegionFactory - No Tr ansactionManagerLookup found in Hibernate config, XA Caches will be participatin -
另外,这个错误会让一切都失败:
相关原因:
org.springframework.beans.factory.BeanCreationException: Error creating bean wit h name 'financialDAO' defined in ServletContext resource [/WEB-INF/config/applic ationContext-database.xml]: Cannot resolve reference to bean 'transactionManager ' while setting bean property 'transactionManager'; nested exception is org.spri ngframework.beans.factory.BeanCreationException: Error creating bean with name ' transactionManager' defined in ServletContext resource [/WEB-INF/config/applicat ionContext-database.xml]: Cannot resolve reference to bean 'sessionFactory' whil e setting bean property 'sessionFactory'; nested exception is org.springframewor k.beans.factory.BeanCreationException: Error creating bean with name 'sessionFac tory' defined in ServletContext resource [/WEB-INF/config/applicationContext-dat abase.xml]: Invocation of init method failed; nested exception is java.lang.Null PointerException at org.springframework.beans.factory.support.BeanDefinitionValueResolver .resolveReference(BeanDefinitionValueResolver.java:328)
确认一下,这是spring配置:
<!-- Enable EHCache -->
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.use_query_cache">false</prop>
<prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</prop>
<prop key="net.sf.ehcache.configurationResourceName">/ehcache.xml</prop>
更新: 这似乎是休眠卡住的最新异常:
Caused by: java.lang.NullPointerException
at net.sf.ehcache.hibernate.HibernateUtil.loadAndCorrectConfiguration(HibernateUtil.java:48)
at net.sf.ehcache.hibernate.EhCacheRegionFactory.start(EhCacheRegionFactory.java:79)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:236)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1842)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:855)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:774)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
【问题讨论】:
-
暂时不用你的 ehcache.xml 试试(即从你的 spring 配置中删除它)。
-
当我删除 hibernateproperties 中的所有 ehcache 条目时,应用程序启动正常。当我只删除 configurationResourceName 条目时,它表示它正在使用故障转移配置。
标签: hibernate dependencies maven ehcache