Использование файла XML в GAE - PullRequest
1 голос
/ 10 января 2012

Я использую файл XML для хранения своих запросов SQL.В соответствии с рекомендациями движка приложения здесь: http://code.google.com/appengine/kb/java.html#readfile

У меня есть файл в моем каталоге war / WEB-INF, и загрузка такова:

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

При развертывании в GAE япосмотрите это в логах:

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

Я что-то пропустил?

Ответы [ 2 ]

2 голосов
/ 10 января 2012

он принимает путь как абсолютный путь и поэтому говорит, что доступ к этому файлу запрещен.

Вместо этого используйте перегрузку parse (InputStream is), которая принимает InputStream в качестве аргумента.

попробуйте этот кусок кода, он должен работать нормально.

ServletContext context = getServletContext();
InputStream is = context.getRealPath("/WEB-INF/Queries.xml");
DocumentBuilder db = dbf.newDocumentBuilder();          
        dom = db.parse(is);// throws SAXException and IOException
0 голосов
/ 10 января 2012

Я обнаружил, что нет необходимости использовать ServletContext для доступа к внешнему файлу. Простое использование нового файла («WEB-INF / Queries.xml») работает. (Обратите внимание на отсутствие косой черты на первом символе пути к файлу)

Например, я использую это для доступа к файлу backends.xml:

File tBackendFile = new File( "WEB-INF/backends.xml" );
Document tBackendDoc = DocumentBuilderFactory.newInstance()
                                             .newDocumentBuilder()
                                             .parse(tBackendFile);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...