JBoss4.0.5.GAを使用するJavaEEアプリケーションで一見ランダムなNullPointerExceptionsが発生します。展開後、特定のページをロードすると500エラーが発生します。
org.apache.jasper.JasperException: Unable to compile class for JSP
根本的な原因は次のとおりです。
java.lang.NullPointerException
java.util.Hashtable.put(Hashtable.java:396)
org.apache.jasper.compiler.Generator$TagHandlerInfo.<init>(Generator.java:3737)
org.apache.jasper.compiler.Generator$GenerateVisitor.getTagHandlerInfo(Generator.java:2130)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1599)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1705)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1705)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1705)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1705)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Generator.generate(Generator.java:3320)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:305)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
sun.reflect.GeneratedMethodAccessor385.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:592)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)
java.security.AccessController.doPrivileged(Native Method)
atg.servlet.pipeline.TailPipelineServlet.service(TailPipelineServlet.java:90)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.servlet.pipeline.DispatcherPipelineServletImpl.service(DispatcherPipelineServletImpl.java:202)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.servlet.http.CookieBufferServlet.service(CookieBufferServlet.java:97)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.userprofiling.ExpiredPasswordServlet.service(ExpiredPasswordServlet.java:356)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.servlet.pipeline.MimeTyperPipelineServlet.service(MimeTyperPipelineServlet.java:206)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.droplet.DropletEventServlet.service(DropletEventServlet.java:565)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.servlet.sessionsaver.SessionSaverServlet.service(SessionSaverServlet.java:2442)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.commerce.order.CommerceCommandServlet.service(CommerceCommandServlet.java:128)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.commerce.promotion.PromotionServlet.service(PromotionServlet.java:191)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.userprofiling.AccessControlServlet.service(AccessControlServlet.java:602)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.userprofiling.PageEventTriggerPipelineServlet.service(PageEventTriggerPipelineServlet.java:169)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.userprofiling.SessionEventTrigger.service(SessionEventTrigger.java:461)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.userprofiling.ProfileRequestServlet.service(ProfileRequestServlet.java:477)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.servlet.pipeline.DynamoPipelineServlet.service(DynamoPipelineServlet.java:469)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.servlet.pipeline.PathAuthenticationPipelineServlet.service(PathAuthenticationPipelineServlet.java:370)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.userprofiling.sso.PassportServlet.service(PassportServlet.java:561)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.servlet.security.ThreadUserBinderServlet.service(ThreadUserBinderServlet.java:91)
atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:116)
atg.servlet.pipeline.HeadPipelineServlet.passRequest(HeadPipelineServlet.java:1099)
atg.servlet.pipeline.HeadPipelineServlet.service(HeadPipelineServlet.java:781)
atg.servlet.pipeline.PipelineableServletImpl.service(PipelineableServletImpl.java:231)
atg.filter.dspjsp.PageFilter.doFilter(Unknown Source)
sun.reflect.GeneratedMethodAccessor412.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:592)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:217)
java.security.AccessController.doPrivileged(Native Method)
com.quebecor.commerce.filter.OpenSessionFilter.doFilter(OpenSessionFilter.java:49)
sun.reflect.GeneratedMethodAccessor411.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:592)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:217)
java.security.AccessController.doPrivileged(Native Method)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
sun.reflect.GeneratedMethodAccessor410.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:592)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:217)
- これは繰り返し発生することはありません。夜間の間に、エラーが消えることがあります。
- 場合によっては、(再デプロイせずに)サーバーを再起動するだけで、エラーが解消されることがあります。
- デプロイメント間で、エラーが発生するページが変更される場合があります。
- これは開発マシンでは発生しませんが、ナイトリービルドと実稼働前の環境では発生します。開発では発生しないため、直接デバッグすることはできません...
- 夜間および製品前のデプロイメントでは、各デプロイメントで作業フォルダーとtmpフォルダーが完全に空になります。
JBoss4.0.5.GAとJava1.5.0_11を使用しています。Tiles2.0.6とATGEコマースフレームワーク2007.1も使用しています。プロジェクトの依存関係をアップグレード、置換、または削除していません。
興味深いことに、これは、新しい独立したタイルテンプレートに基づいて、JSPの新しいセットを最初から開発したサイトの新しい部分でのみ発生しています。サイトの既存のセクションには、これらのエラーは表示されません。
JSPCを使用してJSPページをプリコンパイルしてみました( http://tomcat.apache.org/tomcat-5.5-doc/jasper-howto.html#Web%20Application%20Compilationの手順を使用)。すべてのページが正常にコンパイルされます。
私は少し途方に暮れています。誰かが以前にこのエラーを見たことがありますか?ヒントやアイデアは大歓迎です!