2014-10-22 2 views
-1

Я пытаюсь создать приложение mvc Spring с hibernate и mysql.Ошибка создания созданного источника Spring MVC

Без спящего режима проект работает, и я получаю приветственную страницу. но когда я добавляю спящий режим, я получаю ошибку в сервисе. Некоторые автоматического связывания proble Я не понимаю, почему это происходит

здесь является GitHub проекта URL-адрес

https://github.com/ipvsazzad/SpringMVCHibernateSecuritySitemesh 

при выполнении этого на сервере Tomcat 7, я получаю следующее сообщение об ошибке

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'teamServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory com.lynas.service.impl.TeamServiceImpl.session; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactoryBean' defined in class path resource [com/lynas/util/AppConfig.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean com.lynas.util.AppConfig.sessionFactoryBean()] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [com/lynas/util/AppConfig.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.apache.commons.dbcp.BasicDataSource com.lynas.util.AppConfig.dataSource()] threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1204) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:725) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4994) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5492) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory com.lynas.service.impl.TeamServiceImpl.session; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactoryBean' defined in class path resource [com/lynas/util/AppConfig.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean com.lynas.util.AppConfig.sessionFactoryBean()] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [com/lynas/util/AppConfig.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.apache.commons.dbcp.BasicDataSource com.lynas.util.AppConfig.dataSource()] threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:555) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331) 
    ... 23 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactoryBean' defined in class path resource [com/lynas/util/AppConfig.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean com.lynas.util.AppConfig.sessionFactoryBean()] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [com/lynas/util/AppConfig.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.apache.commons.dbcp.BasicDataSource com.lynas.util.AppConfig.dataSource()] threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:601) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1113) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1008) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:505) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1081) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1006) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:904) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:527) 
    ... 25 more 
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean com.lynas.util.AppConfig.sessionFactoryBean()] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [com/lynas/util/AppConfig.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.apache.commons.dbcp.BasicDataSource com.lynas.util.AppConfig.dataSource()] threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:188) 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:590) 
    ... 37 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [com/lynas/util/AppConfig.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.apache.commons.dbcp.BasicDataSource com.lynas.util.AppConfig.dataSource()] threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:601) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1113) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1008) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:505) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:324) 
    at com.lynas.util.AppConfig$$EnhancerBySpringCGLIB$$f777301b.dataSource(<generated>) 
    at com.lynas.util.AppConfig.sessionFactoryBean(AppConfig.java:47) 
    at com.lynas.util.AppConfig$$EnhancerBySpringCGLIB$$f777301b.CGLIB$sessionFactoryBean$2(<generated>) 
    at com.lynas.util.AppConfig$$EnhancerBySpringCGLIB$$f777301b$$FastClassBySpringCGLIB$$f81bf959.invoke(<generated>) 
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) 
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:312) 
    at com.lynas.util.AppConfig$$EnhancerBySpringCGLIB$$f777301b.sessionFactoryBean(<generated>) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:166) 
    ... 38 more 
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.apache.commons.dbcp.BasicDataSource com.lynas.util.AppConfig.dataSource()] threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:188) 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:590) 
    ... 59 more 
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool 
    at com.lynas.util.AppConfig.dataSource(AppConfig.java:29) 
    at com.lynas.util.AppConfig$$EnhancerBySpringCGLIB$$f777301b.CGLIB$dataSource$1(<generated>) 
    at com.lynas.util.AppConfig$$EnhancerBySpringCGLIB$$f777301b$$FastClassBySpringCGLIB$$f81bf959.invoke(<generated>) 
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) 
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:312) 
    at com.lynas.util.AppConfig$$EnhancerBySpringCGLIB$$f777301b.dataSource(<generated>) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:166) 
    ... 60 more 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.pool.impl.GenericObjectPool 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) 
    ... 71 more 
Oct 22, 2014 10:18:30 AM org.springframework.web.context.ContextLoader initWebApplicationContext 
SEVERE: Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'teamServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory com.lynas.service.impl.TeamServiceImpl.session; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactoryBean' defined in class path resource [com/lynas/util/AppConfig.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean com.lynas.util.AppConfig.sessionFactoryBean()] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [com/lynas/util/AppConfig.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.apache.commons.dbcp.BasicDataSource com.lynas.util.AppConfig.dataSource()] threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1204) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:725) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 

