Как я могу развернуть Play! автономное приложение framework (без войны) и не включать исходный код в папку приложения?

#playframework

#playframework

Вопрос:

Я использую play-1.2.3.

Я выполнил следующие шаги:

  • установите значение production в application.conf
  • play предварительно скомпилируйте MyApp
  • удалить каталог приложений из MyApp
  • play запустить MyApp -Dprecompiled = true

Первый запрос к MyApp приводит к исключению TemplateNotFoundException. Правильные ли шаги?

Я не могу развернуть исходный код из-за ограничений компании. Я мог бы рассмотреть возможность развертывания с помощью Jetty, если вышеуказанное не сработает.

Обновить
Stacktrace — это:

 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
  

Комментарии:

1. Шаблоны также доступны как часть предварительно скомпилированного directoy. Это должно сработать. не могли бы вы вставить трассировку стека?

2. Можете ли вы видеть какие-либо HTML-файлы в вашем каталоге tmp / bytecode? Вы пытались удалить каталог приложения после запуска приложения?

3. В tmp / bytecode / PROD я вижу некоторый HTML. Запуск приложения с последующим удалением каталога приложений не работает.

4. Получаем следующее: Шаблон не найден (в / app/ controllers / Application . java вокруг строки 14) Шаблон Application/index.html не существует.

Ответ №1:

Об этом сообщалось в lighthouse как о случае # 806 https://play .lighthouseapp.com/projects/57987-play-framework/tickets/806 . Я провел некоторое расследование и обнаружил, что в версии 1.2.3 невозможно запустить в предварительно скомпилированном режиме без присутствия источника шаблона. Я сделал более подробные комментарии о проблеме в случае # 806.

Я также внедрил исправление и перенес его в свой раздел play на git@github.com:WiredThing/play.git и я отправил запрос на извлечение в playframework на случай, если они захотят его использовать.

Но, чтобы повторить итерацию, в стандартной версии play можно удалить исходный код Java в предварительно скомпилированном режиме, но исходные коды шаблонов должны присутствовать, даже если он загружает байт-код из предварительно скомпилированных файлов.

Ответ №2:

Это своего рода взлом, и я не проверял его, кроме быстрого тестирования с одним шаблоном, но одним из обходных путей, по-видимому, является удаление содержимого ваших шаблонов, чтобы технически файлы все еще существовали (так что Play доволен), но ваши шаблоны фактически не раскрываются.