iTextPDF 버전 5.4.2를 사용하고 있으며 부하가 많은 경우 스레드 경쟁 문제가 있습니다. 나는 IBM JDK 6을 사용하고있다.iText PDF - 스레드 경쟁
여러 개의 독립적 인 스레드가 다른 pdf 파일을 생성하려고 할 때 이것은 문제가된다. SecureRandom.nextBytes에서 경합이 발생한다. 모든 스레드가이 객체를 잠그기 위해 동기화되기 때문에. 아래는 쓰레드 덤프입니다
*"WebContainer : 0" daemon prio=3 tid=0x007ffc00 nid=0x91 waiting for monitor entry [0xc823d000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.security.SecureRandom.nextBytes(SecureRandom.java:433)
- waiting to lock <0xdf4b7430> (a java.security.SecureRandom)
at java.util.UUID.randomUUID(UUID.java:162)
at com.itextpdf.text.pdf.PdfPCell.<init>(PdfPCell.java:123)
at com.itextpdf.text.pdf.PdfPRow.<init>(PdfPRow.java:136)
at com.itextpdf.text.pdf.PdfPTable.<init>(PdfPTable.java:260)
at com.itextpdf.text.pdf.PdfPCell.<init>(PdfPCell.java:251)
at com.itextpdf.text.pdf.PdfPRow.<init>(PdfPRow.java:136)
at com.itextpdf.text.pdf.PdfPTable.<init>(PdfPTable.java:260)
at com.itextpdf.text.pdf.PdfPCell.<init>(PdfPCell.java:251)
at com.itextpdf.text.pdf.PdfPRow.<init>(PdfPRow.java:136)
at com.itextpdf.text.pdf.PdfPTable.<init>(PdfPTable.java:260)
at com.itextpdf.text.pdf.PdfPCell.<init>(PdfPCell.java:251)
at com.itextpdf.text.pdf.PdfPRow.<init>(PdfPRow.java:136)
at com.itextpdf.text.pdf.PdfPTable.adjustCellsInRow(PdfPTable.java:1377)
at com.itextpdf.text.pdf.PdfPTable.getRows(PdfPTable.java:1364)
at com.itextpdf.text.pdf.ColumnText.goComposite(ColumnText.java:1702)
at com.itextpdf.text.pdf.ColumnText.go(ColumnText.java:881)
at com.itextpdf.text.pdf.ColumnText.go(ColumnText.java:876)
at com.itextpdf.text.pdf.ColumnText.go(ColumnText.java:865)
at com.itextpdf.text.pdf.PdfDocument.addPTable(PdfDocument.java:2566)
at com.itextpdf.text.pdf.PdfDocument.add(PdfDocument.java:723)
at com.itextpdf.text.Document.add(Document.java:278)*
이 문제를 피할 수 있습니까?
시드
실행중인 플랫폼은 무엇입니까? –
Solaris OS의 IBM websphere 8.5에서 실행 중임 –
버전 5.0.6의 PdfPCell.java:123은 코드 라인이 아니며 생성자가 UUID를 생성하지 않습니다. 이것이 올바른 버전입니까? –