Java Spring源代码套件spring3+;冬眠4+;maven 3+;MySQL 5

Java Spring源代码套件spring3+;冬眠4+;maven 3+;MySQL 5,java,hibernate,spring-mvc,Java,Hibernate,Spring Mvc,我的申请中出现了一个错误,但我不确定这意味着什么。我在下面贴了一些示例代码。这是我得到的错误: > SEVERE: Exception sending context initialized event to listener > instance of class > org.springframework.web.context.ContextLoaderListener > org.springframework.beans.factory.BeanCreation

我的申请中出现了一个错误,但我不确定这意味着什么。我在下面贴了一些示例代码。这是我得到的错误:

> SEVERE: Exception sending context initialized event to listener
> instance of class
> org.springframework.web.context.ContextLoaderListener
> org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'transactionManager' defined in ServletContext
> resource [/WEB-INF/spring/root-context.xml]: Invocation of init method
> failed; nested exception is
> org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to
> requested type [javax.sql.DataSource]     at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
>   at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
>   at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
>   at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
>   at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
>   at
> org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384)
>   at
> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
>   at
> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
>   at
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779)
>   at
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273)
>   at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>   at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
>   at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
>   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:166)     at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>   at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>   at java.lang.Thread.run(Thread.java:722) Caused by:
> org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to
> requested type [javax.sql.DataSource]     at
> org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.unwrap(DriverManagerConnectionProviderImpl.java:91)
>   at
> org.springframework.orm.hibernate4.SessionFactoryUtils.getDataSource(SessionFactoryUtils.java:101)
>   at
> org.springframework.orm.hibernate4.HibernateTransactionManager.afterPropertiesSet(HibernateTransactionManager.java:264)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
>   ... 22 more
> 
> ERROR: org.springframework.web.context.ContextLoader - Context
> initialization failed
> org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'transactionManager' defined in ServletContext
> resource [/WEB-INF/spring/root-context.xml]: Invocation of init method
> failed; nested exception is
> org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to
> requested type [javax.sql.DataSource]     at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
>   at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
>   at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
>   at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
>   at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
>   at
> org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384)
>   at
> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
>   at
> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
>   at
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779)
>   at
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273)
>   at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>   at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
>   at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
>   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:166)     at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>   at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>   at java.lang.Thread.run(Thread.java:722) Caused by:
> org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to
> requested type [javax.sql.DataSource]     at
> org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.unwrap(DriverManagerConnectionProviderImpl.java:91)
>   at
> org.springframework.orm.hibernate4.SessionFactoryUtils.getDataSource(SessionFactoryUtils.java:101)
>   at
> org.springframework.orm.hibernate4.HibernateTransactionManager.afterPropertiesSet(HibernateTransactionManager.java:264)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
>   ... 22 more
这是我的pom文件:

<modelVersion>4.0.0</modelVersion>
<groupId>com.reservosity</groupId>
<artifactId>component</artifactId>
<name>Reservosity</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
    <java-version>1.6</java-version>
    <org.springframework-version>3.1.0.RELEASE</org.springframework-version>
    <org.aspectj-version>1.6.9</org.aspectj-version>
    <org.slf4j-version>1.5.10</org.slf4j-version>
