2012-01-10 4 views
1

XMLファイルを使用してSQLクエリを保持します。ここでApp Engineのガイドラインに従って:http://code.google.com/appengine/kb/java.html#readfileGAEでのXMLファイルの使用

私は戦争/ WEB-INFディレクトリおよび負荷のファイルを持っているようです:

 DocumentBuilder db = dbf.newDocumentBuilder();   
     dom = db.parse("\\WEB-INF\\Queries.xml"); 

私はGAEにデプロイするときに、私は、ログでこれを参照してください。

access denied (java.io.FilePermission /\WEB-INF\Queries.xml read) 

私は何かを見逃しましたか?

答えて

2

絶対パスとしてパスを取得しているため、そのファイルに対してアクセスが拒否されています。

代わりに、InputStreamを引数として使用するparse(InputStream is)のオーバーロードを使用します。

このコードを試してみるとうまくいくはずです。

ServletContext context = getServletContext(); 
InputStream is = context.getRealPath("/WEB-INF/Queries.xml"); 
DocumentBuilder db = dbf.newDocumentBuilder();   
     dom = db.parse(is);// throws SAXException and IOException 
0

私は、外部ファイルにアクセスするためにServletContextを使用する必要はないことを知りました。単に新しいファイル( "WEB-INF/Queries.xml")を使うだけです。

File tBackendFile = new File("WEB-INF/backends.xml"); 
Document tBackendDoc = DocumentBuilderFactory.newInstance() 
              .newDocumentBuilder() 
              .parse(tBackendFile); 
+0

2偉大なソリューションのおかげでみんな:たとえば

(ファイルパスの最初の文字にスラッシュがないことに注意してください)、私はbackends.xmlファイルにアクセスするためにこれを使用します! 私は2番目を使用しましたが、最初のものを受け入れました:P –

+0

probsなし、喜んで助けてください:p –

関連する問題