Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Read static XML file on Google App Engine

I have a static XML file in my App Engine app that uploads just fine and I am trying to read it for some rules based execution logic, but the below error is thrown at me:

Caused by: java.security.AccessControlException: access denied (java.io.FilePermission /war/WEB-INF/StaticContent.xml read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:393)
    at java.security.AccessController.checkPermission(AccessController.java:553)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:166)
    at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
    at java.io.FileInputStream.<init>(FileInputStream.java:130)
    at java.io.FileInputStream.<init>(FileInputStream.java:96)

I tried placing the file both directly in the war and in the war/WEB-INF directories, the problem persists. The on the server attempts to read the file is as simple as this:

final FileInputStream fis = new FileInputStream("/war/WEB-INF/StaticContent.xml");

According to this article, I am doing everything correctly: http://code.google.com/appengine/kb/java.html#readfile

Any help will be much appreciated.

like image 821
user583066 Avatar asked Jul 18 '11 19:07

user583066


2 Answers

Use getResourceAsStream instead of directly opening a FileInputStream.

The location you specify in FileInputStream is taken as an absolute location which is why you are getting hte access denied exception.

ServletContext context = getServletContext();
InputStream is = context.getResourceAsStream("/WEB-INF/StaticContent.xml");
like image 196
Kal Avatar answered Oct 13 '22 00:10

Kal


Have you tried reading from war/WEB-INF/StaticContent.xml instead of /war/WEB-INF/StaticContent.xml? It may be that the latter is interpreted as an absolute path, when in fact you don't know what the absolute path is and thus want a relative path.

like image 25
Chris Bunch Avatar answered Oct 13 '22 00:10

Chris Bunch