Читать статический XML-файл в Google App Engine - PullRequest
9 голосов
/ 18 июля 2011

У меня есть статический XML-файл в моем приложении App Engine, который прекрасно загружается, и я пытаюсь прочитать его для некоторой логики выполнения на основе правил, но мне выдается следующая ошибка:

Caused by: java.security.AccessControlException: access denied (java.io.FilePermission /war/WEB-INF/StaticContent.xml read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:393)
    at java.security.AccessController.checkPermission(AccessController.java:553)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:166)
    at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
    at java.io.FileInputStream.<init>(FileInputStream.java:130)
    at java.io.FileInputStream.<init>(FileInputStream.java:96)

Я попытался поместить файл как непосредственно в войну, так и в каталоги war/WEB-INF, проблема сохраняется.На сервере попытки прочитать файл так просто:

final FileInputStream fis = new FileInputStream("/war/WEB-INF/StaticContent.xml");

В соответствии с этой статьей я все делаю правильно: http://code.google.com/appengine/kb/java.html#readfile

Любая помощь будет высоко оценена.

Ответы [ 4 ]

11 голосов
/ 18 июля 2011

Используйте getResourceAsStream вместо непосредственного открытия FileInputStream.

Местоположение, указанное в FileInputStream, принимается как абсолютное местоположение, поэтому вы получаете исключение, запрещающее доступ.

ServletContext context = getServletContext();
InputStream is = context.getResourceAsStream("/WEB-INF/StaticContent.xml");
1 голос
/ 18 июля 2011

Вы пробовали читать с war/WEB-INF/StaticContent.xml вместо /war/WEB-INF/StaticContent.xml?Возможно, последний интерпретируется как абсолютный путь, когда на самом деле вы не знаете, что такое абсолютный путь, и, следовательно, хотите относительный путь.

0 голосов
/ 04 апреля 2014

Я обнаружил, что у меня работает следующее:

InputStream feedStream = new FileInputStream("WEB-INF/" + fileName);
0 голосов
/ 23 апреля 2013

Если ваш файл хранится в каталоге war, вы можете получить к нему доступ, не указав имя проекта в filepath:

project- воюющими sample.json

затем получите доступ к файлу с путем as- FileReader fr = new FileReader ("war / sample.json");

:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...