加速Jetty上的应用程序启动

时间:2010-11-11 11:43:16

标签: java performance jpa jetty guice

我有一个配置了GuiceJerseyEclipseLink的小型Web应用程序,并在开发期间在jetty(8.0.0.M1)上运行此应用程序。大约有10个(小)JPA管理类(实体和嵌入式),总共约20个类。

第一次请求的初始启动需要15秒+5秒。似乎JPA正在处理第一个请求,因为我启用了表生成策略“create”,并在第一次请求时看到了Maven的一些JPA输出。

重新加载大约需要10秒钟,重新加载后的第一个请求大约需要3到4秒。

你可能会认为,启动时间并不是那么糟糕,但我想知道我是否可以像Django一样加速创业工作。启动调优的想法吗?

2 个答案:

答案 0 :(得分:2)

我担心如果你不准备删除表创建策略,你将不得不忍受这样的加载时间。实质上,每次启动应用程序时,它都会删除/创建/验证表并发出正确的DDL语句,使其与包中的实体匹配。

假设您已完成定义实体并且正在处理某些业务逻辑代码,您可以创建一次数据库,然后重新使用初始设置。

答案 1 :(得分:0)

我想您正在使用Jetty进行快速应用程序开发(RAD),并且您希望尽快查看并测试任何更改。如果您的RAD环境数据库中没有实际的“持久”要求,您可以尝试转移到内存数据库引擎。与实际生产质量数据库引擎相比,数据库引擎就像HSQL一样,可以非常快速地启动新表(和其他结构)。这需要您使用ORM,因为HSQL的SQL与大多数其他数据库非常不同,但听起来您已经在使用JPA,所以这应该不难。

我看到的唯一选择是使用一个数据库,它已经适当地创建了它的模式,而不是每次都丢弃它。