Jboss 7 Web服务线程停留在getRGB(...)

时间:2014-02-06 11:07:56

标签: java web-services jboss itext

我有一个Web服务,使用itext将图像转换为PDF,然后将文档保存在数据库中。

90%的日子一切正常,但有些日子从图像到文档的转换只需要花费太多时间,过了一段时间,其中一些甚至没有完成。

这不会在高峰时间发生,也不会在处理模拟请求时发生。当它发生时,它发生在一天的开始,并发生在每一个。它似乎是随机的(我知道它不是),但是当服务器重新启动时:   - 有时它没问题,并且所有图像都需要不到1秒的时间才能完成   - 有时自第一个问题出错,其中一些问题超过20分钟

方法是:

private PdfPTable constroiPDF(BufferedImage image){

    PdfPTable table=new PdfPTable(1);
    PdfPCell cell = null;
    // IMAGE        
    cell = new PdfPCell(new Phrase("",arialBd9));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    cell.setPaddingTop(ConstantesExpediente.padding20f);
    try {
        Image img = Image.getInstance(image, null);
        img.scaleAbsolute(PageSize.A4.width()-100, PageSize.A4.height()-100);
        img.setAlignment(Image.ALIGN_MIDDLE);
        cell = new PdfPCell(img);
        cell.setBorderWidth(0); 
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(cell);
    } catch (Exception e) {
        e.printStackTrace();
    }
    table.setTotalWidth(PageSize.A4.width()-100)

    return table;

当我查看在发生这种情况时所采取的内存转储,这个状态有很多很多线程:

  "http-executor-threads - 100" prio=5 tid=500 RUNNABLE
at java.awt.image.ComponentColorModel.getRGBComponent(ComponentColorModel.java:893)
at java.awt.image.ComponentColorModel.getGreen(ComponentColorModel.java:979)
at java.awt.image.ComponentColorModel.getRGB(ComponentColorModel.java:1130)
   Local Variable: byte[]#15275
at java.awt.image.BufferedImage.getRGB(BufferedImage.java:888)  
at sun.awt.image.OffScreenImageSource.sendPixels(OffScreenImageSource.java:175)
   Local Variable: sun.awt.image.ByteInterleavedRaster#46
   Local Variable: int[]#46200
at sun.awt.image.OffScreenImageSource.produce(OffScreenImageSource.java:187)
at sun.awt.image.OffScreenImageSource.addConsumer(OffScreenImageSource.java:66)
at sun.awt.image.OffScreenImageSource.startProduction(OffScreenImageSource.java:80)
   Local Variable: sun.awt.image.OffScreenImageSource#34
at java.awt.image.PixelGrabber.grabPixels(PixelGrabber.java:259)
at java.awt.image.PixelGrabber.grabPixels(PixelGrabber.java:226)
at com.lowagie.text.Image.getInstance(Image.java:535)
   Local Variable: java.awt.image.PixelGrabber#34
at com.lowagie.text.Image.getInstance(Image.java:694)
at pk.integrations.UploadImagesHelper.constroiPDF(UploadImagesHelper.java:245)
   Local Variable: java.util.GregorianCalendar#897
   Local Variable: com.lowagie.text.pdf.PdfPCell#75
   Local Variable: java.lang.Long#649
   Local Variable: com.lowagie.text.pdf.PdfPTable#34
at pk.integrations.UploadImagesHelper.upload(UploadImagesHelper.java:116)
   Local Variable: java.awt.image.BufferedImage#45
   Local Variable: java.io.ByteArrayOutputStream#387
   Local Variable: com.lowagie.text.pdf.PdfWriter#44
   Local Variable: com.lowagie.text.Document#44
   Local Variable: java.util.ArrayList#392408
   Local Variable: java.io.ByteArrayInputStream#49
   Local Variable: java.util.zip.ZipInputStream#44
   Local Variable: byte[]#21031
   Local Variable: java.util.zip.ZipEntry#44
at pk.integrations.UploadImagesWS.upload(UploadImagesWS.java:25)
   Local Variable: pk.integrations.uploadimages.UploadImagesTO#32
   Local Variable: pk.integrations.uploadimages.UploadImagesHelper#44
at sun.reflect.GeneratedMethodAccessor5252.invoke(<unknown string>)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.jboss.ws.common.invocation.AbstractInvocationHandlerJSE.invoke(AbstractInvocationHandlerJSE.java:108)
   Local Variable: java.lang.reflect.Method#97547
   Local Variable: java.lang.reflect.Method#97548
   Local Variable: java.lang.Object[]#714045
at org.jboss.ws.core.server.ServiceEndpointInvoker.invoke(ServiceEndpointInvoker.java:183)
   Local Variable: org.jboss.ws.core.server.DelegatingInvocation#33
   Local Variable: org.jboss.ws.core.DirectionHolder#33
   Local Variable: org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerMetaData$HandlerType[]#66
   Local Variable: org.jboss.ws.core.EndpointInvocation#33
   Local Variable: org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerMetaData$HandlerType[]#67
at org.jboss.wsf.stack.jbws.RequestHandlerImpl.processRequest(RequestHandlerImpl.java:352)
   Local Variable: javax.xml.soap.MimeHeaders#44
   Local Variable: org.jboss.ws.core.soap.SOAPMessageImpl#44
at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleRequest(RequestHandlerImpl.java:248)
   Local Variable: org.jboss.ws.core.server.ServletHeaderSource#44
   Local Variable: org.jboss.ws.core.jaxrpc.handler.SOAPMessageContextJAXRPC#44
at org.jboss.wsf.stack.jbws.RequestHandlerImpl.doPost(RequestHandlerImpl.java:183)
   Local Variable: org.apache.catalina.connector.CoyoteInputStream#85
   Local Variable: org.apache.catalina.connector.CoyoteOutputStream#76
   Local Variable: org.jboss.ws.core.server.ServletRequestContext#43
at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:108)
at org.jboss.wsf.stack.jbws.AbstractEndpointServlet.service(AbstractEndpointServlet.java:87)
at org.jboss.wsf.stack.jbws.EndpointServlet.service(EndpointServlet.java:98)
at org.jboss.wsf.spi.deployment.WSFServlet.service(WSFServlet.java:140)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
   Local Variable: org.apache.catalina.connector.ResponseFacade#91
   Local Variable: org.apache.catalina.connector.RequestFacade#90
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
   Local Variable: org.apache.catalina.core.ApplicationFilterChain#170
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
   Local Variable: org.jboss.security.plugins.JBossSecurityContext#104
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:389)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336)
   Local Variable: org.apache.coyote.Request#90
   Local Variable: org.apache.coyote.Response#91
   Local Variable: org.apache.catalina.connector.Response#91
   Local Variable: org.apache.catalina.connector.Request#91
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
   Local Variable: org.apache.coyote.RequestInfo#74
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
   Local Variable: org.apache.coyote.http11.Http11Processor#77
   Local Variable: java.net.Socket#363
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:508)
at org.jboss.threads.SimpleDirectExecutor.execute(SimpleDirectExecutor.java:33)
at org.jboss.threads.QueueExecutor.runTask(QueueExecutor.java:806)
at org.jboss.threads.QueueExecutor.access$100(QueueExecutor.java:45)
at org.jboss.threads.QueueExecutor$Worker.run(QueueExecutor.java:847)
   Local Variable: org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor#146
   Local Variable: org.jboss.threads.QueueExecutor$Worker#201