</properties>
<dependencies>
    <!-- Spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${org.springframework-version}</version>
        <exclusions>
            <!-- Exclude Commons Logging in favor of SLF4j -->
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>

    <!-- AspectJ -->
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>${org.aspectj-version}</version>
    </dependency>

    <!-- Logging -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${org.slf4j-version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${org.slf4j-version}</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${org.slf4j-version}</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.15</version>
        <exclusions>
            <exclusion>
                <groupId>javax.mail</groupId>
                <artifactId>mail</artifactId>
            </exclusion>
            <exclusion>
                <groupId>javax.jms</groupId>
                <artifactId>jms</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.jdmk</groupId>
                <artifactId>jmxtools</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.jmx</groupId>
                <artifactId>jmxri</artifactId>
            </exclusion>
        </exclusions>
        <scope>runtime</scope>
    </dependency>

    <!-- @Inject -->
    <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
    </dependency>

    <!-- Servlet -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.1.3.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.1.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>3.1.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>2.2.2</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.hibernate.common</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>4.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.20</version>
    </dependency>
    <dependency>
        <groupId>org.javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>3.15.0-GA</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
        <version>1.0.1.Final</version>
    </dependency>

    <!-- Test -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.7</version>
        <scope>test</scope>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <artifactId>maven-eclipse-plugin</artifactId>
            <version>2.9</version>
            <configuration>
                <additionalProjectnatures>
                    <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
                </additionalProjectnatures>
                <additionalBuildcommands>
                    <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
                </additionalBuildcommands>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>true</downloadJavadocs>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <compilerArgument>-Xlint:all</compilerArgument>
                <showWarnings>true</showWarnings>
                <showDeprecation>true</showDeprecation>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <configuration>
                <mainClass>org.test.int1.Main</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>
4.0.0
储备性
成分
蓄积性
战争
1.0.0-BUILD-SNAPSHOT
1.6
3.1.0.1发布
1.6.9
1.5.10
org.springframework
spring上下文
${org.springframework版本}
公用记录
公用记录
org.springframework
SpringWebMVC
${org.springframework版本}
org.aspectj
aspectjrt
${org.aspectj版本}
org.slf4j
slf4j api
${org.slf4j版本}
org.slf4j
jcl-over-slf4j
${org.slf4j版本}
运行时
org.slf4j
slf4j-log4j12
${org.slf4j版本}
运行时
log4j
log4j
1.2.15
javax.mail
邮件
javax.jms
jms
com.sun.jdmk
jmxtools
com.sun.jmx
jmxri
运行时
javax.inject
javax.inject
1.
javax.servlet
servlet api
2.5
假如
javax.servlet.jsp
jsp api
2.1
假如
javax.servlet
jstl
1.2
org.hibernate
冬眠核心
4.1.3.最终版本
org.hibernate
休眠实体管理器
4.1.1.最终版本
org.springframework
春季甲虫
3.1.1.1发布
cglib
cglib
2.2.2
运行时
org.hibernate.common
hibernate commons注释
4.0.1.最终版本
mysql
mysql连接器java
5.1.20
org.javassist
javassist
3.15.0-GA
org.hibernate.javax.persistence
hibernate-jpa-2.0-api
1.0.1.最终版本
朱尼特
朱尼特
4.7
测试
maven eclipse插件
2.9
org.springframework.ide.eclipse.core.springnature
org.springframework.ide.eclipse.core.springbuilder
真的
真的
org.apache.maven.plugins
maven编译器插件
2.3.2
1.6
1.6
-Xlint:全部
真的
真的
org.codehaus.mojo
execmaven插件
1.2.1
org.test.int1.Main

servet上下文:

<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->

<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />

<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
</beans:bean>

<context:component-scan base-package="com.reservosity.component.controller" />

root-context.xml:

<!-- Root Context: defines shared resources visible to all other web components -->


<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="configLocation">
        <value>classpath:hibernate.cfg.xml</value>
    </property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />

<bean id="transactionManager"    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

类路径:hibernate.cfg.xml
hibernate.cfg.xml文件:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 <hibernate-configuration>
<session-factory>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/******</property>
    <property name="hibernate.connection.username">***</property>
    <property name="hibernate.connection.password">***</property>
    <property name="hibernate.connection.pool_size">10</property>
    <property name="show_sql">true</property>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <mapping class="com.company.component.domain.Company" />
</session-factory>

com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/******
***
***
10
真的
org.hibernate.dialogue.mysqldialogue
线

如果我删除bean transactionManager,它可以正常工作,但是当我再次添加它时,我会得到一个看起来很脏的错误。不知道为什么

    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

我对春季冬眠还不熟悉,需要一些帮助我才能做到

谢谢


Andrew

尝试将spring和hibernate库包含到项目的lib文件夹中。我希望这些有帮助。

表明您的hibernate配置文件中没有定义数据源。

本文提供了有关Spring 3.1和hibernate 4.1集成的详细说明:


看看这个问题,它来自以下代码:

if ( ConnectionProvider.class.equals( unwrapType ) ||
                DriverManagerConnectionProviderImpl.class.isAssignableFrom( unwrapType ) ) {
            return (T) this;
        }
        else {
            throw new UnknownUnwrapTypeException( unwrapType );
        }
其中unwrapType是
javax.sql.DataSource

虽然我不能确切地解释是什么原因导致了这种情况,但我可以建议一种修复方法


在spring应用程序上下文中定义一个
DriverManager数据源
bean,然后将其作为属性提供给
LocalSessionFactoryBean
。请确保从Hibernate配置文件中删除数据源配置。

我遇到了完全相同的问题。KyelJmD认为缺少一个连接池,看起来他是对的,但他没有发布解决方案

所以我花了一些时间,终于让它工作起来了。要解决此问题,您应该做两件事:

  • 将这些行添加到hibernate.cfg.xml文件中(可能不需要全部):

    代码大致显示:

  • 如果设置了
    Environment.DATASOURCE
    (hibernate.connection.DATASOURCE),则使用
    DatasourceConnectionProviderImpl
  • 如果存在c3p0,则实例化c3p0提供程序
  • 检查其他一些提供程序(PROXOOL\u提供程序\u类\u名称)
  • 然后,如果存在
    Environment.URL
    (hibernate.connection.URL),我们将使用
    driverManager连接ProviderImpl
  • 就这样。这解释了为什么如果我们将C3P0添加为Maven依赖项或定义数据源(如下面的注释所述)可以解决这个问题


    另一个问题是为什么DriverManager ConnectionProviderImpl抛出UnknownUnwrapTypeException-不管它是不是一个bug-无论如何,我看不到Hibernate 4.2.0甚至4.3.0.Beta中的代码有任何更改。

    感谢您的快速回复,但我在Hibernate.cfg.xml中已经有了一个数据源。您是否设法解决了这个问题?我遇到了与我在@Configuraton instea项目中使用Spring3.2Hibernate4完全相同的问题
    <property name="hibernate.c3p0.min_size">5</property>
    <property name="hibernate.c3p0.max_size">20</property>
    <property name="hibernate.c3p0.timeout">300</property>
    <property name="hibernate.c3p0.max_statements">50</property>
    <property name="hibernate.c3p0.idle_test_period">3000</property>
    
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-c3p0</artifactId>
        <version>4.1.9.Final</version>
    </dependency>
    
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-ehcache</artifactId>
        <version>4.1.9.Final</version>
    </dependency>
    
            ConnectionProvider connectionProvider = null;
        String providerClassName = getConfiguredConnectionProviderName( configurationValues );
        if ( providerClassName != null ) {
            connectionProvider = instantiateExplicitConnectionProvider( providerClassName, classLoaderService );
        }
        else if ( configurationValues.get( Environment.DATASOURCE ) != null ) {
            connectionProvider = new DatasourceConnectionProviderImpl();
        }
    
        if ( connectionProvider == null ) {
            if ( c3p0ConfigDefined( configurationValues ) && c3p0ProviderPresent( classLoaderService ) ) {
                connectionProvider = instantiateExplicitConnectionProvider( C3P0_PROVIDER_CLASS_NAME,
                        classLoaderService
                );
            }
        }
    
        if ( connectionProvider == null ) {
            if ( proxoolConfigDefined( configurationValues ) && proxoolProviderPresent( classLoaderService ) ) {
                connectionProvider = instantiateExplicitConnectionProvider( PROXOOL_PROVIDER_CLASS_NAME,
                        classLoaderService
                );
            }
        }
    
        if ( connectionProvider == null ) {
            if ( configurationValues.get( Environment.URL ) != null ) {
                connectionProvider = new DriverManagerConnectionProviderImpl();
            }
        }
    
        if ( connectionProvider == null ) {
            LOG.noAppropriateConnectionProvider();
            connectionProvider = new UserSuppliedConnectionProviderImpl();
        }