2015-11-27 7 views
1

У меня есть небольшое приложение, написанное в AppFuse (многомодульный проект). Я хочу попытаться использовать Apache Wicket для создания своего пользовательского интерфейса. Поскольку AppFuse основан на Spring, я нашел tutorial для использования Spring и Wicket вместе. Я настроил проект Wicket, используя quickstart из Wicket page. Всякий раз, когда я пытаюсь запустить приложение Wicket я получаю эту ошибку (полный стек трассировки в конце поста):AppFuse + wicket: нет подходящего компонента типа [org.hibernate.SessionFactory]

org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'personClubDao': 
Injection of resource dependencies failed; 
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No qualifying bean of type [org.hibernate.SessionFactory] found for dependency: 
expected at least 1 bean which qualifies as autowire candidate for this dependency. 

Вот мой AppFuse структуры проекта

Hello (pom) 
+--core (jar) - generated by AppFuse 
    +--org.microapp.hello.model 
    +--org.microapp.hello.dao 
+--web (war)- generated by Appfuse 
    +--org.microapp.hello.service 
+--wicket (war)- Wicket application 
    +--org.microapp.hello 

Есть четыре лица в базовом модуле - Лицо, Клуб, Дом и PersonClub. DAO для Person, Club и House регистрируются в core/src/main/resources/applicationContext.xml (как показано here), а DAO для объекта PersonClub находится в org.microapp.hello.dao.PersonClubDaoHibernate.java.

Вот PersonClubDao интерфейс:

public interface PersonClubDao extends GenericDao<PersonClub, Long> { 
    //some methods 
} 

А вот PersonClubDaoHibernate класс:

@Repository("personClubDao") 
public class PersonClubDaoHibernate extends 
    GenericDaoHibernate<PersonClub, Long> implements PersonClubDao { 

    public PersonClubDaoHibernate() { 
     super(PersonClub.class); 
     // TODO Auto-generated constructor stub 
    } 

    //some methods 
} 

То, что я пытаюсь сделать сейчас, чтобы autowire PersonClubDao (или любой другой DAO) в Главная страница класс в калитки и отображение некоторых данных из базы данных.

Вот HomePage класс:

public class HomePage extends WebPage { 
    private static final long serialVersionUID = 1L; 

    @SpringBean 
    private PersonClubDao personClubDao; 

    public HomePage(final PageParameters parameters) { 
     super(parameters); 
     // TODO Add your page's components here 
     //no code here so far 
    } 
} 

и калитка/SRC/главная/веб-приложение/WEB-INF/applicationContext.xml

<?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:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <context:component-scan base-package="org.microapp.hello.dao" />  

</beans> 

Если я пытаюсь сделать некоторые манекен интерфейсом и фиктивным классом и подключить его с помощью @SpringBean, он работает отлично. Но когда я пытаюсь подключить любой из моих DAO, приложение аварийно завершает работу. Я не совсем уверен, что делать, я пытался добавить dependecies для hibernate-пакетов в свой pom.xml, но без удачи и googling тоже не помогли.

Вот полный трассировки стека:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personClubDao': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)} 
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:311) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:838) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537) 
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) 
at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:800) 
at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:444) 
at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:791) 
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:294) 
at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1349) 
at org.eclipse.jetty.maven.plugin.JettyWebAppContext.startWebapp(JettyWebAppContext.java:296) 
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1342) 
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741) 
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:505) 
at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:365) 
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) 
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) 
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) 
at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:163) 
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) 
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) 
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) 
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) 
at org.eclipse.jetty.server.Server.start(Server.java:387) 
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) 
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) 
at org.eclipse.jetty.server.Server.doStart(Server.java:354) 
at org.eclipse.jetty.maven.plugin.JettyServer.doStart(JettyServer.java:73) 
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:534) 
at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:357) 
at org.eclipse.jetty.maven.plugin.JettyRunMojo.execute(JettyRunMojo.java:167) 
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) 
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:116) 
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) 
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) 
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862) 
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286) 
at org.apache.maven.cli.MavenCli.main(MavenCli.java:197) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)} 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1119) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) 
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:508) 
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:486) 
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:615) 
at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:169) 
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) 
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:308) 
... 65 more 

ответ

3

Проблема описана в вашем, см

Нет квалификационную боб типа [org.hibernate.SessionFactory] найдено для зависимости: ожидалось как минимум 1 бит, который квалифицируется как кандидат на аутсорсинг для этой зависимости.

Это означает, что вы не сконфигурировано зимуют SessionFactory, Google пример, как создать SessionFactory с помощью Spring, см

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/orm.html

Если вы используете спящий режим требует, чтобы создать некоторые другие бобы весной контекст.

+0

спасибо! Это именно то, что мне нужно! Ты просто спас мне жизнь! –

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

  • Нет связанных вопросов^_^