zan*_*dev 5 java playback mustache
我们在生产中遇到了胡子游戏错误(amazon linux EC2 AMI),但在开发(MAC)中却没有,我们尝试使用jdk升级jvm,改用tomcat部署模型以匹配我们的开发环境.可能但没有任何工作.如有任何帮助,将不胜感激.我们在使用胡子的java和javascript中有很多共享代码,如果我们不得不在java端抛弃胡须,那么重写所有内容将是一件大事.
20:48:52,403错误〜
@6al2dd0po
Internal Server Error (500) for request GET /mystuff/people
Execution exception (In {module:mustache-0.2}/app/play/modules/mustache/MustacheTags.java around line 32)
NullPointerException occured : null
play.exceptions.JavaExecutionException
at play.templates.BaseTemplate.throwException(BaseTemplate.java:90)
at play.templates.GroovyTemplate.internalRender(GroovyTemplate.java:257)
at play.templates.Template.render(Template.java:26)
at play.templates.GroovyTemplate.render(GroovyTemplate.java:187)
at play.mvc.results.RenderTemplate.<init>(RenderTemplate.java:24)
at play.mvc.Controller.renderTemplate(Controller.java:660)
at play.mvc.Controller.renderTemplate(Controller.java:640)
at play.mvc.Controller.render(Controller.java:695)
at controllers.MyStuff.people(MyStuff.java:183)
at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:548)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:502)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:478)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:473)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161)
at Invocation.HTTP Request(Play!)
Caused by: java.lang.NullPointerException
at play.modules.mustache.MustacheTags._template(MustacheTags.java:32)
at play.modules.mustache.MustacheTags$_template.call(Unknown Source)
at /app/views/User/people.html.(line:22)
at play.templates.GroovyTemplate.internalRender(GroovyTemplate.java:232)
... 13 more
Run Code Online (Sandbox Code Playgroud)
看来问题出在线程本地。根据我的日志,在 Prod 中,会话是通过主线程初始化的。
[2012-06-30 18:35:38,102] INFO 10097[**main**] - Mustache module initialized
Run Code Online (Sandbox Code Playgroud)
然而,MustacheTag 尝试在请求期间使用各种线程进行访问。
[2012-06-30 17:48:44,669] INFO 66048[**play-thread-1**] - [{module:mustache-0.2}/app/play/modules/mustache/MustacheTags.java:46] _meta() :: MustachePlugin.session():null
Run Code Online (Sandbox Code Playgroud)
所以我像这样改变了 MustachePlugin 的实现。更改行注释掉了:
//private static ThreadLocal<MustacheSession> session_ = new ThreadLocal<MustacheSession>();
private static MustacheSession _session = null;
public static MustacheSession session(){
//return session_.get();
return _session;
}
public void onConfigurationRead(){
// some code
_session = new MustacheSession(compiler, root);
// some code
}
Run Code Online (Sandbox Code Playgroud)
现在在产品模式下运行良好!我看不出为什么它应该首先位于 ThreadLocal 中,因为会话在启动时初始化!
| 归档时间: |
|
| 查看次数: |
260 次 |
| 最近记录: |