使用 SAX 解析器验证 XSD 时出现 java.security.AccessControlException

标签 java google-app-engine accesscontrolexception

我在我的 Google App Engine Web 应用程序中编写了一个 SAX 解析器。因为我尝试用 xsd 验证我的 xml 文件。但是当我的代码试图访问那个 xsd 时,我得到了一个访问控制异常。

java.security.AccessControlException:访问被拒绝(java.io.FilePermission\WEB-INF\ApplicationResponse.xsd 读取) 在 java.security.AccessControlContext.checkPermission(AccessControlContext.java:264) 在 java.security.AccessController.checkPermission(AccessController.java:427) 在 java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 在 com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:166) 在 java.lang.SecurityManager.checkRead(SecurityManager.java:871) 在 java.io.FileInputStream.(FileInputStream.java:100) 在 com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.xsdToXMLInputSource(XMLSchemaLoader.java:830) 在 com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.processJAXPSchemaSource(XMLSchemaLoader.java:708) 在 com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:554) 在 com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.findSchemaGrammar(XMLSchemaValidator.java:2459) 在 com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1807) 在 com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:705) 在 com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:330) 在 com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:779) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1794) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368) 在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834) 在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) 在 com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148) 在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242) 在 sax.SAXLocalNameCount.parse(SAXLocalNameCount.java:220) 在 com.sms2mint.InterfaceServlet.doGet(InterfaceServlet.java:54)

请让我知道如何调试这个? 我试图将 xsd 放在类、webcontent、/WEB-INF 中,但没有帮助。还在 appengine-web.xml 中将其声明为资源文件,但无济于事。

最佳答案

根据:

http://code.google.com/appengine/docs/java/jrewhitelist.html

FileInputStream 应该是白名单读取器函数。您是否在开发环境中遇到此访问问题(在这种情况下,您的开发环境是什么?有报告称使用 Eclipse 插件的人在重新启动 Eclipse、清理和重新构建项目后解决了类似问题),或者在已部署的应用程序中?

您如何指定文件的路径?你能包括代码吗?

关于使用 SAX 解析器验证 XSD 时出现 java.security.AccessControlException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2702749/

相关文章:

java - 我可以使用setter方法将链表节点设置到另一个节点吗?

java - 设置 OSGi 包的权限

Hadoop 演示代码不工作

java - 有没有办法遍历变量名?

java - 查找 JFrame 处于最大化状态时的还原边界

java - 另一个 MYSQL 问题

ruby-on-rails - 部署 ruby​​ api 谷歌云

python - gql 查询返回 BadQueryError : Parse Error

python - 确定 ndb PolyModel Google App Engine 中的对象类

Java小程序AccessControlException问题