首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

【已解决】集成Spring+Hibernate Search时碰到的配置有关问题

2012-11-05 
【已解决】集成Spring+Hibernate Search时碰到的配置问题环境如下:!-- Hibernate --dependencygroupId

【已解决】集成Spring+Hibernate Search时碰到的配置问题

环境如下:

<!-- Hibernate -->         <dependency>                 <groupId>org.hibernate</groupId>                 <artifactId>hibernate-annotations</artifactId>                 <version>3.4.0.GA</version>         </dependency>         <dependency>                 <groupId>org.hibernate</groupId>                 <artifactId>hibernate-entitymanager</artifactId>                 <version>3.4.0.GA</version>         </dependency>                          <dependency>                 <groupId>org.hibernate</groupId>                 <artifactId>hibernate-commons-annotations                 </artifactId>                 <version>3.3.0.GA</version>                 <exclusions>                         <exclusion>                                 <groupId>org.hibernate</groupId>                                 <artifactId>hibernate</artifactId>                         </exclusion>                 </exclusions>         </dependency>          <dependency>                 <groupId>org.hibernate</groupId>                 <artifactId>hibernate-core</artifactId>                 <version>3.3.1.GA</version>         </dependency>         <dependency>                 <groupId>org.hibernate</groupId>                 <artifactId>hibernate-search</artifactId>                 <version>3.0.1.GA</version>         </dependency>         <dependency>                 <groupId>org.hibernate</groupId>                 <artifactId>hibernate-validator</artifactId>                 <version>3.0.0.ga</version>         </dependency>         <!-- Spring -->         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-core</artifactId>                 <version>2.5.6</version>         </dependency>         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-context</artifactId>                 <version>2.5.6</version>         </dependency>         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-beans</artifactId>                 <version>2.5.6</version>         </dependency>         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-web</artifactId>                 <version>2.5.6</version>         </dependency>         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-orm</artifactId>                 <version>2.5.6</version>         </dependency>         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-tx</artifactId>                 <version>2.5.6</version>         </dependency>         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-aop</artifactId>                 <version>2.5.6</version>         </dependency>         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-jdbc</artifactId>                 <version>2.5.6</version>         </dependency>

?

?

配置如下:

?

<property name="eventListeners">                 <map>                         <entry key="merge">                                 <bean                                         />                         </entry>                                                  <entry key="post-insert">                                 <bean />                         </entry>                                                           <entry key="post-update">                                 <bean />                         </entry>                                                  <entry key="post-delete">                                 <bean />                         </entry>                                                  <entry key="post-collection-recreate">                                 <bean />                         </entry>                         <entry key="post-collection-update">                                 <bean />                         </entry>                                                  <entry key="post-collection-remove">                                 <bean />                         </entry>                 </map>         </property>

?

?

异常如下:

[ERROR] [org.springframework.web.context.ContextLoader] - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.ArrayStoreException: org.hibernate.search.event.FullTextIndexEventListenerat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)at java.security.AccessController.doPrivileged(Native Method)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)at org.apache.catalina.core.StandardService.start(StandardService.java:516)at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)at org.apache.catalina.startup.Catalina.start(Catalina.java:578)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)Caused by: java.lang.ArrayStoreException: org.hibernate.search.event.FullTextIndexEventListenerat org.hibernate.cfg.Configuration.setListener(Configuration.java:1694)at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:721)at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)... 30 more

?

?

查看了Spring的org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean的代码没发现什么问题,进而又看了Hibernate的Configuration和EventListeners代码也没有发现代码,遂逐一测试,发现如下规律:

         <entry key="post-collection-recreate">                                 <bean />                         </entry>                         <entry key="post-collection-update">                                 <bean />                         </entry>                                                  <entry key="post-collection-remove">                                 <bean />                         </entry>

?只要存在上述三项的其中一项,启动就会抛出异常,但是查看接口又没有问题,最后只能去看是否是版本配套问题了。去Hibernate网站上下载了最新的Hibernate Search 3.1.0之后,问题解决。

?

解决后的配置:

?

         <!-- Hibernate -->         <dependency>                 <groupId>org.hibernate</groupId>                 <artifactId>hibernate-annotations</artifactId>                 <version>3.4.0.GA</version>         </dependency>         <dependency>                 <groupId>org.hibernate</groupId>                 <artifactId>hibernate-entitymanager</artifactId>                 <version>3.4.0.GA</version>         </dependency>                          <dependency>                 <groupId>org.hibernate</groupId>                 <artifactId>hibernate-commons-annotations                 </artifactId>                 <version>3.3.0.GA</version>                 <exclusions>                         <exclusion>                                 <groupId>org.hibernate</groupId>                                 <artifactId>hibernate</artifactId>                         </exclusion>                 </exclusions>         </dependency>          <dependency>                 <groupId>org.hibernate</groupId>                 <artifactId>hibernate-core</artifactId>                 <version>3.3.1.GA</version>         </dependency>         <dependency>                 <groupId>org.hibernate</groupId>                 <artifactId>hibernate-search</artifactId>                 <version>3.1.0.GA</version>         </dependency>         <dependency>                 <groupId>org.hibernate</groupId>                 <artifactId>hibernate-validator</artifactId>                 <version>3.0.0.ga</version>         </dependency>         <!-- Spring -->         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-core</artifactId>                 <version>2.5.6</version>         </dependency>         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-context</artifactId>                 <version>2.5.6</version>         </dependency>         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-beans</artifactId>                 <version>2.5.6</version>         </dependency>         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-web</artifactId>                 <version>2.5.6</version>         </dependency>         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-orm</artifactId>                 <version>2.5.6</version>         </dependency>         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-tx</artifactId>                 <version>2.5.6</version>         </dependency>         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-aop</artifactId>                 <version>2.5.6</version>         </dependency>         <dependency>                 <groupId>org.springframework</groupId>                 <artifactId>spring-jdbc</artifactId>                 <version>2.5.6</version>         </dependency>

?

热点排行