Play framework 1.2.5 应用启动慢

Posted

技术标签:

【中文标题】Play framework 1.2.5 应用启动慢【英文标题】:Play framework 1.2.5 application slow startup 【发布时间】:2013-01-27 08:25:05 【问题描述】:

我正在使用 Play 框架 1.2.5 和 Hibernate 3.25 来开发我的 Web 应用程序。我在应用程序启动时遇到问题,它非常慢:(

对于任何 Java EE servlet 驱动的应用程序,我们使用ServletContextListener 来初始化会话工厂(这确实是一项耗时的工作)。部署应用程序后,会话工厂将被初始化,所有这些都必须在应用程序准备好供最终用户使用之前完成。这样,当用户触发第一个请求时,第一个请求的响应时间会更快。

但是,对于 Play 框架不遵循任何 servlet 架构。因此不确定如何实现类似于ServletContextListener 的东西,它将在应用程序准备好供最终用户使用之前创建所有会话工厂。

没有这个,第一次申请第一次请求真的很慢。

我确信 Play Framework 中可能也有一些东西会做同样的事情,但我不知道。

请让我知道这件事。

【问题讨论】:

【参考方案1】:

您可以使用 Job 来初始化您的应用程序。 例如,您可以有一个带有 @OnApplicationStart 注释的引导作业,该作业将负责加载您的静态数据或初始化您的缓存或工厂。

@OnApplicationStart
public class Bootstrap extends Job 

    public void doJob() 
        //Load static data
        //Initialise cache
        //Initialise factories
        ...
        // ready to serve application
    

【讨论】:

【参考方案2】:

您可能在开发模式下运行应用程序,在第一个请求时,所有内容都被延迟编译和初始化。生产模式在实际启动服务器之前编译所有内容。见http://www.playframework.org/documentation/1.2.5/production

【讨论】:

【参考方案3】:

JB 应该是正确的。简而言之,您可以使用--%prod 选项启动服务器:

play run --%prod

play start --%prod

【讨论】:

以上是关于Play framework 1.2.5 应用启动慢的主要内容,如果未能解决你的问题,请参考以下文章

如何在 play framework 1.2.5 中验证 REST

无法启动 Play Framework 应用程序

Play Framework 1.2.5 - 添加到 <script> 标签

休眠 3.2.5 与 Play Framework 1.2.5

启动自动测试时 Play Framework 中的配置日志记录

Play Framework 1.2.5.1 和 1.2.6 版本之间的区别?