2012-01-21 4 views
0

Google App Engineの開発サーバーのWEB-INFフォルダ以外のファイルにアクセスできますか?たぶん私はどうかして外部接続/ファイルアクセスをブロックしないようにGAE devサーバーを強制することができますか?GAEのdevモード(java.security.AccessControlException:access denied)のWEB-INFフォルダ以外のファイルにアクセスできますか?

gae-sqliteのJavaバージョンを作成しようとしています。しかし、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クラスホワイトリストを参照してください。自分の リソース(プロパティファイルなど)にファイルアクセスする必要がある場合は、これらのファイルをjarの に入れ、ClassまたはClassLoaderを使用してそれらをロードすることができます。

だからあなたの質問の答えに、WEB-INFディレクトリ以外にのみ利用可能な場所は、あなたがappengine-web.xml<resource-files>エントリで指定されたものは何でもあるからファイルを読み込みます。

は今、私は気づいた一つのことは、あなたがにしようとしているということですにあなたが唯一それが読み取り専用を検討しているならば大丈夫でなければなりませんDBファイルを読み込みます。あなたはので(同じリンクから)任意の「ローカル」のファイルへの書き込みができません。

は、なぜ私は、このファイルに書き込むことはできませんか?

アプリケーションの分散性質が であるため、ローカルファイルへの書き込みはApp Engineではサポートされていません。代わりに、 のデータを分散データストアに格納する必要があります。詳細については、 に関する情報は、ランタイムサンドボックスに関するドキュメントを参照してください。

+0

ええ、私はこのFAQをよく読んでいます。これには回避策がありますか?なぜ私はgae-sqliteが動作するのだろうか。 – expert

関連する問題