2012-01-21 7 views
0

Google App Engine의 개발 서버에서 WEB-INF 폴더 이외의 파일에 액세스 할 수 있습니까? 어쩌면 내가 어떻게 든 외부 접속/파일 액세스를 차단하지 GAE dev에 서버를 강제 수 있습니까?GAE의 dev 모드 (java.security.AccessControlException : access denied)의 WEB-INF 폴더 이외의 파일에 액세스 할 수 있습니까?

gae-sqlite의 자바 버전을 만들려고합니다. 하지만 access denied 예외로 인해 외부 SQL Server (mysql 또는 h2db)에 액세스 할 수 없습니다.

콜 스택 :

Caused by: java.security.AccessControlException: access denied (java.io.FilePermission C:\work\test_projects\gae_test\out\artifacts\gae_test_war_exploded\database.lock.db write) 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374) 
    at java.security.AccessController.checkPermission(AccessController.java:546) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 
    at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:252) 
    at java.lang.SecurityManager.checkWrite(SecurityManager.java:962) 
    at java.io.File.createNewFile(File.java:882) 
    at org.h2.store.fs.FilePathDisk.createFile(FilePathDisk.java:121) 
    at org.h2.store.fs.FileUtils.createFile(FileUtils.java:59) 
    at org.h2.store.FileLock.lockFile(FileLock.java:327) 
    at org.h2.store.FileLock.lock(FileLock.java:128) 
    at org.h2.engine.Database.open(Database.java:542) 
    at org.h2.engine.Database.openDatabase(Database.java:222) 

답변

0

GAE SDK 1.6.1부터는 불가능합니다. 너희들이 나중에 그것을 할 길을 찾으면 알려줘.

0

따르면 GAE for Java Questions로는 :

나는이 파일에서 읽을 수없는 이유는 무엇입니까?

  • 전쟁/WEB-INF
  • 있는 위치에 <resource-files> 일치 :

    다음 위치에 있음을 제공 한 응용 프로그램의 일부로 업로드 된 파일에서 읽을 수 있습니다 파일 위치는 문제가되지 않는 경우 (기본적으로 모든 것을 포함) appengine-web.xml의 패턴

는 문제가 될 수 있다는 것을 당신이 사용하고있는 방법 파일에서 읽음은 허용 목록에 없습니다. 응용 프로그램은 File, FileInputStream, FileReader 또는 RandomAccessFile과 같이 파일 시스템을 에서 읽는 데 유용한 IO 클래스를 사용할 수 있습니다. 허용 목록에 포함 된 클래스의 전체 목록은 JRE 클래스 화이트리스트를 참조하십시오. 자신의 리소스 (예 : 속성 파일)에 대한 파일 액세스 권한을 얻으려면이 파일들을 jars의 안에 넣고 Class 또는 ClassLoader를 사용하여로드 할 수 있습니다.

그래서 귀하의 질문에 대답 에, WEB-INF 디렉토리 외에 사용할 수있는 유일한 장소는 appengine-web.xml<resource-files> 항목에 지정된 뭐든에서 파일을 읽습니다.

지금 내가 발견 한 것은 당신이 에하려는 것은 당신 만이 읽기 전용 고려하고 있다면 괜찮을 것 같네요 DB 파일을 읽을 수 있다는 것입니다. 당신은 때문에 (같은 링크에서) 어떤 "로컬"파일에 쓰기는 할 수 없습니다

이유는이 파일에 쓸 수 없습니다?

응용 프로그램의 특성상 분산되어 있기 때문에 App Engine에서 로컬 파일에 쓰기가 지원되지 않습니다. 대신, 이어야하는 데이터가 분산 데이터 저장소에 저장되어야합니다. 자세한 내용은 정보는 런타임 샌드 박스에 대한 설명서를 참조하십시오.

+0

그래, 물론이 FAQ를 읽었습니다. 이 문제를 해결할 수있는 방법이 있습니까? 왜 gae-sqlite가 작동하는지 궁금합니다. – expert