java - 顶点 : Keep serve alive after closing PDF file

标签 java jasper-reports vert.x

我使用 Vertx 和 Jasper Reports,我可以成功创建我的报告,但是当我关闭 PDF 文件时服务器停止运行。我想让我的服务器继续运行。

这是我的代码:

 public void start(Future<Void> startFuture){
    String fileJSON = "{name : 'Stackoverflow', start: '15-06-2014', end: '02-09-2018'}";
    String file =  "/Test1";
    Router router = Router.router(vertx);
       router.route(file).handler(routingContext -> {
        HttpServerResponse response = routingContext.response();
        response.setChunked(true);            
        InputStream iostream = new ByteArrayInputStream(fileJSON.getBytes(StandardCharsets.UTF_8));
                try{                                  
                    JsonDataSource ds = new JsonDataSource(iostream);
                    Map parametersMap = new HashMap();  
                    String report = "C:\\PathToreport\\report2.jrxml";
                    JasperReport Jasp = JasperCompileManager.compileReport(report);
                    JasperPrint JASP_PRINT = JasperFillManager.fillReport(Jasp,parametersMap,ds);
                    JasperViewer.viewReport(JASP_PRINT);
                    JasperExportManager.exportReportToPdfFile(JASP_PRINT, "C:\\Users\\path\\report4.pdf");                             
                    }
                catch(Exception e){ System.out.println(e);}
        routingContext.vertx().setTimer(1000, tid ->  routingContext.response().end());
    });
    vertx.createHttpServer()
            .requestHandler(router::accept)
            .listen(8089, "localhost", res -> {

                if (res.succeeded()){

                    startFuture.complete();    
                }
                else
                    startFuture.fail(res.cause());
            });


}

这是堆栈:

vr. 07, 2016 9:25:04 AM io.vertx.core.impl.BlockedThreadChecker AVERTISSEMENT: Thread Thread[vert.x-eventloop-thread-1,5,main] has been blocked for 2407 ms, time limit is 2000 avr. 07, 2016 9:25:05 AM io.vertx.core.impl.BlockedThreadChecker AVERTISSEMENT: Thread Thread[vert.x-eventloop-thread-1,5,main] has been blocked for 3407 ms, time limit is 2000 avr. 07, 2016 9:25:06 AM io.vertx.core.impl.BlockedThreadChecker AVERTISSEMENT: Thread Thread[vert.x-eventloop-thread-1,5,main] has been blocked for 4407 ms, time limit is 2000 BUILD SUCCESSFUL (total time: 27 seconds)

最佳答案

解决了,我必须向 viewReport 添加错误参数

JasperViewer.viewReport(JASP_PRINT, false);

关于java - 顶点 : Keep serve alive after closing PDF file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36460592/

相关文章:

java - Android:为什么位置的新实例需要提供程序?

java - 此方法不会将对象插入到 ArrayList 中。为什么?

java - 循环中每百万次才执行一条语句

java - Jasper 创建空 PDF

java - Struts2 jasperreports-插件 : unable to generate report using jdbc connection

java - 什么是 Future<void>?

java - 为什么在 Facebook YearClass 中声明非线程 - volatile 参数

jasper-reports - 在 Jaspersoft ireport 中创建静态下拉列表

unit-testing - 单元测试 Vertx - java.util.concurrent.TimeoutException

swagger - Vert.x 的基于注释的 Swagger 文档