1
VertxとJasper Reportsを使用してレポートを作成できましたが、PDFファイルを閉じるとサーバーが停止します。私は私のサーバーを稼働させ続けるのが好きです。ここでVertx: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)
エラーのスタックトレースを投稿してください。 – sanluck
私はいくつかのコードを使用してそれを生き続けるためにいくつかのコードを追加しました:response.putHeader( "Content-Type"、 "application/json");response.write(新しいJsonObject( "{\"エラー\ ":偽、\"ファイル\ ":\" report44 \ "}")encodePrettily()); response.end(); ; しかし、それは私を与える:java.lang.IllegalStateException:応答はすでに書かれています。 – zackzulg
@zackzulg [edit]このstacktraceであなたの質問をコメントとして渡さないでください。 –