2013-05-18 46 views
0

我使用spring mvc + hibernate進行應用程序。所有測試它的工作,但是當我嘗試啓動我的Tomcat應用程序我得到一個錯誤:當我開始我的應用程序時出現錯誤 - Hibernate + spring mvc

HTTP Status 500 - 

type Exception report 

message 

description The server encountered an internal error() that prevented it from fulfilling this request. 

exception 

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'sessionFactory' is defined 
    org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:529) 
    org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1095) 
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:277) 
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1097) 
    org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.lookupSessionFactory(OpenSessionInViewFilter.java:156) 
    org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.lookupSessionFactory(OpenSessionInViewFilter.java:141) 
    org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:105) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 

的web.xml: ...

​​

...

的ApplicationContext。 XML

...

<context:property-placeholder location="classpath:jdbc.properties" /> 

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" 
     p:driverClassName="com.mysql.jdbc.Driver" 
     p:url="${jdbc.url}" 
     p:username="${jdbc.username}" 
     p:password="${jdbc.password}"> 
</bean> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="packagesToScan"> 
     <list> 
      <value>br.com.infowhere.timeSheet.domain</value> 
     </list> 
    </property> 
    <property name="configLocation"> 
     <value>classpath:hibernate.cfg.xml</value> 
    </property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">${jdbc.dialect}</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
     </props> 
    </property> 
</bean> 

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

<tx:annotation-driven /> 

...

用SpringMVC-context.xml的

...

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basename" value="/WEB-INF/Resources/i18n/messages"/> 
    <property name="defaultEncoding" value="UTF-8" /> 
</bean> 

<mvc:interceptors> 
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/> 
</mvc:interceptors> 

<bean id="localeResolver" 
     class="org.springframework.web.servlet.i18n.SessionLocaleResolver"> 
    <property name="defaultLocale" value="pt_BR"/> 
</bean> 

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/views/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

...

有人幫幫我嗎?

感謝

回答

0
  • 確保這些文件的XML文件被正確部署,並在正確的位置 - 即WEB-INF/classes/spring
  • 試圖找出哪些是有問題的定義 - 例如擺脫OpenSessionInViewFilter,看看它是否正常啓動。
  • 喜歡小寫文件夾名稱 - spring代替Spring(和applicationContext而不是ApplicationContext)。這不應該干涉,但看起來反常規
  • 在一般情況下,避免OSIV - 你不需要它,如果你正確地管理你的實體和/或使用DTOs。
相關問題