2010-11-11 15 views
6

Tengo una pequeña aplicación web configurada con Guice, Jersey y EclipseLink, y ejecuto esta aplicación en embarcadero (8.0.0.M1) durante el desarrollo. Hay alrededor de 10 (pequeñas) clases administradas por JPA (entidades e incrustaciones), y unas 20 clases en total.Acelerar el inicio de la aplicación en Jetty

El inicio inicial toma 15 segundos + 5 segundos para las primeras solicitudes. Parece que JPA está trabajando en la primera solicitud, ya que tengo habilitada la estrategia de generación de tablas "crear" y veo alguna salida JPA de Maven en la primera solicitud.

Una recarga tarda unos 10 segundos y la primera solicitud después de la recarga lleva de 3 a 4 segundos.

Puede pensar que el tiempo de inicio no es tan malo, pero me pregunto si podría acelerar la puesta en marcha para trabajar con mayor fluidez como con Django. Alguna idea para el ajuste de inicio?

+0

¿Es su preocupación el tiempo de inicio per se, o que el primer usuario tiene que pagar el costo de inicio? Si es el último, puede hacer que su aplicación se envíe solicitudes al inicio solo para calentarlo. Luego, el primer usuario ve un tiempo de respuesta normal. –

+0

Mi preocupación es el tiempo de inicio durante el desarrollo. Los reinicios son relativamente raros en la producción, por lo que aceptaría que el primer usuario debe esperar unos segundos. – deamon

+1

Si reinicia debido a cambios de código (no cambios de esquema), intente evitar reiniciar (casi) completamente con JRebel (http://www.zeroturnaround.com/jrebel/). No es gratis, pero ahorra mucho tiempo (de ninguna manera estoy afiliado a ellos). – DaGGeRRz

Respuesta

2

Me temo que si no está preparado para eliminar la estrategia de creación de la mesa, tendrá que tolerar dichos tiempos de carga. Básicamente, cada vez que inicie su aplicación, eliminará/creará/verificará las tablas y emitirá las sentencias DDL correctas para que coincida con las entidades de su paquete.

Suponiendo que ha terminado de definir sus entidades y está trabajando en algún código de lógica de negocios, puede crear la base de datos una vez y simplemente volver a utilizar su configuración inicial.

0

Imagino que está utilizando Jetty para el desarrollo rápido de aplicaciones (RAD) y desea ver y probar los cambios lo más rápido posible. Si no existe un requisito "persistente" real en la base de datos de su entorno de RAD, puede intentar cambiar a un motor de DB de im-memory. Los motores de DB como HSQL le permiten girar tablas nuevas (y otras estructuras) muy rápidamente en comparación con los motores DB de calidad de producción real. Esto requeriría que utilice un ORM porque el SQL de HSQL es muy diferente de la mayoría de las otras bases de datos, pero parece que ya está utilizando JPA, por lo que no debería ser difícil.

La única alternativa que veo es usar una base de datos que tenga su esquema ya creado adecuadamente y no dejarlo caer cada vez.

+0

Ya estoy usando un DB en memoria (Derby). – deamon

Cuestiones relacionadas