2013-03-20 3 views
0

나는 Hibernate와 Spring을 초보자로 삼아 애플리케이션을 실행하는 동안 위의 예외를 얻는다.
HTTP 상태 500 - 요청 처리에 실패했습니다. 중첩 예외는 org.hibernate.Hibernate.HibernateException : /hibernate.cfg.xml을 찾을 수 없다.

데이터베이스에서 레코드의 값을 가져 오려고합니다.

message Request processing failed; nested exception is org.hibernate.HibernateException: /hibernate.cfg.xml not found 

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

exception 

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.HibernateException: /hibernate.cfg.xml not found 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894) 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
root cause 

org.hibernate.HibernateException: /hibernate.cfg.xml not found 
    org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170) 
    org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1497) 
    org.hibernate.cfg.Configuration.configure(Configuration.java:1519) 
    org.hibernate.cfg.Configuration.configure(Configuration.java:1506) 
    com.me.app.HomeController.handleRequestInternal(HomeController.java:56) 
    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:923) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.34 logs. 

다음
내 파일입니다 - -이 :

POJO

public class Usertable { 

    int id; 
    String userName; 
    String password; 



    public int getId() { 
     return id; 
    } 
    public void setId(int id) { 
     this.id = id; 
    } 
    public String getUserName() { 
     return userName; 
    } 
    public void setUserName(String userName) { 
     this.userName = userName; 
    } 
    public String getPassword() { 
     return password; 
    } 
    public void setPassword(String password) { 
     this.password = password; 
    } 



} 


다음
내가 점점 오전 예외입니다 15,

컨트롤러

//@Controller 
public class HomeController extends AbstractController{ 

    //private static final Logger logger = LoggerFactory.getLogger(HomeController.class); 

    /** 
    * Simply selects the home view to render by returning its name. 
    */ 
// @RequestMapping(value = "/", method = RequestMethod.GET) 
// public String home(Locale locale, Model model) { 
//  logger.info("Welcome home! The client locale is {}.", locale); 
//  
//  Date date = new Date(); 
//  DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); 
//  
//  String formattedDate = dateFormat.format(date); 
//  
//  model.addAttribute("serverTime", formattedDate); 
//  
//  return "home"; 
// } 

    @Override 
    protected ModelAndView handleRequestInternal(HttpServletRequest request, 
      HttpServletResponse response) throws Exception { 
     String userName = request.getParameter("userName"); 
     String password = request.getParameter("password"); 
     Usertable user; 

     Configuration cfg = new Configuration(); 
     SessionFactory sf = cfg.configure().buildSessionFactory(); 
     Session hibsession = sf.openSession(); 





     Transaction tx = hibsession.beginTransaction(); 
     user = (Usertable)hibsession.get(Usertable.class, userName); 

     System.out.println("UserName is "+ user.getUserName()); 
     System.out.println("Password is "+ user.getPassword()); 


     tx.commit(); 



     hibsession.close(); 

     return new ModelAndView("first","abc","abc"); 
    } 


있는 hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC 
     "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.password">tiger</property> 
     <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/contacts</property> 
     <property name="hibernate.connection.username">root</property> 

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

     <mapping resource="Usertable.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 


Usertable.hbm.xml

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated 20 Mar, 2013 4:26:30 AM by Hibernate Tools 3.4.0.CR1 --> 
<hibernate-mapping> 
    <class name="com.me.app.Usertable" table="USERTABLE"> 
     <id name="id" type="java.lang.Integer"> 
      <column name="UserID" /> 
      <generator class="native" /> 
     </id> 
     <property name="userName" type="java.lang.String"> 
      <column name="UserName" /> 
     </property> 
     <property name="password" type="java.lang.String"> 
      <column name="UserPassword" /> 
     </property> 
    </class> 
</hibernate-mapping> 
123,414,
서블릿-context.xml에

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/mvc" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

    <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> 
    <!-- Enables the Spring MVC @Controller programming model --> 
    <annotation-driven /> 
    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --> 
    <!-- <resources mapping="/resources/**" location="/resources/" /> --> 

    <beans:bean id="urlMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> 

    <beans:bean name="/books.htm" class="com.me.app.HomeController" /> 




    <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --> 
    <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <beans:property name="prefix" value="/WEB-INF/views/" /> 
     <beans:property name="suffix" value=".jsp" /> 
    </beans:bean> 

    <context:component-scan base-package="com.me.app" /> 



</beans:beans> 


좋은 말 할 때 사전에이 issue.Thanks 좀 도와.!

+0

프로젝트 내에 hibernate.cfg.xml 파일이 어디에 있습니까? – kyiu

+0

src/main/java/com/me/app/hibernate.cfg.xml에 위치 – quickBongo

+1

프로젝트가 Maven 기반입니까? 구성 파일을 src/main/resources에 넣으십시오. – kyiu

답변

0

요청 처리시 사용자의 최대 절전 모드 구성을 인스턴스화해서는 안되며, 봄을 session factory으로 인스턴스화하고 컨트롤러에 주입하고 거기에서 세션을 검색하도록해야합니다. 이렇게하면 응용 프로그램에 대한 각 요청에 대해 세션 팩토리를 구현할 필요가 없습니다.

question 또는 공식 문서에서 봄을 통해 세션 팩토리를 인스턴스화하는 방법에 대한 자세한 내용을 확인할 수 있습니다.

이렇게하면 (간접적으로) 문제가 해결됩니다.

+0

감사합니다 benzonico 나는 확실히 내 코드에 세션 팩토리를 주입하려고합니다. 귀중한 의견을 보내 주셔서 감사합니다. – quickBongo

0

벤조 니코KHY 귀하의 의견에 감사드립니다. 내가했던 첫 번째 실수는 hibernate.cfg.xml을 src/main/java/com/me/app /에 src/main/java /에 있어야한다는 것이다. 이것은 나를 위해 일했다. TypedMismatch에 대한 다음 부분은 실제로 정수이었다 데이터베이스에서 문자열 참조를 얻으려고 노력했다

user = (Usertable)hibsession.get(Usertable.class, userName); 

했다. 그래서 typedMismatchException이 해결되었습니다.

스프링을 통해 세션 팩토리를 코드에 삽입하려고합니다.이 프레임 워크를 처음 접했을 때 나는 당신과 논의하고 새로운 코드를 시도하면서로드를 배웠다.

귀중한 의견을 보내 주셔서 다시 한번 감사드립니다.

관련 문제