2013-01-03 4 views
6

웹 응용 프로그램을 작성 중이므로 최대 절전 모드를 추가해야합니다. maven (pom.xml) 등을 구성했지만 다음 오류가 발생합니다.웹 응용 프로그램 - hibernate.cfg.xml 파일을 저장할 위치는 어디입니까?

exception 
javax.servlet.ServletException: org.hibernate.HibernateException: /hibernate.cfg.xml not found 

NetBeans를 사용하고 있습니다. 이 파일을 WEB-INF, 루트 프로젝트 폴더, src 디렉토리 (기본 패키지)로 옮겨 보았습니다.하지만 여전히 작동하지 않습니다. 어떻게해야합니까? 나는이 같은 프로그램이 파일의 경로를 설정하지 않으 :

Configuration cfg = new Configuration(); 
cfg.addResource("/some/path/to/this/file/Hibernate.cfg.xml"); 
+0

클래스 경로의 루트에 있어야합니다. –

+0

Btw : 클래스 경로를 어떻게 확인할 수 있습니까? – Quak

+0

"classpath 확인"이란 무엇을 의미합니까? –

답변

8

난 항상 WEB-INF/classes 디렉토리에 넣어 (컴파일 된 파일이 저장된다).

+0

감사합니다. WEB-INF에 classes 디렉토리를 만들었고 정상적으로 작동합니다. – Quak

+0

당신은 환영합니다;) –

+1

그 디렉토리를 생성해야한다는 것이 이상합니다. 거기에 가야하는 수업이 하나 이상 있습니다! Netbeans를 제대로 사용하고 있지는 않지만, 추측 할 수는 있습니다. – Gimby

3

hibernate.cfg.xml을 클래스 경로의 폴더에 추가해야합니다. webb 앱에서 WEB-INF/classes는 기본적으로 클래스 경로에 있습니다. 해당 폴더를 사용하거나 자원을 위해 새 폴더를 만들거나 (별도로 유지하려는 경우) 프로젝트 설정을 조정하여 클래스 경로에 새 폴더를 설정할 수 있습니다.

1

hibernateConfig 파일 인수를 취하는 configure (File configFile) 메소드를 사용하여 다른 디렉토리 (클래스 경로 일 필요는 없음)에서 hibernate.cfg.xml을로드 할 수 있습니다. (참고, 최대 절전 모드 4.3.7 사용)

장점은 번들로 묶지 않고 액세스 할 수있는 (유지 관리 또는 변경 목적으로) 액세스 할 수있는 별도의 디렉토리에 최대 절전 모드 구성 파일을 배치 할 수 있다는 것입니다 당신이 접근 할 수없는 .war 파일로.

예는 다음과 같습니다


String hibernatePropsFilePath = "/etc/configs/hibernate.cfg.xml"; 
File hibernatePropsFile = new File(hibernatePropsFilePath); 

Configuration configuration = new Configuration(); 
configuration.configure(hibernatePropsFile); 

StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); 

ServiceRegistry serviceRegistry = serviceRegistryBuilder.build(); 

SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry); 

0

이 파일은 응용 프로그램의 클래스 패스의 루트에 있어야합니다. WEB-INF/classes에 있습니다.

+0

파일이 반드시 클래스 경로에 있어야 할 필요는 없습니다. 참조 : http://stackoverflow.com/a/27666320/1547266 – Arthur