2013-05-07 37 views
6

CONF mới: tôi đã thực hiện một số thay đổi để phù hợp với những gì bạn đang nói. bây giờ tôi xóa hibernate-cfg.xml và đã làm tất cả conf vào mùa xuân-servlet.xml:TransactionManager không thể khởi tạo

<jee:jndi-lookup id="ReferentielWebDevDataSource" 
    jndi-name="ReferentielWebDevDataSource" /> 

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="ReferentielWebDevDataSource" /> 
    <property name="transaction.factory_class"> 
     <value>org.hibernate.transaction.JDBCTransactionFactory</value> 
    </property> 
    <!-- Disable the second-level cache --> 
    <property name="cache.provider_class"> 
     <value>org.hibernate.cache.NoCacheProvider</value> 
    </property> 
    <property name="hibernate.show_sql"> 
     <value>true</value> 
    </property> 
    <property name="dialect"> 
     <value>${jdbc.dialect}</value> 
    </property> 
    <property name="connection.driver_class"> 
     <value>${jdbc.driverClassName}</value> 
    </property> 
    <property name="connection.url"> 
     <value>${jdbc.databaseurl}</value> 
    </property> 
    <property name="connection.username"> 
     <value>${jdbc.username}</value> 
    </property> 
    <property name="connection.password"> 
     <value>${jdbc.password}</value> 
    </property> 

    <property name="current_session_context_class"> 
     <value>thread</value> 
    </property> 
</bean> 

<tx:annotation-driven transaction-manager="transactionManager" /> 

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

nó có thể đến từ file java của tôi?

lỗi là:

không hợp lệ tài sản 'giao dịch' của lớp bean [org.springframework.orm.hibernate4.LocalSessionFactoryBean]: Bean tài sản 'giao dịch' là không thể đọc được hoặc có một phương pháp getter không hợp lệ: Liệu sự trở lại loại getter khớp với kiểu tham số của setter?

OLD CONF: Đây là vấn đề của tôi: org.springframework.beans.factory.BeanCreationException: Lỗi tạo đậu với tên 'transactionManager' định nghĩa trong tài nguyên ServletContext [/WEB-INF/spring-servlet.xml] : Không thể gọi phương thức init; ngoại lệ lồng nhau là java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getConnectionProvider() Lorg/hibernate/service/jdbc/connections/spi/ConnectionProvider

có vẻ như Trình quản lý giao dịch không thể khởi tạo đúng, không 't biết nếu nó có liên quan đến cấu hình của tôi

mùa xuân-servlet.xml:

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" 
    p:packagesToScan="com.it" 
    p:dataSource-ref="ReferentielWebDevDataSource" 
    /> 
<bean id="transactionManager" 
    class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 

Dunno nếu nó đến từ nguồn dữ liệu của tôi hay cái gì khác. Cảm ơn,

EDIT:

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="packagesToScan" value="net.form" /> 
    <property name="dataSource" ref="ReferentielWebDevDataSource"></property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.GenericDialect 
      </prop> 
      <prop key="hibernate.show_sql">true</prop> 
     </props> 
    </property> 
    <property name="annotatedClasses"> 
     <list> 
      <value>com.it.model.application</value> 
     </list> 
    </property> 
</bean> 

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

và nguồn dữ liệu của tôi:

<jee:jndi-lookup id="ReferentielWebDevDataSource" jndi-name="ReferentielWebDevDataSource" /> 

Trong tôi hibernate-cfg.xml tôi có điều này:

<hibernate-configuration> 
<session-factory> 
    <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property> 
    <property name="connection.driver_class">oracle.jdbc.OracleDriver</property> 
    <property name="connection.url">MYURL</property> 
    <property name="connection.username">USERNAME</property> 
    <property name="connection.password">PASSWORD</property> 
    <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property> 
    <property name="current_session_context_class">thread</property> 
    <!-- Disable the second-level cache --> 
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 
    <property name="hibernate.show_sql">true</property> 

    <mapping class="com.it.model.application"/> 
</session-factory> 

</hibernate-configuration> 

(với url thực, tên người dùng và mật khẩu) I th mực đó là tất cả tôi có liên quan đến cấu hình hibernate và dataSource.

EDIT 2 Stack trace:

HTTP ERROR 503 
Problem accessing /it-project/. Reason: 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getConnectionProvider()Lorg/hibernate/service/jdbc/connections/spi/ConnectionProvider; 

Caused by: 

org.eclipse.jetty.servlet.ServletHolder$1: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getConnectionProvider()Lorg/hibernate/service/jdbc/connections/spi/ConnectionProvider; 
    at org.eclipse.jetty.servlet.ServletHolder.makeUnavailable(ServletHolder.java:445) 
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:498) 
    at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:293) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:739) 
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:254) 
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1238) 
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:683) 
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:480) 
    at org.mortbay.jetty.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:256) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:172) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) 
    at org.eclipse.jetty.server.Server.doStart(Server.java:275) 
    at org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:65) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:511) 
    at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:364) 
    at org.mortbay.jetty.plugin.JettyRunMojo.execute(JettyRunMojo.java:521) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getConnectionProvider()Lorg/hibernate/service/jdbc/connections/spi/ConnectionProvider; 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1486) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) 
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:647) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:598) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:661) 
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:517) 
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:458) 
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:241) 
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:477) 
    ... 42 more 
