2012-01-10 2 views
1

XML 파일을 사용하여 SQL 쿼리를 보관합니다. 내가 로그에서 볼 GAE에 배포 할 때GAE에서 XML 파일 사용

 DocumentBuilder db = dbf.newDocumentBuilder();   
     dom = db.parse("\\WEB-INF\\Queries.xml"); 

: 여기에 애플 리케이션 엔진 지침에 따라 : 같은 http://code.google.com/appengine/kb/java.html#readfile

내 전쟁/WEB-INF 디렉토리와 부하의 파일이있다 :

access denied (java.io.FilePermission /\WEB-INF\Queries.xml read) 

내가 무엇을 놓쳤습니까?

답변

2

경로를 절대 경로로 사용하고 있으므로 해당 파일에 대한 액세스가 거부되었다고합니다.

대신에 InputStream을 인수로 사용하는 parse (InputStream is) 오버로드를 사용하십시오.

코드 조각을 시도해도 정상적으로 작동합니다.

ServletContext context = getServletContext(); 
InputStream is = context.getRealPath("/WEB-INF/Queries.xml"); 
DocumentBuilder db = dbf.newDocumentBuilder();   
     dom = db.parse(is);// throws SAXException and IOException 
0

외부 파일에 액세스 할 때 ServletContext를 사용할 필요가 없음을 알게되었습니다. 단순히 새로운 파일 ("WEB-INF/Queries.xml")을 사용하면됩니다.

File tBackendFile = new File("WEB-INF/backends.xml"); 
Document tBackendDoc = DocumentBuilderFactory.newInstance() 
              .newDocumentBuilder() 
              .parse(tBackendFile); 
+0

2 훌륭한 솔루션들 덕분에 :

예를 들어, 나는 backends.xml 파일에 접근합니다 (파일 경로의 첫 번째 문자에 슬래시의 부족을 주목하라)! 두 번째를 사용했지만 첫 번째 허용 : P –

+0

probs 없음, 기꺼이 도와 드리겠습니다 : p –