0

java jdk1.6.0_17 및 최대 절전 모드에 문제가 있습니다.personaly 클래스 로더의 최대 절전로드 매핑

org.hibernate.MappingException: Resource: it/sigeco/infoweb/dao/app/IcFabb.hbm.xml not found 
at org.hibernate.cfg.Configuration.addResource(Configuration.java:479) 
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1465) 
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1433) 
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1414) 
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1390) 
at org.hibernate.cfg.Configuration.configure(Configuration.java:1325) 
at testLoad.main(testLoad.java:32) 

hibernate.cfg : 나는 최대 절전 모드 세션 팩토리하지만 매핑 파일 (매퍼-test.jar)를 열어야는 personaly classLoader가 (URLClassLoader의)

  File map = new File("/opt/sigeco/infowebrepository/mapper/mapper-test.jar"); 
    File map1 = new File("/opt/sigeco/infowebrepository/mapper/hibernate3.jar");  
      URL[] urls = new URL[] { map.toURI().toURL(),map1.toURI().toURL()}; 
      URLClassLoader loader = new URLClassLoader(urls); 
      //test load is ok 
      loader.loadClass("it.sigeco.infoweb.dao.app.IcFabb");   
      Configuration configuration=new Configuration();   
      configuration.configure(loader.getResource("hibernate.cfg.xml"));  
      configuration.buildSessionFactory(); 

문제가에 의해 부하이다. xml :

빌드 경로가 포함 된 매퍼 테스트를로드하는 것이 성공하면 매퍼 테스트가 정상입니다.

구성에서 시스템 클래스 로더의 it/sigeco/infoweb/dao/app/IcFabb.hbm.xml 파일을 검색하고 URLClassLoader가 아닌 것으로 보이지만 구성을 로더와 어떻게 연결합니까?

고맙습니다.

답변

0

해결책을 찾았습니다. URL이 항아리 URL을 포함

MapperClassLoader(URL[] urls) 
{ 
     super(urls,MapperClassLoader.class.getClassLoader()); 
} 

: 나는 costructor에 URLClassLoader의 확장 personaly 클래스 로더, MapperClassLoader을 만들 수 있습니다. 따라서 상위 로더를 시스템 클래스 로더로 설정하십시오. 은 후 그래서 매퍼-test.jar이 usabile있는 시스템 클래스 로더 오순절 MapperClassLoader

Thread.currentThread().setContextClassLoader(MapperClassLoader.getInstance()); 

을 MapperClassLoader를 만들 설정합니다.