我在Google中的Java应用程序加载一个存储在/WEB-INF.中的白名单文件该文件在appengine-web.xml中定义为资源文件。
<resource-files>
<include path="/whitelist.txt" />
</resource-files>当接收到第一个GET请求时,将加载白名单。
但是,我想修改代码,以便每15分钟加载一次白名单()。这样,如果我对白名单文件做了任何更改(在WEB-INF/whitelist.txt),中,更改很快就会被反映出来)。
我尝试使用带有可运行任务的ScheduledExecutorService,如这里提到的,https://stackoverflow.com/a/2249068/1244329,其中的任务包括读取文件。但是,contextInitialized中的任务从未执行过。事实上,我认为我甚至没有触及contextInitialized方法。
我做错了什么?我应该如何实现这一点?
发布于 2017-02-09 20:28:28
您可以使用cron作业来执行白名单文件加载。见用Cron为Java调度任务。
但你还有另一个问题:如果不部署更新的应用程序代码,你就无法真正改变WEB-INF/whitelist.txt,因此,如果不重新启动应用程序,就不能以这种方式刷新白名单信息。
您可以这样做,但是可以将文件存储在其他地方,在那里您可以独立于应用程序部署更新它,例如在GCS中。
https://stackoverflow.com/questions/42145829
复制相似问题