мне похоже, что он не может найти файл hibernate.cfg.xml. в любом случае Как это исправить?

+0

Вы действительно прочитали stacktrace? Ошибка довольно ясна ... 'java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool'. Вам не хватает требуемого файла jar. Вы используете 11-летнюю версию моментального снимка commons-dbcp. Переключитесь на настоящую версию, например '1.4' или даже лучше вообще отказаться от DBCP и использовать что-то вроде [HikariCP] (http://brettwooldridge.github.io/HikariCP/) (у меня было много проблем с Commons DBCP). –

+0

Я не так хорош, как вы. в любом случае спасибо за идею HikariCP. мог бы рассказать мне альтернативный источник BasicDataSource в HikariCP – LynAs

+0

Проверьте документацию, объясненную там ... Также это не имеет никакого отношения к тому, чтобы быть хорошим в вашей работе, это связано с чтением stacktrace ... –

ответ

0

Ошибка довольно ясна, если вы посмотрите на стек.

 

Caused by: java.lang.ClassNotFoundException: org.apache.commons.pool.impl.GenericObjectPool 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) 
    ... 71 more 
 

Вам не хватает требуемых классов.

Рассматривая ваши зависимости, вы используете 11-летнюю версию моментального снимка commons-dbcp, а не самую последнюю версию 1.4.

<dependency> 
    <groupId>commons-dbcp</groupId> 
    <artifactId>commons-dbcp</artifactId> 
    <version>20030825.184428</version> 
</dependency> 

Перейти к использованию новой версии.

<dependency> 
    <groupId>commons-dbcp</groupId> 
    <artifactId>commons-dbcp</artifactId> 
    <version>1.4</version> 
</dependency> 

Хотя commons-dbcp может работать, я бы больше не рекомендовал его. По крайней мере, вы должны использовать commons-dbcp2, который активно поддерживается или что-то еще, как HikariCP. Удалите Викисклад ГСБДА зависимости и добавить

<dependency> 
    <groupId>com.zaxxer</groupId> 
    <artifactId>HikariCP-java6</artifactId> 
    <version>2.1.0</version> 
    <scope>compile</scope> 
</dependency> 

Далее в вашем коде, вам нужно добавить что-то вроде чтобы сконфигурировать HikariCP в качестве источника данных.

Что касается конфигурации спящего режима, то в идеале это не должно существовать или содержать по меньшей мере только сопоставленные классы. Свойства, которые вы должны переместить в java вместо этого (и я предлагаю использовать другой диалект).

private Properties hibernateProperties(){ 

    Properties properties = new Properties(); 
    properties.put("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect"); 
    properties.put("hibernate.show_sql", "false"); 
    properties.put("hibernate.hbm2ddl.auto", "update"); 
    properties.put("hibernate.cache.provider_class", "org.hibernate.cache.NoCacheProvider");    
    return properties; 
} 

В идеале вы канаву hibernate.cfg.xml и использовать следующие Java конфигурации вместо этого.

@Bean 
public AnnotationSessionFactoryBean sessionFactoryBean(){ 

    AnnotationSessionFactoryBean asfb = new AnnotationSessionFactoryBean(); 
    asfb.setDataSource(dataSource()); 
    asfb.setHibernateProperties(hibernateProperties()); 
    asfb.setPackagesToScan("com.lynas.model"); 
    return asfb; 
} 
0

У меня была проблема с одной зависимостью. Я использовал

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>4.3.6.Final</version> 
</dependency> 

, где я должен был использовать

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>3.6.10.Final</version> 
</dependency> 
0

Spring поддерживает Hibernate3, а также Hibernate4; вы используете версию 3 (public org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean из вашего stacktrace), поэтому, если вы хотите, чтобы Hibernate4 просматривал SO (или другие ресурсы через сеть) о том, как использовать Spring с Hibernate4.

+0

Я использую весну orm 4.1.1, которая является последней версией. Я содержит hibernate 3 jar, поэтому мне нужно использовать hibernate 3 для менеджера объектов – LynAs

Смежные вопросы