struts2 jpa(hiberante) spring 的配置全部是手动配置的,不知道哪里出错了,请高手指点!
错误信息如下:
INFO  2009-07-29 17:01:20,375 Ejb3Configuration:scanForClasses - found EJB3 Entity bean: com.dzbx.core.domain.CodeType
INFO  2009-07-29 17:01:20,500 Configuration:addResource - Reading mappings from resource : query/Code.orm.xml
INFO  2009-07-29 17:01:20,500 DefaultSingletonBeanRegistry:destroySingletons - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1eb8f6d: defining beans [org.springframework.context.annotation.internalPersistenceAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor#0,dataSource,entityManagerFactory,transactionManager,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.config.internalTransactionAdvisor,codetypeDAO,codetypeManager]; root of factory hierarchy
ERROR 2009-07-29 17:01:20,562 ContextLoader:initWebApplicationContext - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.config.internalTransactionAdvisor': Cannot create inner bean '(inner bean)' of type [org.springframework.transaction.interceptor.TransactionInterceptor] while setting bean property 'transactionInterceptor'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)': Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Cannot resolve reference to bean 'entityManagerFactory' while setting bean property 'entityManagerFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: dzbx] Unable to find XML mapping file in classpath: query/Code.orm.xml
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:478)
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:220)
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:429)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
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:3692)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4127)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:910)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:873)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1118)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1020)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:680)
at org.apache.catalina.startup.Catalina.start(Catalina.java:536)
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:275)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.config.internalTransactionAdvisor': Cannot create inner bean '(inner bean)' of type [org.springframework.transaction.interceptor.TransactionInterceptor] while setting bean property 'transactionInterceptor'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)': Cannot 今天在网上搜了很多关于这个问题的解决办法,可是都没有效果!

解决方案 »

  1.   

    把applicationContext.xml 代码贴出来.
      

  2.   

    可能是你的事物管理的类型指定错了改为:<!-- spring事物管理 -->
    <bean id="transactionManager"   class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>
      

  3.   

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:annotation-config />
    <!-- *** FOLLOWING CONFIGURATION  IS BASIC LINE,DON NOT CHANGE ***--> <!-- BeanPostProcessor that processes PersistenceUnit  and PersistenceContext annotations -->
    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close">
    <property name="driverClass" value="com.informix.jdbc.IfxDriver " />
    <property name="jdbcUrl" value="jdbc:informix-sqli://10.1.1.26:9999/dzppt_srv:INFORMIXSERVER=dz_tst;NEWCODESET=GBK,8859-1,819" />
    <property name="user" value="dzppt" />
    <property name="password" value="dzppt" />
    <!--连接池中保留的最小连接数-->
    <property name="minPoolSize" value="1" /> <!--连接池中保留的最大连接数 Default: 15 -->
    <property name="maxPoolSize" value="3" /> <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间 Default: 3 -->
    <property name="initialPoolSize" value="1" /> <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃 Default: 0 -->
    <property name="maxIdleTime" value="5" /> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数 Default: 3 -->
    <property name="acquireIncrement" value="5" /> </bean> <!-- JPA EntityManagerFactoryBean for EntityManager-->
    <bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />

    <!-- 
    <property name="persistenceXmlLocation">
    <value>classpath*:META-INF/persistence.xml</value>
    </property>
    -->
    <property name="jpaVendorAdapter">
    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="showSql" value="false" />
    <property name="generateDdl" value="true" />
    <property name="databasePlatform" value="org.hibernate.dialect.InformixDialect" />
    </bean>
    </property> </bean> <!-- Transaction manager for JPA -->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean> <!--Parent Transaction Proxy Factory Bean End--> <tx:annotation-driven transaction-manager="transactionManager" />
    <!--*** ABOVE CONFIGURATION IS BASIC LINE,DON NOT CHANGE ***--></beans>这个是applicationContext.xml
      

  4.   

    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
     http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
    <persistence-unit name="dzbx" transaction-type="RESOURCE_LOCAL">
    <mapping-file>query/Code.orm.xml</mapping-file>
    <properties>

    <property name="hibernate.archive.autodetection"
    value="class" />
    <property name="hibernate.show_sql" value="true" />
    <property name="hibernate.format_sql" value="true" />
    <property name="hibernate.hbm2ddl.auto" value="update" />
    <property name="hibernate.dialect"
    value="org.hibernate.dialect.InformixDialect" />

    <property name = "hibernate.connection.driver_class" value = "com.informix.jdbc.IfxDriver"/>
    <property name = "hibernate.connection.url" value = "jdbc:informix-sqli://10.1.1.26:9999/dzppt_srv:INFORMIXSERVER=dz_tst"/>
    <property name = "hibernate.connection.username" value = "dzppt"/>
    <property name = "hibernate.connection.password" value = "dzppt"/> </properties>
    </persistence-unit>
    </persistence>
    这个是persistence.xml
      

  5.   

    我用的是hibernate3中的jpa,hibernate3已经支持jpa
      

  6.   

    persistence.xml中数据库连接部分删除掉,
    既然在数据源那边配置了,这边就不需要了
      

  7.   

    找到答案了,在这里贴一下。其实就是配置问题,我在perisistence.xml 和applicationContext.xml 里面配置的数据重复了,用了两个连接数据库的property。另外由于我是手动打了配置文件,没有把persistence.xml 和 applicationCtontext.xml进行关联.
    还有就是在web.xml里面:
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:applicationContext*.xml</param-value>
    </context-param>
    applicationContext*.xml没有加载到classpath里面去。