2011-10-21 11 views
10

Estoy usando play-1.2.3.¿Cómo puedo implementar Play! aplicación de marco independiente (sin guerra) y no incluir la fuente en la carpeta de la aplicación?

he llevado a cabo los siguientes pasos:

  • conjunto de la producción en application.conf juego
  • precompilación myApp directorio de aplicación remove
  • de myApp
  • juego ejecutar myApp -Dprecompiled = true

La primera solicitud de resultados myApp en una excepción TemplateNotFoundException. Son los pasos correctos?

No puedo implementar origen debido a restricciones de la compañía. Podría analizar la implementación usando Jetty si lo anterior no funciona.

actualización
StackTrace es:

12:27:53,932 INFO ~ Starting C:\play-1.2.3\samples-and-tests\chat 
12:27:54,008 INFO ~ Application is precompiled 
12:27:54,553 INFO ~ Application 'chat' is now started ! 
12:27:54,647 INFO ~ Listening for HTTP on port 9000 ... 
12:28:02,466 ERROR ~ 

@686d104bp 
Internal Server Error (500) for request GET/

Execution exception 
NullPointerException occured : null 

play.exceptions.JavaExecutionException 
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:229) 
    at Invocation.HTTP Request(Play!) 
Caused by: java.lang.NullPointerException 
    at play.exceptions.TemplateNotFoundException.<init>(TemplateNotFoundException.java:25) 
    at play.mvc.Controller.renderTemplate(Controller.java:666) 
    at play.mvc.Controller.renderTemplate(Controller.java:639) 
    at play.mvc.Controller.render(Controller.java:694) 
    at controllers.Application.index(Application.java:14) 
    at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:546) 

    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:500) 
    at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:476) 

    at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:471) 

    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:159) 
    ... 1 more 
+0

Las plantillas también están disponibles como parte del directorio precompilado. Esto debería funcionar. podrías pegar la stacktrace? – basav

+0

¿Has visto algún archivo html en tu directorio tmp/bytecode? ¿Has intentado eliminar el directorio de la aplicación después de iniciar la aplicación? – emt14

+0

En tmp/bytecode/PROD, veo algo de HTML. Ejecutar la aplicación y luego eliminar el directorio de la aplicación no funciona. –

Respuesta

4

Esto ha sido informado sobre el faro como el caso # 806 https://play.lighthouseapp.com/projects/57987-play-framework/tickets/806. Hice una investigación y descubrí que, en 1.2.3, no es posible ejecutar en modo precompilado sin que esté presente la fuente de la plantilla. He hecho comentarios más extensos sobre el problema en el caso # 806.

También he implementado una solución y la he lanzado a mi juego en [email protected]: WiredThing/play.git y he emitido una solicitud de extracción para playframework en caso de que quieran instalarla.

pero, para reiterar, en la versión de la obra, es posible retirar la fuente de java en el modo precompilado, pero las fuentes plantillas debe estar presente, a pesar de que carga el código de bytes de los archivos precompilados.

4

Es un truco, y no lo he verificado más allá de una prueba rápida con una plantilla, pero parece que una solución es eliminar el contenido de las plantillas para que los archivos aún existan técnicamente (para Play es feliz) , pero tus plantillas en realidad no quedan expuestas.

Cuestiones relacionadas