我有一个服务器端打印功能,从 Windows 2008 服务器上的 Tomcat 调用,在这种情况下在默认打印机上打印,它永远挂起。这是堆栈跟踪:
at sun.awt.windows.WPrinterJob._startDoc(Native Method)
at sun.awt.windows.WPrinterJob.startDoc(WPrinterJob.java:1249)
at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:1371)
at com.gnostice.pdfone.PdfPrinter.a(Unknown Source)
at com.gnostice.pdfone.PdfPrinter.print(Unknown Source)
at com.gnostice.pdfone.PdfPrinter.print(Unknown Source)
at de.ikoffice.print.PrintService.printPDF(PrintService.java:64)
at de.ikoffice.document.Document.printPDFToPrinter(Document.java:261)
at de.ikoffice.document.Document.start(Document.java:91)
at de.ikoffice.document.DocumentService.processMessage(DocumentService.java:48)
罪魁祸首是打印机“Microsoft XPS 文档编写器”,它似乎在某些后台 shell 上下文中打开了一个窗口(服务器是以用户 Tomcat 运行的 Tomcat 5.5),并且永远挂在那里,我不知道什么是最好的方法来处理这种情况。
有任何想法吗?硬编码打印机名称并不允许在其上打印?停止()线程?这是一个本机函数,所以我不能用期望的结果中断()线程。