2009-04-16 5 views
2

Windows의 Websphere 6.1.0.19에 배포 된 웹 응용 프로그램이 있습니다. 우리는 때때로 우리의 보고서 중 일부에서이 ConcurrentModificationException을 볼 수 있습니다. 우리는 JasperReports 2.0.5를 생산 중에 사용하고 있습니다. 모든 스레딩 문제를 해결 한 버전 3.5 지금JasperReports의 java.util.ConcurrentModificationException

 
java.util.ConcurrentModificationException 
     at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:464) 
     at java.util.AbstractList$Itr.next(AbstractList.java:435) 
     at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.next(JRBeanCollectionDataSource.java:91) 
     at com.advtechgrp.bop.medical.reports.core.implementation.MedicalReportDataSourceImpl.next(MedicalReportDataSourceImpl.java:61) 
     at net.sf.jasperreports.engine.fill.JRFillDataset.advanceDataSource(JRFillDataset.java:830) 
     at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:748) 
     at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1438) 
     at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:111) 
     at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:895)  at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:817) 
     at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89) 
     at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601) 
     at com.advtechgrp.bop.medical.reports.core.MedicalReportBase.getReportList(MedicalReportBase.java:160) 
     at com.advtechgrp.bop.medical.reports.core.implementation.MedicalReportCreator.createJasperExporter(MedicalReportCreator.java:275) 
     at com.advtechgrp.bop.medical.reports.core.implementation.MedicalReportCreator.createExporter(MedicalReportCreator.java:228) 
     at com.advtechgrp.bop.medical.reports.core.implementation.MedicalReportCreator.createReportUnsafe(MedicalReportCreator.java:196) 
     at com.advtechgrp.bop.medical.reports.core.implementation.MedicalReportCreator.createReport(MedicalReportCreator.java:80) 
     at com.advtechgrp.bop.medical.reports.core.web.MedicalReportServlet.doPost(MedicalReportServlet.java:132) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 
     at com.ibm.ws.cache.servlet.ServletWrapper.serviceProxied(ServletWrapper.java:282) 
     at com.ibm.ws.cache.servlet.CacheHook.handleFragment(CacheHook.java:459) 
     at com.ibm.ws.cache.servlet.CacheHook.handleServlet(CacheHook.java:265) 
     at com.ibm.ws.cache.servlet.ServletWrapper.service(ServletWrapper.java:262) 
     at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1075) 
     at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1016) 
     at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:118) 
     at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87) 
     at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:771) 
     at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679) 
     at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:546) 
     at com.ibm.ws.wswebcontainerservlet.ServletWrapper.handleRequest(ServletWrapper.java:478) 
     at com.ibmws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:321) 
     at com.advtechgrp.bop.medical.web.filter.UrlRewritingFilter.doFilter(UrlRewritingFilter.java:132) 
     at com.ibm.ws.webcontainer.filterFilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
     at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130) 
     at com.advtechgrp.bop.medical.web.filter.GZIPFilter.doFilter(GZIPFilter.java:36) 
     at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
     at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130) 
     at com.advtechgrp.bop.medical.web.filter.WebLogFilter.doFilter(WebLogFilter.java:69) 
     at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
     at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130) 
     at com.advtechgrp.bop.medical.web.filter.SecurityFilter.doFilter(SecurityFilter.java:174) 
     at com.ibm.ws.webcontainerfilter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
     at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130) 
     at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87) 
     at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:771) 
     at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679) 
     at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:546) 
     at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) 
     at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90) 
     at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:744) 
     at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1455) 
     at com.ibmws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:115) 
     at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458) 
     at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387) 
     at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102) 
     at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) 
     at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
     at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
     at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) 
     at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195) 
     at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743) 
     at com.ibmio.async.ResultHandler$2.run(ResultHandler.java:873) 
     at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473) 

감사합니다,

답변

1

JasperReports를한다, 그래서 변화가 2.0.5 (버전)을 게시 여부를 확인 가치가있을 수 있습니다 전체 스택 트레이스는 다음입니다 . 현재 현재 운영 문제가 해결되지는 않지만 새 버전으로 다시 빌드 할 수 있습니다.

모든 것을 말하면서 (그리고 JasperReports에 익숙하지 않은) 나는 클라이언트 스레드 코드를 의심 할 것입니다.

2

이는 반복기를 사용하는 동안 반복기의 백업 스토어가 변경되어 발생합니다. 이것은 쓰레딩과 관련된 동시성 문제가 아니기 때문에 단일 쓰레드에서도 쉽게 처리 할 수 ​​있습니다. 이 question

당신의 가장 큰 문제에

더 자세한 설명은 지금 당신 또는 재스퍼 코드의 버그로 고칠 경우 일 것이다.

관련 문제