at java.lang.Thread.run(Thread.java:722)
at org.jboss.threads.JBossThread.run(JBossThread.java:122)

"http-executor-threads - 65" prio=5 tid=412 RUNNABLE
at java.awt.image.ComponentColorModel.extractComponent(ComponentColorModel.java:794)
at java.awt.image.ComponentColorModel.getRGBComponent(ComponentColorModel.java:897)
at java.awt.image.ComponentColorModel.getGreen(ComponentColorModel.java:979)
at java.awt.image.ComponentColorModel.getRGB(ComponentColorModel.java:1130)
   Local Variable: byte[]#15277
at java.awt.image.BufferedImage.getRGB(BufferedImage.java:888)
...

 "http-executor-threads - 72" prio=5 tid=436 RUNNABLE
at java.awt.image.ComponentColorModel.getAlpha(ComponentColorModel.java:1045)
at java.awt.image.ComponentColorModel.getRGB(ComponentColorModel.java:1130)
   Local Variable: byte[]#15276
at java.awt.image.BufferedImage.getRGB(BufferedImage.java:888)

为什么这么多线程?什么代表这个getRGB方法?我该如何解决这个问题?

一些信息:
服务器:Jboss AS 7.2(它在从Jboss 4迁移之前工作)
JDK:1.7
处理的图像平均值:每天2000 Itext版本:1.4

由于

0 个答案:

没有答案