0

vertx と JasperReports を使用したいのですが、接続を作成してテストします。すべて問題ありませんが、fillReport メソッド (最後の接続は接続) を使用してジャスパー レポートを入力すると、エラーが表示されます。

タイプ JasperFillManager のメソッド fillReport(JasperReport, Map< String,Object >, Connection) は、引数 (JasperReport, null, Class < connection>) には適用されません。

SQLConnect をキャストして connect する方法はありますか?

これが私のコードです:

   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);}

よろしく。

4

1 に答える 1

1

答えは簡単です。Vert.xio.vertx.ext.sql.SQLConnectionを JDBC にキャストすることはできませんjava.sql.Connection

Vert.x は、非同期呼び出しに大きく依存しています。JDBC はブロックしているため、Vert.x はそれを非同期インターフェース (およびそれ以上) でラップします。またはインターフェイスjava.sql.Connectionにゲッターなどがないため、本物に到達する方法はありません。JDBCConnectionImplSQLConnection

これは、Vert.x で Jasper を使用できないという意味ではありません。独自の JDBC 接続を開く必要がありますが、イベント ループをブロックしないでください。したがって、別のスレッドをスピンアップするため、イベントループをブロックしないWorker Verticlesを確認することをお勧めします。

于 2016-04-22T07:57:59.810 に答える