2012-09-06 71 views
1

調用JasperFillManager.fillReport()時,我們得到以下異常。令人困惑的是,它發生在我們的「生產」環境中,但在我們的測試環境中正常工作。Jasper Reports + WebSphere 7,ExceptionInInitializerError異常

顯然這個問題發生在一個靜態屬性的初始化過程中,我們認爲它可能與多線程Jasper有關(ThreadLocal-stuff)。

我們已經嘗試了一些建議已經指出的java.awt.headless = true J​​VM設置,但沒有改變。我們真的需要對疑難解答提出建議,或者在一個環境中可能會導致這種情況的線索,而不是另一個環境中的線索。據我們所知,他們是一樣的,但顯然東西是不同的,我們沒有想法檢查的東西。 所以這個問題真的是... 我們如何解決這樣的問題?

碧玉報告4.7(也有3.7發生)

的Java 1.6,Flex的(在服務器上GraniteDS的)/春/休眠
(我們沒有使用EJB,我們通過一個簡單的戰爭文件部署)

FunctionName: com.ibm.ws.webcontainer.servlet.ServletWrapper.service 
SourceId: com.ibm.ws.webcontainer.servlet 
Category: SEVERE 
ExtendedMessage: SRVE0068E: Uncaught exception created in one of the service methods of the servlet ReportServlet in application B 
AO. Exception created : java.lang.ExceptionInInitializerError 
at java.lang.J9VMInternals.initialize(J9VMInternals.java:222) 
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:121) 
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:88) 
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:103) 
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:61) 
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:153) 
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:55) 
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446) 
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:407) 
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:824) 
at gov.bao.util.JasperWork.execute(JasperWork.java:36) 
at org.hibernate.impl.SessionImpl.doWork(SessionImpl.java:1997) 
at gov.bao.dao.ReportDao.generateJasperReport(ReportDao.java:246) 
at gov.bao.service.ReportService.getTracerReport(ReportService.java:258) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
at java.lang.reflect.Method.invoke(Method.java:611) 
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
at $Proxy65.getTracerReport(Unknown Source) 
at gov.bao.servlet.ReportServlet.doGet(ReportServlet.java:110) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:718) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131) 
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:359) 
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:275) 
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) 
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) 
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:344) 
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:272) 
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:81) 
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908) 
at com.ib***BUFFER OVERFLOW***Y 
Trace: 2012/09/06 08:43:55.556 01 t=8C9CF0 c=UNK key=P8 (00000011) 
Description: Log Java Message 
Message: SRVE0068E: Uncaught exception created in one of the service methods of the servlet ReportServlet in application BAO. Exce 
ption created : java.lang.ExceptionInInitializerError 
at java.lang.J9VMInternals.initialize(J9VMInternals.java:222) 
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:121) 
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:88) 
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:103) 
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:61) 
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:153) 
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:55) 
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446) 
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:407) 
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:824) 
at gov.bao.util.JasperWork.execute(JasperWork.java:36) 
at org.hibernate.impl.SessionImpl.doWork(SessionImpl.java:1997) 
at gov.bao.dao.ReportDao.generateJasperReport(ReportDao.java:246) 
at gov.bao.service.ReportService.getTracerReport(ReportService.java:258) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
at java.lang.reflect.Method.invoke(Method.java:611) 
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
at $Proxy65.getTracerReport(Unknown Source) 
at gov.bao.servlet.ReportServlet.doGet(ReportServlet.java:110) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:718) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131) 
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:359) 
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:275) 
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) 
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) 
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:344) 
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:272) 
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:81) 
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908) 
at com.ib***BUFFER OVERFLOW***Y com.ibm.ws.webcontainer.servlet.ServletWrapper.service 
+1

通過使用jasper報告的「javaflow」版本以及Apache commons-javaflow.jar解決了這個問題。從未弄清楚爲什麼QA能夠正常工作...... – Mifune

回答

0

要解決此問題,您需要獲取靜態初始化程序引發的原始異常。通常情況下,異常鏈接到ExceptionInInitializerError,這是第一次嘗試加載包含靜態初始化程序的類。

因此,你需要做兩件事情:

  1. 確保您能夠獲得整個堆棧跟蹤。您發佈的堆棧跟蹤似乎被截斷(請參閱***BUFFER OVERFLOW***標記)。
  2. 獲取第一次嘗試初始化類時引發的異常的堆棧跟蹤。如有必要,重新啓動應用程序或服務器。
0

這篇文章的作者原來的答案(@Mifune)

通過增加兩個庫解決:

  • JasperReports的-javaflow.jar
  • 阿帕奇公地javaflow.jar