2017-02-09 12 views
0

Приложение My Java в Google App Engine загружает файл белого списка, хранящийся в /WEB-INF. Файл определяется как файл ресурсов в appengine-web.xml:Периодически обновлять файл в WEB-INF без перезапуска приложения - Google App Engine

<resource-files> 
    <include path="/whitelist.txt" /> 
</resource-files> 

белый список загружается при первом запрос GET будет получен.

Однако я хочу изменить код таким образом, чтобы каждый белый загружался каждый 15 минут. Таким образом, если я внесу какие-либо изменения в файл белого списка (в WEB-INF/whitelist.txt), изменения отражаются вскоре после этого.

Я попытался с помощью ScheduledExecutorService с Runnable задачи, как указано здесь https://stackoverflow.com/a/2249068/1244329 где задача состоит только чтение файла. Однако задача внутри contextInitialized не выполняется. На самом деле, я не думаю, что я даже ударил метод contextInitialized.

Что я делаю неправильно? Как мне это реализовать?

ответ

1

Вы можете использовать задание cron для выполнения загрузки файла в белый список. См. Scheduling Tasks With Cron for Java.

Но у вас есть еще одна проблема: вы не можете изменить WEB-INF/whitelist.txt без развертывания обновленного кода приложения, поэтому вы не сможете обновить информацию о белых списках таким образом, не перезагружая приложение.

Вы можете сделать это, но сохранив файл где-то еще, где вы можете обновить его независимо от развертывания приложения, например, в GCS.

+0

Я думаю, что комбинация работы Cron и GCS может работать. Благодарю. – BlueChips23