Lesen von Java-Ressourcendateien in Google AppEngine

8

Ich habe ein Google AppEngine Java-Projekt eingerichtet, das BigQuery aufruft, um die Ergebnisse eines Abfrageauftrags anzuzeigen. Der Beispielcode und die Anweisungen, die ich verwendet habe, finden Sie hier . Die App wird ausgeführt und ruft die Abfrage von meinem Entwicklungscomputer ab. Wenn ich sie jedoch auf appspot.com auf AppEngine hochlade, wird die client_secrets.json-Datei (unterschiedliche Datei für dev und appspot.com aufgrund der JavaScript-URL-Autorisierung) nicht geladen das folgende Snippet:

%Vor%

}

Hier ist meine Appengine-web.xml Ressourcendatei-Definition:

%Vor%

Die Datei client_secrets.json ist in meiner WAR-Datei richtig verpackt. Der Fehler, den ich bekomme, ist:

%Vor%

Ich kann stattdessen versuchen, ServletContext.getResourceAsStream () zu verwenden, jedoch ist die Klasse, die in der Beispielanwendung mit BigQuery verbunden ist, keine Servlet-Klasse. Dies erfordert eine gewisse Reorganisation des Codes zur korrekten Implementierung und Die Anweisungen von Google scheinen darauf hinzuweisen, dass mein Code funktioniert. Jede Hilfe wird geschätzt, danke!

    
Chris Lumpkin 20.07.2015, 00:25
quelle

1 Antwort

9

Ressourcendateien befinden sich nicht im Dateisystem, daher funktioniert new File("/WEB-INF/client_secrets.json") ordinary nicht. Stattdessen müssen Sie es normalerweise als Ressource laden:

%Vor%

Aus irgendeinem Grund erlaubt Ihnen AppEngine nicht, Ressourcen unter WEB-INF mit dem Klassenlader zu laden (Sie können Ressourcen mit der obigen Technik in JAR-Dateien laden).

Sie können die Datei-API verwenden, um auf Pfade in WEB-INF in der App zuzugreifen, aber die Pfade müssen relativ sein . Angenommen, die Datei client_secrets.json befindet sich im Ordner WEB-INF , sollte dies funktionieren:

%Vor%

Um die File APIs zum Lesen von Ressourcen unter WEB-INF zu verwenden, müssen Sie auch sicherstellen, dass Ihre appengine-web.xml -Datei die Ressourcen in Ihrem WEB-INF enthält:

%Vor%

Siehe appengine-web.xml konfigurieren und Warum kann ich nicht aus dieser Datei lesen

?     
NamshubWriter 20.07.2015 00:40
quelle