Quarkus3 — JasperReports получил java.sql.SQLException: зарегистрированное соединение используется без активной транзакцJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Quarkus3 — JasperReports получил java.sql.SQLException: зарегистрированное соединение используется без активной транзакц

Сообщение Anonymous »

Недавно мы обновили наше приложение до Quarkus 3, и наш модуль отчетов начал давать сбой из-за SQLException: зарегистрированное соединение используется без активной транзакции.

Код: Выделить всё

2024-07-22T21:24:13.597381608Z executor-thread-1 23 2024-07-22 23:24:13.558  ERROR net.sf.jasperreports.engine.fill.JRFillSubreport Fill 1: exception: net.sf.jasperreports.engine.JRException: Error preparing statement for executing the report query:
2024-07-22T21:24:13.597462370Z
2024-07-22T21:24:13.597475177Z SELECT
2024-07-22T21:24:13.597486237Z     *
2024-07-22T21:24:13.597502662Z FROM
2024-07-22T21:24:13.597519521Z     MY_TABLE
2024-07-22T21:24:13.597530077Z ORDER BY
2024-07-22T21:24:13.597538483Z     col
2024-07-22T21:24:13.597547363Z
2024-07-22T21:24:13.597555636Z
2024-07-22T21:24:13.597574220Z  at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:555)
2024-07-22T21:24:13.597810783Z  at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:299)
2024-07-22T21:24:13.598088743Z  at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1317)
2024-07-22T21:24:13.598244727Z  at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:767)
2024-07-22T21:24:13.598340997Z  at net.sf.jasperreports.engine.fill.BaseReportFiller.setParameters(BaseReportFiller.java:465)
2024-07-22T21:24:13.598391111Z  at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:585)
2024-07-22T21:24:13.598464565Z  at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:416)
2024-07-22T21:24:13.598525214Z  at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:827)
2024-07-22T21:24:13.598583947Z  at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:61)
2024-07-22T21:24:13.598621143Z  at net.sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:221)
2024-07-22T21:24:13.598716311Z  at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
2024-07-22T21:24:13.598803387Z  at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
2024-07-22T21:24:13.598913843Z  at java.base/java.lang.Thread.run(Thread.java:840)
2024-07-22T21:24:13.599023284Z Caused by: java.sql.SQLException: Enlisted connection used without active transaction
2024-07-22T21:24:13.599110173Z  at io.agroal.pool.ConnectionHandler.verifyEnlistment(ConnectionHandler.java:398)
2024-07-22T21:24:13.599149982Z  at io.agroal.pool.wrapper.ConnectionWrapper.getMetaData(ConnectionWrapper.java:452)
2024-07-22T21:24:13.599212173Z  at net.sf.jasperreports.engine.query.OracleProcedureCallHandler.isOracle(OracleProcedureCallHandler.java:72)
2024-07-22T21:24:13.599341106Z  at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.isProcedureCall(JRJdbcQueryExecuter.java:566)
2024-07-22T21:24:13.599481640Z  at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:389)
2024-07-22T21:24:13.599597852Z  ... 12 more
  • тот же код, который работал с Quarkus 2.
  • JasperReports 7 используется для защиты пакетов Jakarta.
  • транзакция активна до тех пор, пока не будет установлено соединение с движком Jasper
  • Я пытался запустить транзакцию вручную с помощью QuarkusTransaction.begin() прямо перед вызовом JasperFillManager - но это привела к ошибке «транзакция уже активна».
Я проверил источники и обнаружил, что JasperFillManager.fillReport — статический метод, который может объяснить потеря транзакции.
https://github.com/TIBCOSoftware/jasper ... .java#L922
Но вызов метода fill напрямую не помог и привел к той же ошибке, что упоминалась выше

Код: Выделить всё

JasperFillManager manager = JasperFillManager.getInstance ( DefaultJasperReportsContext.getInstance() );
JasperPrint print = manager.fill(reportFile, parameters, con);
Ребята, вы знаете, почему наши отчеты не работают?
Любая информация очень ценится.
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/787 ... n-used-wit
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Соединение JDBC внезапно начинает проверять строгий тип и бросает Java.sql.sqlexception с несовместимыми типами
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Вызвано: java.sql.sqlexception: соединение не связано с Managed Connection.org.jboss.resource.ada
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Oracle DB: java.sql.sqlexception: закрытое соединение
    Anonymous » » в форуме JAVA
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Java.sql.SQLException: при подготовке SQL
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Java.sql.SQLException: при подготовке SQL
    Anonymous » » в форуме JAVA
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»