【问题标题】:How to read XML file? Google App Engine Endpoints如何读取 XML 文件? Google App Engine 端点
【发布时间】:2014-04-03 14:09:40
【问题描述】:

我明白了:

wordsDictionary.xml

在:

/WEB-INF/xml/

我正在尝试使用代码通过SAXReader 阅读它:

...
SAXParserFactory saxFactory = SAXParserFactory.newInstance();
saxFactory.setValidating(false);
saxFactory.setNamespaceAware(false);
XMLReader reader = saxFactory.getXMLReader();
reader.setContentHandler(new WordsDictionarySAXHandler(this,lettersMapping));
reader.parse(new InputSource("/WEB-INF/xml/wordsDictionary.xml"));
...

在开发服务器上一切正常。将其部署到生产环境时出现错误:

com.google.api.server.spi.SystemService invokeServiceMethod: access denied
("java.io.FilePermission" "/WEB-INF/xml/wordsDictionary.xml" "read")
java.security.AccessControlException: access denied ("java.io.FilePermission"  
"/WEBINF/xml/wordsDictionary.xml" "read")

在你说我需要使用之前:context.getResourceAsStream 您需要知道我正在使用 Google Endpoints。所以我无法直接访问任何 Servlet(没有任何东西传递给端点方法 - HttpRequest)。

我的问题是:你知道如何在 GAE 端点上加载 xml 文件吗?

编辑: 只需阅读https://developers.google.com/appengine/kb/java?csw=1#readfile

如果文件位置不是问题,问题可能是 您用来读取文件的方法未列入白名单。您的 应用程序可以使用任何对读取有用的 IO 类 文件系统,例如 File、FileInputStream、FileReader 或 随机存取文件。有关列入白名单的课程的完整列表,请参阅 JRE 类白名单。

我已将部分代码更改为:

FileInputStream stream = new FileInputStream("/WEB-INF/xml/wordsDictionary.xml");
reader.parse(new InputSource(new InputStreamReader(stream)));

很遗憾,没有任何改变。

【问题讨论】:

    标签: java xml google-app-engine sax google-cloud-endpoints


    【解决方案1】:

    错误原因是 WEB-INF 之前的“/”。 记住:

    access denied ("java.io.FilePermission"  
    "/WEBINF/xml/wordsDictionary.xml" "read")
    

    即使您尝试访问错误目录也可能引发此错误。

    还记得为您的 XML 文件设置正确的编码:

    FileInputStream stream = new FileInputStream("WEB-INF/xml/wordsDictionary.xml");
    InputSource is = new InputSource(new InputStreamReader(stream, "UTF-8"));
    is.setEncoding("UTF-8");
    reader.parse(is);
    

    【讨论】:

      猜你喜欢
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-16
      • 1970-01-01
      • 2011-07-11
      • 2013-01-26
      • 1970-01-01
      相关资源
      最近更新 更多