2009-09-01 22 views
9

Quindi sto cercando di aggiungere alcune capacità al mio progetto per consentire le proprietà definite dall'utente nel mio artefatto di implementazione - una chiave semplice: valore .properties file. Ho inserire il file service.properties inCome caricare il file delle proprietà in Google App Engine?

war/WEB-INF/my-service.properties 

E nel mio costruttore ServiceImpl.java Ho il seguente:

String propertiesFileName = "my-service.properties"; 

URL propertyURL = ClassLoader.getSystemResource(propertiesFileName); 
URL propertyURL2 = this.getClass().getClassLoader().getResource(propertiesFileName); 
URL propertyURL3 = this.getClass().getClassLoader().getResource("WEB-INF/" + propertiesFileName); 
URL propertyURL6 = this.getClass().getClassLoader().getResource(
     "E:/Projects/eclipse-workspace/projectName/war/WEB-INF/" + propertiesFileName); 

Tutte le istanze per l'immobile URL sono nulli. So che mi manca qualcosa di assolutamente ovvio, ma ho bisogno di un secondo paio di occhi. Saluti.

EDIT:

Ah, a quanto pare ero confuso come predefinito progetto GAE crea un file logging.properties in/guerra. Da Google App Engine documentation:

L'SDK Java di App Engine include un file di logging.properties template, nella directory appengine-java-sdk/config/user /. Per usarlo, copiare il file nella directory WEB-INF/classes (o altrove in WAR), quindi la proprietà di sistema java.util.logging.config.file in "WEB-INF/classes/logging.properties" (o qualunque percorso tu scelga, relativo alla root dell'applicazione). È possibile impostare le proprietà di sistema nel file appengine-web.xml nel modo seguente:

+0

Suppongo che sia un errore di battitura nella tua domanda piuttosto che nella tua app, ma dichiari che il tuo file è chiamato "service.properties", tuttavia propertiesFileName è impostato su "my-service.properties"! –

+0

@Todd: Sì, è un refuso, lo correggerò. –

risposta

9

Provare a inserire il servizio.proprietà in WEB-INF/classi. Allora dovrebbe essere accessibile solo con:

this.getClass().getClassLoader().getResourceAsStream("/filename.properties"); 
+0

Sapete perché per me ho dovuto rimuovere il "/" all'inizio del percorso per farlo funzionare? – Mike

0

Penso che quello che hai bisogno è qualcosa di simile:

String = filePath servletContext.getRealPath ("/ WEB-INF/views /") + "/ "+ mav.getViewName() +" .vm "; FileInputStream in = new FileInputStream (filePath);

Ottengo il servletContext dalla primavera: @Autowire ServletContext.

0

Come Mike menzionato nel suo commento al jsight s risposta, ha funzionato per me se ho usato

this.getClass().getClassLoader().getResourceAsStream("filename.properties"); 

(rimosso la prima barra) dopo aver posizionato il file in WEB-INF/classes.