Play Framework中的公共资源(几乎是有状态的)对象(bean)(与HTTP会话无关)



我有一个外部库,它需要很长的初始化时间(大约2分钟(,我需要在Play Framework Controller Action处理的几乎每个HTTP请求中调用它。有没有机制可以实例化这样的Scala对象(例如,放入一些全局范围、一些配置bean、一些专门的Cache(,并在控制器操作中根据请求检索它?

此对象不是完全有状态的对象。它是有状态的,这意味着它需要一些复杂的初始化。但当它准备好并运行时,它是无状态的——它可以在任何时间为任何请求提供服务(当然,可能需要一些排队,但我可以用一些技巧来实现它(,从这个意义上说,它是常见的资源。

我的Play应用程序完全是无状态的API,因此,没有HTTP会话。我在考虑在Play中使用Spring(我想这是可能的(,但Spring会话范围与HTTP会话和servlet有关,所以,这不是解决方案。

我还没有在Play中找到使用J2EE会话bean的用例,也许这是不可能的。

我正在阅读关于ThreadPools和Play框架的配置功能的文章,但目前我对Play框架是否能拥有这样的静态/预初始化/公共资源持怀疑态度。

上下文:提到的公共资源是相当重的数学库,可以做一些人工智能/自动推理,我计划使用Play框架围绕它创建API,然后使用Python机器学习脚本中的这个API。

我正在考虑使用Cache APIhttps://www.playframework.com/documentation/2.8.x/ScalaCache。当我能够报告我的努力结果时,我将进一步扩大我的回答。

最新更新