2012-02-15 3 views
1

파일은 EAR 포장에없는 내 된 .ear 내부

-META-INF 
-lib 
-ejb-shared.jar 
-ejb.jar 
    -com/ejb/... (classes) 
    -fileXml.xml (file I'm trying to access) 
-web.war 

일부 설명 :

  • 는 "ejbshared"

  • 는 "EJB는"일부 EJB들과 JPA 엔티티를 포함
  • 일부 EJB들과 JPA 엔티티를 포함 "ejb-shared"프로젝트를 사용합니다.

문제는 fileXml.xml에 액세스 할 수 없다는 것입니다. ,

File f = new File("fileXml.xml"); 
System.out.println(f.exists()); // returns false! 

나는 이유는 모르겠지만,이 된 .ear에 존재입니다 althougth fileXml.xml가 클래스 경로에없는 것 같습니다 : (ejb.jar의)는 EJB 빈의 내부에서 내가했던 또는 어쩌면 나는 잘못된 방식으로 일을하고있다!

답변

2

new File("fileXml.xml")을 사용하면 특정 응용 프로그램이 아닌 응용 프로그램 서버 JVM의 현재 작업 디렉토리에있는 파일을 참조합니다. 사용해보기 :

URL url = getClass().getResource("/fileXml.xml"); 
boolean exists = url != null; 
System.out.println(exists); 
InputStream input = url.openStream(); 
// ... read and close input stream 
+0

어떻게하면이 파일의 파일 경로를 가져올 수 있습니까? 나는 그것을 필요로하는 lib를 사용한다. 감사합니다 – joaosavio

+0

JAR 파일의 파일 경로? 그렇게 할 수있는 이식성있는 방법은 없습니다. url의 프로토콜을 검사하고 내부 파일 URL을 추출한 다음이를 URI로 변환 한 다음이를 파일로 변환 할 수 있습니다. 또는 url.openConnection이 JarURLConnection의 인스턴스인지 확인한 다음 conn.getJarFile(). getName()을 사용할 수도 있습니다. 하지만 그 중 아무 것도 작동하도록 보장되어 있지 않습니다. –