Я пытаюсь запустить SAXParser в приложении GAE в локальном файле XML, хранящемся в файле WEB-INF. Он отлично работает, когда я использую его в режиме разработки, но когда я его развертываю и пытаюсь разобрать этот файл, я получаю следующее исключение, и я не пишу XML файл, просто пытаюсь разобрать локальный:
java.security.AccessControlException: доступ запрещен ("java.io.FilePermission" "WEB-INF/MapInfo.xml" "write")
Код, который я пытаюсь запустить, выглядит следующим образом:
@Override
public Double countPOIs() {
Double total = 0.0;
List<String> Coordinates;
Coordinates = new ArrayList<String>();
try {
XMLParser parser = new XMLParser(Coordinates, 8);
XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(parser);
reader.parse("WEB-INF/MapInfo.xml");
total = parser.getACC();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return total;
}
Конструктор кажется немного странным, но не имеет значения для этой операции. Кто-нибудь видит проблемы здесь?
Попробуйте заменить строку reader.parse следующим (извините, не удалось проверить его):
final javax.servlet.ServletContext servletContext = this.getServletContext();
java.io.InputStream stream = servletContext.getResourceAsStream("/WEB-INF/MapInfo.xml");
reader.parse(stream);