2016-04-12 11 views
0

Ich möchte Vertex und JasperReports verwenden, ich erstelle meine Verbindung und ich teste es, alles ist in Ordnung, aber wenn ich Jaspel-Bericht füllen möchten mit FillReport-Methode (wo die letzte Verbindung ist it) zeigt Fehler:Vertex: kann SQLConnection von fillReport nicht lesen

Verfahren fillReport (Jasper, Map < String, Object>, Verbindung) in der Art JasperFillManager ist nicht anwendbar für die Argumente (Jasper, null, Klasse < Anschluss>).

Irgendeine Idee, wie ich meine SQLConnect verbinden sollte?

Hier ist mein Code:

AsyncSQLClient client = MySQLClient.createShared(vertx, mySQLClientConfig); 
    client.getConnection(res -> { 
     if (res.succeeded()) { 
        SQLConnection connection = res.result(); 
        try{ 
       String report = "C:\\Users\\paths\\Test1.jrxml"; 
       JasperReport Jasp = JasperCompileManager.compileReport(report); 
       JasperPrint JASP_PRINT = JasperFillManager.fillReport(Jasp, null, connection); 
       JasperViewer.viewReport(JASP_PRINT);       
         } 
        catch(Exception ex){System.out.println(ex);} 

Grüße.

Antwort

0

Die Antwort ist einfach. Sie können eine Vert.x io.vertx.ext.sql.SQLConnection nicht an eine JDBC java.sql.Connection übertragen.

Vert.x verlässt sich stark auf asynchrone Aufrufe. JDBC blockiert und Vert.x umschließt es mit einer asynchronen Schnittstelle (und ein bisschen mehr). Es gibt keine Möglichkeit, zum echten java.sql.Connection zu gelangen, da es kein Getter oder etwas ähnliches in der JDBCConnectionImpl oder in der SQLConnection Schnittstelle gibt.

Das bedeutet nicht, dass Sie Jasper nicht mit Vert.x verwenden können. Sie müssen Ihre eigene JDBC-Verbindung öffnen - aber nicht block the Event loop! Ich schlage also vor, dass Sie sich die Worker Verticles ansehen, die die Ereignisschleife nicht blockieren, weil sie einen separaten Thread hochfahren.

+0

Vielen Dank für Ihre Antwort @alexvetter, also gibt es keine Möglichkeit vert.x mit Jaspis-Bericht zu verwenden? – zackzulg

+0

Editied meine Antwort. Hoffe es beantwortet jetzt deine Frage. – alexvetter

+0

Vielen Dank für Hilfe, ich werde einen Blick auf Arbeiter werfen, einen schönen Tag haben @alexvetter – zackzulg