2012-07-03 2 views
0

Я новичок в весне и в спящем режиме. Теперь я пытаюсь сохранить некоторые данные в базе данных mySql. Но я получаю некоторую ошибку. Есть ли какая-либо конфигурация в dispatcher-servelet.xml для использования аннотации спящего режима. Как я могу решить проблему? Файл конфигурацииТребуется экземпляр AnnotationConfiguration

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.ExceptionInInitializerError 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:839) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 


root cause 
java.lang.ExceptionInInitializerError 
com.application.util.HibernateUtil.<clinit>(HibernateUtil.java:21) 
com.application.service.EmployeeServiceImpl.add(EmployeeServiceImpl.java:22) 
com.application.controller.UserController.onSubmit(UserController.java:34) 
org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java:415) 
org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java:387) 
org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:272) 
org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:268) 
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) 
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 


root cause 
org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com.application.domain.Employee"/> 
org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1600) 
org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555) 
org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534) 
org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508) 
org.hibernate.cfg.Configuration.configure(Configuration.java:1428) 
org.hibernate.cfg.Configuration.configure(Configuration.java:1414) 
com.application.util.HibernateUtil.<clinit>(HibernateUtil.java:18) 
com.application.service.EmployeeServiceImpl.add(EmployeeServiceImpl.java:22) 
com.application.controller.UserController.onSubmit(UserController.java:34) 
org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java:415) 
org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java:387) 
org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:272) 
org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:268) 
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) 
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 

Гибернации

hibernate.cfg.xml

<hibernate-configuration> 
    <session-factory> 
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/employee_db</property> 
    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.connection.password"></property> 
    <property name="connection.pool_size">1</property> 
    <property name="show_sql">true</property> 
    <property name="hbm2ddl.auto">create</property> 

    <mapping class="com.application.domain.Employee" /> 
    </session-factory> 
</hibernate-configuration> 

диспетчер-servelet.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    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/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/> 

<!-- 
Most controllers will use the ControllerClassNameHandlerMapping above, but 
for the index controller we are using ParameterizableViewController, so we must 
define an explicit mapping for it. 
--> 
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
     <props> 
      <prop key="index.htm">indexController</prop> 
     </props> 
    </property> 
</bean> 

<bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
     p:prefix="/WEB-INF/jsp/" 
     p:suffix=".jsp" /> 

<bean name="indexController" 
     class="org.springframework.web.servlet.mvc.ParameterizableViewController" 
     p:viewName="index" /> 

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" 
p:basename="messages" /> 
<bean id="employeeService" class="com.application.service.EmployeeServiceImpl" /> 
<bean id="employeeValidator" class="com.application.validator.EmployeeValidator" /> 
<bean name="userRegistration.htm" class="com.application.controller.UserController" 
    p:employeeService-ref="employeeService" p:formView="employeeForm" 
    p:successView="employeeSuccess" p:validator-ref="employeeValidator"/> 

</beans> 

После использования hibernet.cfg.xml от ответа New Exception1

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class com.application.util.HibernateUtil 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:839) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 


root cause 
java.lang.NoClassDefFoundError: Could not initialize class com.application.util.HibernateUtil 
com.application.service.EmployeeServiceImpl.add(EmployeeServiceImpl.java:22) 
com.application.controller.UserController.onSubmit(UserController.java:34) 
org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java:415) 
org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java:387) 
org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:272) 
org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:268) 
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) 
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 

Есть ли какие-либо проблемы в этом классе EmployeeServiceImpl.java и HibernateUtil.java

public class EmployeeServiceImpl implements EmployeeService { 

@Override 
public void add(Employee employee) { 
//Persist the user object here. 
    Session session = HibernateUtil.getSessionFactory().openSession(); 
    Transaction transaction = null; 
    try { 
     transaction = session.beginTransaction(); 
     session.save(employee); 
     transaction.commit(); 
    } catch (HibernateException e) { 
     transaction.rollback(); 
    } finally { 
     session.close(); 
    } 
    System.out.println("User added successfully"); 
} 
} 

public class HibernateUtil { 
private static final SessionFactory sessionFactory; 
static { 
    try { 
     sessionFactory = new Configuration().configure().buildSessionFactory(); 
    } catch (Throwable ex) { 
     System.err.println("Initial SessionFactory creation failed." + ex); 
     throw new ExceptionInInitializerError(ex); 
    } 
} 
public static SessionFactory getSessionFactory() { 
return sessionFactory; 
} 
} 
+0

Есть ли причина, по которой вы не используете Spring для настройки вашей фабрики сеансов? –

ответ

0

Нужно добавить Hibernate-аннотаций банку и строить SessionFactory в

return new AnnotationConfiguration().configure().buildSessionFactory(); 

Take a look

+0

Спасибо за повтор, но это не сработает. Я использую SimpleFormController. – Sudeepta

+0

Я пробовал, но он отображает другую ошибку. Я добавил его ниже, из моего вопроса: «После использования hibernet.cfg.xml из ответа New Exception1» – Sudeepta

+0

Он не работает. Есть ли способ, которым я могу отправить вам свой код, если хотите. – Sudeepta

-1
<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="configLocation" value="/WEB-INF/hibernate.cfg.xml"></property> 
     <property name="configurationClass">    
      <value>org.hibernate.cfg.AnnotationConfiguration</value>   
     </property> 
     <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">${jdbc.dialect}</prop> 
      <prop key="hibernate.show_sql">${jdbc.showsql}</prop> 
     </props> 
    </property> 

Вы можете использовать приведенную выше конфигурацию, которая отлично работает для меня.

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