尝试解析xml文件,但在已部署的GAE中获取java.security.AccessControlException
问题描述:
我试图在存储在WEB-INF文件中的本地XML文件上的GAE应用程序上运行SAXParser。当我在开发模式中使用它时,它工作正常,但是当我部署它并尝试解析该文件时,出现以下异常,并且我没有编写XML文件,只是试图解析本地文件:尝试解析xml文件,但在已部署的GAE中获取java.security.AccessControlException
java .security.AccessControlException:访问被拒绝( “java.io.FilePermission中的” “WEB-INF/MapInfo.xml”, “写”)
的代码我试图运行看起来像这样:
@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);
是reader.parse抛出异常的声明?这可能是解析器试图打开文件进行读写,即使这是不必要的。如果解析过载了开放流参数,那么这可能会提供一条出路。 –
它没有回答上面的问题,但我确实找到了一种解决方案,使用解析器进行一次性处理以将数据上传到数据存储区。 而不是将xml文件放在您的应用程序本地放置在一个投递箱帐户,提取链接并像这样调用解析器: reader.parse(new InputSource(new URL(“url”)。openStream() )); – user3417076
感谢您查找开放式流解析超载,我将在避免使用Dropbox的答案中使用它。 –