2011-10-21 6 views
10

Sto usando play-1.2.3.Come posso distribuire il gioco! applicazione framework standalone (nessuna guerra) e non includere la fonte nella cartella app?

Ho effettuato le seguenti operazioni:

  • set per la produzione in application.conf
  • gioco precompilare myApp
  • directory rimuovere app dalla myApp
  • gioco eseguire myApp -Dprecompiled = true

La prima richiesta a myApp genera una eccezione TemplateNotFoundException. I passi sono corretti?

Impossibile distribuire la sorgente a causa di restrizioni aziendali. Potrei esaminare l'implementazione utilizzando il Jetty se quanto sopra non funzionerà.

Aggiornamento
Stacktrace è:

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

I modelli sono disponibili anche come parte della directory precompilata. Questo dovrebbe funzionare. potresti incollare lo stacktrace? – basav

+0

Riesci a vedere qualche file html nella directory tmp/bytecode? Hai provato a eliminare la directory app dopo aver avviato l'app? – emt14

+0

In tmp/bytecode/PROD vedo un po 'di HTML. L'esecuzione dell'applicazione e l'eliminazione della directory dell'app non funzionano. –

risposta

4

questo è stato riportato sul faro come caso # 806 https://play.lighthouseapp.com/projects/57987-play-framework/tickets/806. Ho svolto alcune ricerche e ho scoperto che, in 1.2.3, non è possibile eseguire in modalità precompilata senza che sia presente la sorgente del modello. Ho fatto commenti più estesi sul problema relativo al caso # 806.

Ho anche implementato una correzione e l'ho spinta alla biforcazione all'indirizzo [email protected]: WiredThing/play.git e ho emesso una richiesta di pull per riprodurre i file nel caso in cui volessero inserirli.

ma, per ribadire, nel rilascio Stock Play è possibile rimuovere la sorgente Java in modalità precompilata, ma le fonti modelli deve essere presenti, anche se si carica il bytecode dai file precompilati.

4

È un po 'un hack e non l'ho verificato oltre un rapido test con un modello, ma una soluzione sembra cancellare il contenuto dei tuoi modelli in modo che i file siano ancora tecnicamente esistenti (quindi Play è felice) , ma i tuoi modelli non vengono effettivamente esposti.

Problemi correlati