홈>
Windows에서 Websphere 6.1.0.19에 배포 된 웹 응용 프로그램이 있습니다. 때때로 일부 보고서에서이 ConcurrentModificationException이 발생합니다. 프로덕션 환경에서 JasperReports 2.0.5를 사용하고 있습니다. 전체 스택 추적은 다음과 같습니다.
java.util.ConcurrentModificationException java.util.AbstractList $Itr.checkForComodification (AbstractList.java:464)에서 java.util.AbstractList $Itr.next (AbstractList.java:435)에서 net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.next (JRBeanCollectionDataSource.java:91)에서 com.advtechgrp.bop.medical.reports.core.implementation.MedicalReportDataSourceImpl.next (MedicalReportDataSourceImpl.java:61) net.sf.jasperreports.engine.fill.JRFillDataset.advanceDataSource (JRFillDataset.java:830)에서 net.sf.jasperreports.engine.fill.JRFillDataset.next (JRFillDataset.java:748)에서 net.sf.jasperreports.engine.fill.JRBaseFiller.next (JRBaseFiller.java:1438) net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport (JRVerticalFiller.java:111) net.sf.jasperreports.engine.fill.JRBaseFiller.fill (JRBaseFiller.java:895)에서 net.sf.jasperreports.engine.fill.JRBaseFiller.fill (JRBaseFiller.java:817)에서 net.sf.jasperreports.engine.fill.JRFiller.fillReport (JRFiller.java:89)에서 net.sf.jasperreports.engine.JasperFillManager.fillReport (JasperFillManager.java:601) com.advtechgrp.bop.medical.reports.core.MedicalReportBase.getReportList (MedicalReportBase.java:160)에서 com.advtechgrp.bop.medical.reports.core.implementation.MedicalReportCreator.createJasperExporter (MedicalReportCreator.java:275)에서 com.advtechgrp.bop.medical.reports.core.implementation.MedicalReportCreator.createExporter (MedicalReportCreator.java:228) com.advtechgrp.bop.medical.reports.core.implementation.MedicalReportCreator.createReportUnsafe (MedicalReportCreator.java:196)에서 com.advtechgrp.bop.medical.reports.core.implementation.MedicalReportCreator.createReport (MedicalReportCreator.java:80) com.advtechgrp.bop.medical.reports.core.web.MedicalReportServlet.doPost (MedicalReportServlet.java:132) javax.servlet.http.HttpServlet.service (HttpServlet.java:763)에서 javax.servlet.http.HttpServlet.service (HttpServlet.java:856)에서 com.ibm.ws.cache.servlet.ServletWrapper.serviceProxied (ServletWrapper.java:282)에서com.ibm.ws.cache.servlet.CacheHook.handleFragment (CacheHook.java:459)에서 com.ibm.ws.cache.servlet.CacheHook.handleServlet (CacheHook.java:265)에서 com.ibm.ws.cache.servlet.ServletWrapper.service (ServletWrapper.java:262)에서 com.ibm.ws.webcontainer.servlet.ServletWrapper.service (ServletWrapper.java:1075)에서 com.ibm.ws.webcontainer.servlet.ServletWrapper.service (ServletWrapper.java:1016)에서 com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter (WebAppFilterChain.java:118)에서 com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter (WebAppFilterChain.java:87)에서 com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter (WebAppFilterManager.java:771)에서 com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter (WebAppFilterManager.java:679)에서 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:546)에서 com.ibm.ws.wswebcontainerservlet.ServletWrapper.handleRequest (ServletWrapper.java:478)에서 com.ibmws.webcontainer.webapp.WebAppRequestDispatcher.forward (WebAppRequestDispatcher.java:321)에서 com.advtechgrp.bop.medical.web.filter.UrlRewritingFilter.doFilter (UrlRewritingFilter.java:132) com.ibm.ws.webcontainer.filterFilterInstanceWrapper.doFilter (FilterInstanceWrapper.java:190)에서 com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter (WebAppFilterChain.java:130)에서 com.advtechgrp.bop.medical.web.filter.GZIPFilter.doFilter (GZIPFilter.java:36)에서 com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter (FilterInstanceWrapper.java:190)에서 com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter (WebAppFilterChain.java:130)에서 com.advtechgrp.bop.medical.web.filter.WebLogFilter.doFilter (WebLogFilter.java:69)에서 com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter (FilterInstanceWrapper.java:190)에서 com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter (WebAppFilterChain.java:130)에서 com.advtechgrp.bop.medical.web.filter.SecurityFilter.doFilter (SecurityFilter.java:174)에서 com.ibm.ws.webcontainerfilter.FilterInstanceWrapper.doFilter (FilterInstanceWrapper.java:190)에서 com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter (WebAppFilterChain.java:130)에서com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter (WebAppFilterChain.java:87)에서 com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter (WebAppFilterManager.java:771)에서 com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter (WebAppFilterManager.java:679)에서 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:546)에서 com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:478)에서 com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest (CacheServletWrapper.java:90)에서 com.ibm.ws.webcontainer.WebContainer.handleRequest (WebContainer.java:744)에서 com.ibm.ws.wswebcontainer.WebContainer.handleRequest (WebContainer.java:1455)에서 com.ibmws.webcontainer.channel.WCChannelLink.ready (WCChannelLink.java:115)에서 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination (HttpInboundLink.java:458)에서 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation (HttpInboundLink.java:387)에서 com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete (HttpICLReadCallback.java:102)에서 com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted (AioReadCompletionListener.java:165)에서 com.ibm.io.async.AbstractAsyncFuture.invokeCallback (AbstractAsyncFuture.java:217)에서 com.ibm.io.async.AsyncChannelFuture.fireCompletionActions (AsyncChannelFuture.java:161)에서 com.ibm.io.async.AsyncFuture.completed (AsyncFuture.java:136)에서 com.ibm.io.async.ResultHandler.complete (ResultHandler.java:195)에서 com.ibm.io.async.ResultHandler.runEventProcessingLoop (ResultHandler.java:743)에서 com.ibmio.async.ResultHandler $2.run (ResultHandler.java:873)에서 com.ibm.ws.util.ThreadPool $Worker.run (ThreadPool.java:1473)에서
감사합니다.
톰
-
답변 # 1
-
답변 # 2
JasperReports는 현재 3.5 버전이므로 변경 사항이 2.0.5 이후인지 여부를 확인하는 것이 좋습니다. (귀하의 버전)에서 스레딩 문제를 해결했습니다. 그것은현재생산 문제를 해결하지는 못하지만 새로운 버전으로 재 구축 할 수도 있습니다
.JasperReports에 익숙하지 않다고 말하면서 클라이언트 스레드 코드가 의심됩니다.
관련 자료
- api - jasperreports server - rest를 통해 표시되지 않는 보고서
- java - jasperreports - jsp 페이지에서 보고서를 호출하는 방법
- spring - 임의의 javautilconcurrentmodificationexception - null
- HashMap에서 이중 반복자로 'javautilConcurrentModificationException'을 수정하는 방법
- java - JasperReports가 PDF 파일을 내보낼 수 없습니다
- jasper reports - jasperreports - 축 간격을 설정하는 방법?
- multithreading - 목록에서 첫 번째 요소를 제거하려고 할 때 javautilConcurrentModificationException 가져 오기
- jasper reports - jasperreports 및 microsoft word - 정렬 된 텍스트 정렬
- ArrayList에서 요소를 반복하고 제거 할 때 javautilConcurrentModificationException을 피하는 방법
- java - x11이없는 linux 서버에서는 jasperreports가 작동하지 않습니다 - "그래픽 환경 초기화 오류"
- jasper reports - JasperReports를 사용하여 생성 된 PDF의 들여 쓰기
- JasperReports jrxml 파일에서 루프를 사용하는 방법은 무엇입니까?
- firebase - 안드로이드 스튜디오에서 javautilConcurrentModificationException?
- arraylist - List에 추가 할 때 javautilConcurrentModificationException이 발생 함
- jasper reports - JasperReports와 결합 된 JFreeChart 차트 모양
- jasper reports - jasperreports에서 날짜를 hh - mm : ss 형식으로 표시하는 방법은 무엇입니까?
- jasper reports - Json으로 JasperReports 내보내기가 "null"을 올바르게 처리하지 못함
- java - JasperReports 소스 텍스트의 표현식 평가 오류
- 멀티 스레딩 중 스레드 "main"javautilConcurrentModificationException의 예외
반복자가 사용되는 동안 반복자의 백업 저장소가 변경되어 발생합니다. 단일 스레드에서도 쉽게 수행 할 수 있으므로 스레딩과 관련된 동시성 문제는 아닙니다.
이 질문에 대한 자세한 설명
지금 가장 큰 문제는 Jasper 코드의 버그 또는 버그로 해결할 수있는 문제입니다.