Caused by: java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getConnectionProvider()Lorg/hibernate/service/jdbc/connections/spi/ConnectionProvider; 
    at org.springframework.orm.hibernate4.SessionFactoryUtils.getDataSource(SessionFactoryUtils.java:90) 
    at org.springframework.orm.hibernate4.HibernateTransactionManager.afterPropertiesSet(HibernateTransactionManager.java:252) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483) 
    ... 59 more 

Caused by: 

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getConnectionProvider()Lorg/hibernate/service/jdbc/connections/spi/ConnectionProvider; 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1486) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) 
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:647) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:598) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:661) 
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:517) 
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:458) 
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:241) 
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:477) 
    at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:293) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:739) 
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:254) 
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1238) 
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:683) 
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:480) 
    at org.mortbay.jetty.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:256) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:172) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) 
    at org.eclipse.jetty.server.Server.doStart(Server.java:275) 
    at org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:65) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:511) 
    at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:364) 
    at org.mortbay.jetty.plugin.JettyRunMojo.execute(JettyRunMojo.java:521) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
Caused by: java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getConnectionProvider()Lorg/hibernate/service/jdbc/connections/spi/ConnectionProvider; 
    at org.springframework.orm.hibernate4.SessionFactoryUtils.getDataSource(SessionFactoryUtils.java:90) 
    at org.springframework.orm.hibernate4.HibernateTransactionManager.afterPropertiesSet(HibernateTransactionManager.java:252) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483) 
    ... 59 more 

Caused by: 

java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getConnectionProvider()Lorg/hibernate/service/jdbc/connections/spi/ConnectionProvider; 
    at org.springframework.orm.hibernate4.SessionFactoryUtils.getDataSource(SessionFactoryUtils.java:90) 
    at org.springframework.orm.hibernate4.HibernateTransactionManager.afterPropertiesSet(HibernateTransactionManager.java:252) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) 
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:647) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:598) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:661) 
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:517) 
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:458) 
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:241) 
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:477) 
    at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:293) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:739) 
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:254) 
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1238) 
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:683) 
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:480) 
    at org.mortbay.jetty.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:256) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:172) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) 
    at org.eclipse.jetty.server.Server.doStart(Server.java:275) 
    at org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:65) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:511) 
    at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:364) 
    at org.mortbay.jetty.plugin.JettyRunMojo.execute(JettyRunMojo.java:521) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
+0

Bạn không cần phải cấu hình 'ngủ đông-cfg.xml' kể từ khi bạn đang khai báo một bean. Di chuyển mọi thứ từ cấu hình đó sang cấu hình mùa xuân. –

Trả lời

0

Moving câu trả lời này lại từ bài khác:

Nơi nào bạn trao hibernate.dialect đến sessionfactory? Đối với một cái nhìn hoàn chỉnh hơn nó sẽ rất hữu ích để xem tất cả các phần của cấu hình đi vào ngủ đông. Vì vậy, bạn có thể gửi DataSource của bạn. Nhưng những gì tôi có thể nói cho đến nay rằng hibernate.dialect là một thuộc tính bắt buộc phải thiết lập. Bên cạnh DataSource, cấu hình này thực sự rất quan trọng:

<property name="hibernate.dialect">org.hibernate.dialect.GenericDialect</property> 

Hãy thử thêm điều này vào phiên của bạnFactory Bean.

+0

Với genericDialect, vấn đề vẫn không thay đổi. Đáng buồn là – MinionKing

+0

thậm chí tệ nhất, có vẻ như genericDialect không xác định: Không thể giải quyết tên [org.hibernate.dialect.GenericDialect] làm chiến lược [org.hibernate.dialect.Dialect] – MinionKing

+0

Không biết? tôi đã cố gắng sử dụng oracle10gDialect nhưng nó không hoạt động – MinionKing

1

Ok, dưới đây là cái nhìn sâu hơn về cấu hình của bạn.Cảm ơn bạn đã biên dịch nó inot một bean cho đến nay. Điều này giúp phân tích dễ dàng hơn. ^^

Có một cái nhìn thigns ổn:

Đối với khi bạn cung cấp cho các sessionfactory hai cấu hình cho kết nối JDBC. Khi ở với dataSource.

<property name="dataSource" ref="ReferentielWebDevDataSource" /> 

Và một lần bằng cách thiết lập các thuộc tính trong sessionfactory:

<property name="connection.driver_class"> 
     <value>${jdbc.driverClassName}</value> 
    </property> 
    <property name="connection.url"> 
     <value>${jdbc.databaseurl}</value> 
    </property> 
    <property name="connection.username"> 
     <value>${jdbc.username}</value> 
    </property> 
    <property name="connection.password"> 
     <value>${jdbc.password}</value> 
    </property> 

