#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 доволен), но ваши шаблоны фактически не раскрываются.