我如何部署Play!框架应用程序独立(无war),不包括在app文件夹中的源代码



我使用play-1.2.3.

我执行了以下步骤:

  • 在application.conf
  • 中设置为生产环境
  • 从myApp中删除app目录
  • play run myApp -Dprecompiled=true

对myApp的第一个请求导致TemplateNotFoundException。步骤是否正确?

由于公司的限制,我无法部署源代码。如果上面的不能工作,我可以考虑使用Jetty来部署。

更新
加亮是:

12:27:53,932 INFO  ~ Starting C:play-1.2.3samples-and-testschat
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

灯塔事件#806 https://play.lighthouseapp.com/projects/57987-play-framework/tickets/806已被报道。我做了一些调查,发现在1.2.3中,如果没有模板源存在,就不可能在预编译模式下运行。我已经对案例#806的问题做了更详尽的评论。

我也实现了一个修复,并把它推到我的玩的分叉git@github.com:WiredThing/play.git,我已经发出了一个拉请求到playframework,以防他们想拉它。

但是,重申一下,在stock play版本中,可以在预编译模式下删除java源,但是模板源必须存在,即使它从预编译文件中加载字节码。

这是一个hack,我还没有验证它超出一个模板的快速测试,但一个解决方案似乎是删除你的模板的内容,使文件仍然在技术上存在(所以Play是快乐的),但你的模板实际上没有暴露。

最新更新