Chỉ có một điều này là cần thiết, vì mỗi sẽ kích hoạt một ConnectionProvider khác nhau được sử dụng bởi Hibernate. (Tôi không biết đây có phải là vấn đề hay không được ưu tiên như thế nào, nhưng vẫn là một điểm có thể thất bại)

Sau đó, tắt bộ đệm thứ hai và cài đặt của ngữ cảnh hiện tại, mặc dù điều này có thể có lý do của nó, để bắt đầu, tôi sẽ giữ nó đơn giản nhất có thể và bỏ chúng ra.

Và cuối cùng là quản lý giao dịch thiết lập trong các thuộc tính là không cần thiết trong thiết lập này:

<property name="transaction.factory_class"> 
      <value>org.hibernate.transaction.JDBCTransactionFactory</value> 
     </property> 

Vì bạn có đậu HibernatTransactionManager:

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

Vì vậy, một lần nữa chúng tôi có hai cấu hình chiến đấu. Cách cấu hình Spring Hibernate hoạt động là DataSource được tiêm vào sessionFactory và sessionFactory vào TransactionManager. (Tôi có thể cố gắng tìm kiếm các tài liệu tham khảo trên một này nếu cần thiết)

Ok và để chấm dứt tất cả ở đây là quan điểm của tôi về đơn giản hóa cấu hình:

<bean id="sessionFactory" 
      class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
      <property name="dataSource" ref="ReferentielWebDevDataSource" /> 

      <property name="hibernate.show_sql"> 
       <value>true</value> 
      </property> 
      <property name="dialect"> 
       <value>${jdbc.dialect}</value> 
      </property> 
    <property name="annotatedClasses"> 
     <list> 
      <value>com.it.model.application</value> 
     </list> 
    </property> 
     </bean> 

    <tx:annotation-driven transaction-manager="transactionManager" /> 
    <bean id="transactionManager" 
     class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 
2

tôi nhận được lỗi này với Hibernate 4.3.0 .Beta1. Một hạ cấp xuống 4.1.7.Final khắc phục vấn đề, mặc dù điều này là gì, nhưng một workaround.

12

Bạn đã nhận thấy rằng sự cố ban đầu của bạn (java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getConnectionProvider() Lorg/hibernate/service/jdbc/connections/spi/ConnectionProvider) biến mất khi bạn hạ cấp Hibernate đến 4.1.7.

Điều này là do sự cố tương thích trong Spring with Hibernate phiên bản 4.3.0.Beta1 được báo cáo theo https://jira.springsource.org/browse/SPR-10839.

Nếu bạn muốn, bạn có thể tạo bản vá của riêng bạn cho vấn đề này như sau:

  1. Trong dự án của bạn, đặt các phiên bản Hibernate bạn muốn sử dụng trên classpath của dự án của bạn (phiên bản 4.3.0. Beta1 hoặc mới hơn).

  2. Từ gói org.springframework.orm.hibernate4 trong nguồn của lò xo, sao chép nội dung của các tệp nguồn sau vào dự án của bạn trong gói của riêng chúng, ví dụ: vào gói com.my.hibernate4.spring.fix: HibernateTransactionManager, SessionFactoryUtils, SpringFlushSynchronization, SpringSessionContextSpringSessionSynchronization.

  3. Thay đổi nhập khẩu SpringSessionContext cho lớp JtaPlatformorg.hibernate.service.jta.platform.spi.JtaPlatform-org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform

  4. Thay đổi nhập khẩu SessionFactoryUtils cho lớp ConnectionProvider từ org.hibernate.service.jdbc.connections.spi.ConnectionProvider để org.hibernate.engine.jdbc.connections.spi.ConnectionProvider

  5. Giải quyết tất cả các vấn đề nhập khẩu khác trong gói của bạn com.my.hibernate4.spring.fix; tham khảo các phiên bản cố định của riêng bạn trong năm lớp này.

  6. Trong cấu hình ngủ đông của bạn, thêm thuộc tính ngủ đông hibernate.current_session_context_class với giá trị của phiên bản cố định SpringSessionContext, Ví dụ: com.my.hibernate4.spring.fix.SpringSessionContext

  7. Trong cấu hình mùa xuân của bạn, cấu hình HibernateTransactionManager cố định của bạn như là người quản lý giao dịch để sử dụng, Ví dụ:

    <bean id="transactionManager" class="com.my.hibernate4.spring.fix.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
    

Vá này làm việc cho tôi, nhưng tôi không biết nếu nó giải quyết tất cả các vấn đề tương thích mà trường hợp sử dụng của tôi không tiết lộ.

+1

Với Spring 3.x bạn có thể sử dụng Hibernate tất cả các cách lên đến 4.2.x – Ross

2

Ngữ cảnh mùa xuân 4.0.6.RELEASE, phát hành cuối cùng tháng 7, đã giải quyết được sự cố của tôi.

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
<version>4.0.6.RELEASE</version> 

Các vấn đề liên quan