Error using Oracle DB as default job repository in Jakarta batch (JSR352 -Wildfly / jberet)

huangapple go评论106阅读模式
英文:

Error using Oracle DB as default job repository in Jakarta batch (JSR352 -Wildfly / jberet)

问题

我正在运行一个 Jakarta 10 应用程序在 Wildfly 27.0.1.Final 服务器上(实现 Jakarta batch 使用 Jberet)。

我想在 JBeret 中使用 JDBC 作业存储库。

当我使用默认的 "in-memory" 存储库或 MySQL 存储库时,一切都正常运行。但是,当我尝试使用 Oracle 存储库时,即使 Jberet 使用的表已经正确生成(我认为如此),在执行作业时我遇到了这个错误。

  1. Caused by: Error : 1400, Position : 0, SQL = INSERT INTO
  2. JOB_INSTANCE(JOBNAME, APPLICATIONNAME) VALUES(:1 , :2 ) RETURNING
  3. JOBINSTANCEID INTO :3 [SQL INCLUDES EXPRESSIONS ADDED BY THE ORACLE
  4. JDBC DRIVER], Original SQL = INSERT INTO JOB_INSTANCE(JOBNAME,
  5. APPLICATIONNAME) VALUES(?, ?) RETURNING JOBINSTANCEID INTO ?, Error
  6. Message = ORA-01400: impossible insert NULL in
  7. ("TASK_USER"."JOB_INSTANCE"."JOBINSTANCEID")

环境:

  • Wildfly 27.0.1.Final
  • Jakarta 10 -> Jakarta Batch 2.1
  • 用于作业存储库的数据库:Oracle DB 21cXE

在 standalone-full.xml 中的配置如下:

存储库配置

  1. <subsystem xmlns="urn:jboss:domain:batch-jberet:3.0">
  2. <default-job-repository name="oracle-repository"/>
  3. <default-thread-pool name="batch"/>
  4. <job-repository name="in-memory">
  5. <in-memory/>
  6. </job-repository>
  7. <job-repository name="mysql-repository">
  8. <jdbc data-source="MysqlDataSource"/>
  9. </job-repository>
  10. <job-repository name="oracle-repository">
  11. <jdbc data-source="OracleDS"/>
  12. </job-repository>
  13. <thread-pool name="batch">
  14. <max-threads count="10"/>
  15. <keepalive-time time="30" unit="seconds"/>
  16. </thread-pool>
  17. </subsystem>

数据源配置

  1. <subsystem xmlns="urn:jboss:domain:datasources:7.0">
  2. <datasources>
  3. <!-- 省略其他数据源配置 -->
  4. <datasource jndi-name="java:jboss/datasources/OracleDS" pool-name="OracleDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
  5. <connection-url>jdbc:oracle:thin:@localhost:1521:XE</connection-url>
  6. <driver>oracle</driver>
  7. <security>
  8. <user-name>TASK_USER</user-name>
  9. <password>taskpass</password>
  10. </security>
  11. </datasource>
  12. <!-- 省略其他数据源配置 -->
  13. </datasources>
  14. </subsystem>

完整的错误堆栈跟踪请参考您的原始帖子。

请问还有其他问题吗?

英文:

I'm running a Jakarta 10 application in Wildfly 27.0.1.Final server (thats implement Jakarta batch using Jberet)

I want to use a JDBC Job Repository in JBeret.

Everything runs okay when I use the default "in-memory" repository or when I use the MySQL repository. However, when I try to use the Oracle repository, even though the tables used by Jberet are correctly generated (I think so), I encounter this error when I execute a job.

  1. Caused by: Error : 1400, Position : 0, SQL = INSERT INTO
  2. JOB_INSTANCE(JOBNAME, APPLICATIONNAME) VALUES(:1 , :2 ) RETURNING
  3. JOBINSTANCEID INTO :3 [SQL INCLUDES EXPRESSIONS ADDED BY THE ORACLE
  4. JDBC DRIVER], Original SQL = INSERT INTO JOB_INSTANCE(JOBNAME,
  5. APPLICATIONNAME) VALUES(?, ?) RETURNING JOBINSTANCEID INTO ?, Error
  6. Message = ORA-01400: impossible insert NULL in
  7. (&quot;TASK_USER&quot;.&quot;JOB_INSTANCE&quot;.&quot;JOBINSTANCEID&quot;)

Environment:
Wildfly 27.0.1.Final
Jakarta 10 -&gt; Jakarta Batch 2.1
DB for job-repository: Oracle DB 21cXE

Configuration in standalone-full.xml:
Repository configuration

  1. &lt;subsystem xmlns=&quot;urn:jboss:domain:batch-jberet:3.0&quot;&gt;
  2. &lt;default-job-repository name=&quot;oracle-repository&quot;/&gt;
  3. &lt;default-thread-pool name=&quot;batch&quot;/&gt;
  4. &lt;job-repository name=&quot;in-memory&quot;&gt;
  5. &lt;in-memory/&gt;
  6. &lt;/job-repository&gt;
  7. &lt;job-repository name=&quot;mysql-repository&quot;&gt;
  8. &lt;jdbc data-source=&quot;MysqlDataSource&quot;/&gt;
  9. &lt;/job-repository&gt;
  10. &lt;job-repository name=&quot;oracle-repository&quot;&gt;
  11. &lt;jdbc data-source=&quot;OracleDS&quot;/&gt;
  12. &lt;/job-repository&gt;
  13. &lt;thread-pool name=&quot;batch&quot;&gt;
  14. &lt;max-threads count=&quot;10&quot;/&gt;
  15. &lt;keepalive-time time=&quot;30&quot; unit=&quot;seconds&quot;/&gt;
  16. &lt;/thread-pool&gt;
  17. &lt;/subsystem&gt;

DataSource configuration

  1. &lt;subsystem xmlns=&quot;urn:jboss:domain:datasources:7.0&quot;&gt;
  2. &lt;datasources&gt;
  3. &lt;datasource jndi-name=&quot;java:jboss/datasources/ExampleDS&quot; pool-name=&quot;ExampleDS&quot; enabled=&quot;true&quot; use-java-context=&quot;true&quot; statistics-enabled=&quot;${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}&quot;&gt;
  4. &lt;connection-url&gt;jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=${wildfly.h2.compatibility.mode:REGULAR}&lt;/connection-url&gt;
  5. &lt;driver&gt;h2&lt;/driver&gt;
  6. &lt;security&gt;
  7. &lt;user-name&gt;sa&lt;/user-name&gt;
  8. &lt;password&gt;sa&lt;/password&gt;
  9. &lt;/security&gt;
  10. &lt;/datasource&gt;
  11. &lt;datasource jndi-name=&quot;java:jboss/datasources/OracleDS&quot; pool-name=&quot;OracleDS&quot; enabled=&quot;true&quot; use-java-context=&quot;true&quot; statistics-enabled=&quot;${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}&quot;&gt;
  12. &lt;connection-url&gt;jdbc:oracle:thin:@localhost:1521:XE&lt;/connection-url&gt;
  13. &lt;driver&gt;oracle&lt;/driver&gt;
  14. &lt;security&gt;
  15. &lt;user-name&gt;TASK_USER&lt;/user-name&gt;
  16. &lt;password&gt;taskpass&lt;/password&gt;
  17. &lt;/security&gt;
  18. &lt;/datasource&gt;
  19. &lt;datasource jndi-name=&quot;java:jboss/datasources/MysqlDataSource&quot; pool-name=&quot;MysqlDataSource&quot; enabled=&quot;true&quot; use-java-context=&quot;true&quot; statistics-enabled=&quot;${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}&quot;&gt;
  20. &lt;connection-url&gt;jdbc:mysql://127.0.0.1:3306/taskdb&lt;/connection-url&gt;
  21. &lt;driver&gt;mysql&lt;/driver&gt;
  22. &lt;security&gt;
  23. &lt;user-name&gt;TASK_USER&lt;/user-name&gt;
  24. &lt;password&gt;taskpass&lt;/password&gt;
  25. &lt;/security&gt;
  26. &lt;/datasource&gt;
  27. &lt;drivers&gt;
  28. &lt;driver name=&quot;h2&quot; module=&quot;com.h2database.h2&quot;&gt;
  29. &lt;xa-datasource-class&gt;org.h2.jdbcx.JdbcDataSource&lt;/xa-datasource-class&gt;
  30. &lt;/driver&gt;
  31. &lt;driver name=&quot;oracle&quot; module=&quot;com.oracle&quot;&gt;
  32. &lt;driver-class&gt;oracle.jdbc.driver.OracleDriver&lt;/driver-class&gt;
  33. &lt;/driver&gt;
  34. &lt;driver name=&quot;mysql&quot; module=&quot;com.mysql&quot;&gt;
  35. &lt;driver-class&gt;com.mysql.cj.jdbc.Driver&lt;/driver-class&gt;
  36. &lt;xa-datasource-class&gt;com.mysql.cj.jdbc.MysqlXADataSource&lt;/xa-datasource-class&gt;
  37. &lt;/driver&gt;
  38. &lt;/drivers&gt;
  39. &lt;/datasources&gt;

Complete error stack trace

  1. WARNING [jakarta.enterprise.resource.webcontainer.faces.lifecycle] (default task-1) #{JSFBean.doJob}: /my_face_page.xhtml @16,84 action=&quot;#{JSFBean.doJob}&quot;: jakarta.batch.operations.BatchRuntimeException: JBERET000626: Failed to run INSERT INTO JOB_INSTANCE(JOBNAME, APPLICATIONNAME) VALUES(?, ?): jakarta.faces.FacesException: #{JSFBean.doJob}: /my_face_page.xhtml @16,84 action=&quot;#{JSFBean.doJob}&quot;: jakarta.batch.operations.BatchRuntimeException: JBERET000626: Failed to run INSERT INTO JOB_INSTANCE(JOBNAME, APPLICATIONNAME) VALUES(?, ?)
  2. at com.sun.jsf-impl@4.0.0.SP01//com.sun.faces.application.ActionListenerImpl.getNavigationOutcome(ActionListenerImpl.java:83)
  3. at com.sun.jsf-impl@4.0.0.SP01//com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:62)
  4. at jakarta.faces.api//jakarta.faces.component.UICommand.broadcast(UICommand.java:205)
  5. at jakarta.faces.api//jakarta.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:858)
  6. at jakarta.faces.api//jakarta.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1332)
  7. at com.sun.jsf-impl@4.0.0.SP01//com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:56)
  8. at com.sun.jsf-impl@4.0.0.SP01//com.sun.faces.lifecycle.Phase.doPhase(Phase.java:72)
  9. at com.sun.jsf-impl@4.0.0.SP01//com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:159)
  10. at jakarta.faces.api//jakarta.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:691)
  11. at jakarta.faces.api//jakarta.faces.webapp.FacesServlet.service(FacesServlet.java:449)
  12. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
  13. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
  14. at io.smallrye.opentracing-contrib//io.smallrye.opentracing.contrib.jaxrs2.server.SpanFinishingFilter.doFilter(SpanFinishingFilter.java:69)
  15. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
  16. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
  17. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
  18. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
  19. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
  20. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
  21. at org.wildfly.security.elytron-web.undertow-server@3.0.0.Final//org.wildfly.elytron.web.undertow.server.ElytronRunAsHandler.lambda$handleRequest$1(ElytronRunAsHandler.java:68)
  22. at org.wildfly.security.elytron-base@2.0.0.Final//org.wildfly.security.auth.server.FlexibleIdentityAssociation.runAsFunctionEx(FlexibleIdentityAssociation.java:103)
  23. at org.wildfly.security.elytron-base@2.0.0.Final//org.wildfly.security.auth.server.Scoped.runAsFunctionEx(Scoped.java:161)
  24. at org.wildfly.security.elytron-base@2.0.0.Final//org.wildfly.security.auth.server.Scoped.runAs(Scoped.java:73)
  25. at org.wildfly.security.elytron-web.undertow-server@3.0.0.Final//org.wildfly.elytron.web.undertow.server.ElytronRunAsHandler.handleRequest(ElytronRunAsHandler.java:67)
  26. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
  27. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
  28. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
  29. at io.undertow.core@2.3.0.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
  30. at io.undertow.core@2.3.0.Final//io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
  31. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
  32. at io.undertow.core@2.3.0.Final//io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
  33. at org.wildfly.security.elytron-web.undertow-server-servlet@3.0.0.Final//org.wildfly.elytron.web.undertow.server.servlet.CleanUpHandler.handleRequest(CleanUpHandler.java:38)
  34. at io.undertow.core@2.3.0.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
  35. at org.wildfly.extension.undertow@27.0.1.Final//org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
  36. at io.undertow.core@2.3.0.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
  37. at org.wildfly.extension.undertow@27.0.1.Final//org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
  38. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
  39. at io.undertow.core@2.3.0.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
  40. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
  41. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
  42. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
  43. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
  44. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
  45. at org.wildfly.extension.undertow@27.0.1.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1435)
  46. at org.wildfly.extension.undertow@27.0.1.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1435)
  47. at org.wildfly.extension.undertow@27.0.1.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1435)
  48. at org.wildfly.extension.undertow@27.0.1.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1435)
  49. at org.wildfly.extension.undertow@27.0.1.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1435)
  50. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
  51. at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
  52. at io.undertow.core@2.3.0.Final//io.undertow.server.Connectors.executeRootHandler(Connectors.java:391)
  53. at io.undertow.core@2.3.0.Final//io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:859)
  54. at org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
  55. at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
  56. at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
  57. at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
  58. at org.jboss.xnio@3.8.8.Final//org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
  59. at java.base/java.lang.Thread.run(Thread.java:834)
  60. Caused by: jakarta.el.ELException: /my_face_page.xhtml @16,84 action=&quot;#{JSFBean.doJob}&quot;: jakarta.batch.operations.BatchRuntimeException: JBERET000626: Failed to run INSERT INTO JOB_INSTANCE(JOBNAME, APPLICATIONNAME) VALUES(?, ?)
  61. at com.sun.jsf-impl@4.0.0.SP01//com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:76)
  62. at com.sun.jsf-impl@4.0.0.SP01//com.sun.faces.application.ActionListenerImpl.getNavigationOutcome(ActionListenerImpl.java:74)
  63. ... 57 more
  64. Caused by: jakarta.batch.operations.BatchRuntimeException: JBERET000626: Failed to run INSERT INTO JOB_INSTANCE(JOBNAME, APPLICATIONNAME) VALUES(?, ?)
  65. at org.jberet.jberet-core@2.1.1.Final//org.jberet.repository.JdbcRepository.insertJobInstance(JdbcRepository.java:329)
  66. at org.jberet.jberet-core@2.1.1.Final//org.jberet.repository.AbstractPersistentRepository.createJobInstance(AbstractPersistentRepository.java:105)
  67. at org.wildfly.extension.batch.jberet@27.0.1.Final//org.wildfly.extension.batch.jberet.job.repository.JobRepositoryService.createJobInstance(JobRepositoryService.java:112)
  68. at org.wildfly.extension.batch.jberet@27.0.1.Final//org.wildfly.extension.batch.jberet.job.repository.JdbcJobRepositoryService.createJobInstance(JdbcJobRepositoryService.java:45)
  69. at org.jberet.jberet-core@2.1.1.Final//org.jberet.operations.AbstractJobOperator$1.invoke(AbstractJobOperator.java:145)
  70. at org.jberet.jberet-core@2.1.1.Final//org.jberet.operations.AbstractJobOperator$1.invoke(AbstractJobOperator.java:142)
  71. at org.jberet.jberet-core@2.1.1.Final//org.jberet.operations.AbstractJobOperator.invokeTransaction(AbstractJobOperator.java:465)
  72. at org.jberet.jberet-core@2.1.1.Final//org.jberet.operations.AbstractJobOperator.start(AbstractJobOperator.java:142)
  73. at org.jberet.jberet-core@2.1.1.Final//org.jberet.operations.AbstractJobOperator.start(AbstractJobOperator.java:102)
  74. at org.wildfly.extension.batch.jberet@27.0.1.Final//org.wildfly.extension.batch.jberet.deployment.JobOperatorService.start(JobOperatorService.java:258)
  75. at org.jberet.jberet-core@2.1.1.Final//org.jberet.operations.DelegatingJobOperator.start(DelegatingJobOperator.java:68)
  76. at deployment.taskbatch.war//com.rb.batch.mybatch.JSFBean.doJob(JSFBean.java:28)
  77. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  78. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  79. at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  80. at java.base/java.lang.reflect.Method.invoke(Method.java:566)
  81. at org.glassfish.expressly@5.0.0//org.glassfish.expressly.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:186)
  82. at org.glassfish.expressly@5.0.0//org.glassfish.expressly.parser.AstValue.invoke(AstValue.java:253)
  83. at org.glassfish.expressly@5.0.0//org.glassfish.expressly.MethodExpressionImpl.invoke(MethodExpressionImpl.java:248)
  84. at org.jboss.weld.core@5.1.0.Final//org.jboss.weld.module.web.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
  85. at org.jboss.weld.core@5.1.0.Final//org.jboss.weld.module.web.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
  86. at com.sun.jsf-impl@4.0.0.SP01//com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:70)
  87. ... 58 more
  88. Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: impossible insert NULL in (&quot;TASK_USER&quot;.&quot;JOB_INSTANCE&quot;.&quot;JOBINSTANCEID&quot;)
  89. at com.oracle@23.2.0.0.0//oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:702)
  90. at com.oracle@23.2.0.0.0//oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:608)
  91. at com.oracle@23.2.0.0.0//oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1335)
  92. at com.oracle@23.2.0.0.0//oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:1041)
  93. at com.oracle@23.2.0.0.0//oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:443)
  94. at com.oracle@23.2.0.0.0//oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:533)
  95. at com.oracle@23.2.0.0.0//oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:262)
  96. at com.oracle@23.2.0.0.0//oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1392)
  97. at com.oracle@23.2.0.0.0//oracle.jdbc.driver.OracleStatement.executeSQLStatement(OracleStatement.java:1877)
  98. at com.oracle@23.2.0.0.0//oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1520)
  99. at com.oracle@23.2.0.0.0//oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3751)
  100. at com.oracle@23.2.0.0.0//oracle.jdbc.driver.OraclePreparedStatement.executeLargeUpdate(OraclePreparedStatement.java:4078)
  101. at com.oracle@23.2.0.0.0//oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:4049)
  102. at com.oracle@23.2.0.0.0//oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:997)
  103. at org.jboss.ironjacamar.jdbcadapters@1.5.9.Final//org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:537)
  104. at org.jberet.jberet-core@2.1.1.Final//org.jberet.repository.JdbcRepository.insertJobInstance(JdbcRepository.java:323)
  105. ... 79 more
  106. Caused by: Error : 1400, Position : 0, SQL = INSERT INTO JOB_INSTANCE(JOBNAME, APPLICATIONNAME) VALUES(:1 , :2 ) RETURNING JOBINSTANCEID INTO :3 [SQL INCLUDES EXPRESSIONS ADDED BY THE ORACLE JDBC DRIVER], Original SQL = INSERT INTO JOB_INSTANCE(JOBNAME, APPLICATIONNAME) VALUES(?, ?) RETURNING JOBINSTANCEID INTO ?, Error Message = ORA-01400: impossible insert NULL in (&quot;TASK_USER&quot;.&quot;JOB_INSTANCE&quot;.&quot;JOBINSTANCEID&quot;)
  107. at com.oracle@23.2.0.0.0//oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:710)
  108. ... 94 more

Am I missing anything?

答案1

得分: 0

我发现jberet oracle DLL正在生成表和序列,但出于某种原因,它没有生成触发器。

因此,我手动编译了这些触发器(在此处找到),现在一切都正常运行!

  1. CREATE OR REPLACE TRIGGER JOB_INSTANCE_BRI
  2. BEFORE INSERT ON JOB_INSTANCE
  3. FOR EACH ROW
  4. BEGIN
  5. SELECT JOB_INSTANCE_SEQ.nextval INTO :new.JOBINSTANCEID FROM dual;
  6. END;
  7. CREATE OR REPLACE TRIGGER JOB_EXECUTION_BRI
  8. BEFORE INSERT ON JOB_EXECUTION
  9. FOR EACH ROW
  10. BEGIN
  11. SELECT JOB_EXECUTION_SEQ.nextval INTO :new.JOBEXECUTIONID FROM dual;
  12. END;
  13. CREATE OR REPLACE TRIGGER STEP_EXECUTION_BRI
  14. BEFORE INSERT ON STEP_EXECUTION
  15. FOR EACH ROW
  16. BEGIN
  17. SELECT STEP_EXECUTION_SEQ.nextval INTO :new.STEPEXECUTIONID FROM dual;
  18. END;
英文:

I discovered that the jberet oracle DLL is generating tables and sequences, but for some reason, it's not generating the triggers.

Error using Oracle DB as default job repository in Jakarta batch (JSR352 -Wildfly / jberet)

So I manually compiled the triggers (found here), and now everything is working fine!

  1. CREATE OR REPLACE TRIGGER JOB_INSTANCE_BRI
  2. BEFORE INSERT ON JOB_INSTANCE
  3. FOR EACH ROW
  4. BEGIN
  5. SELECT JOB_INSTANCE_SEQ.nextval INTO :new.JOBINSTANCEID FROM dual;
  6. END;
  7. CREATE OR REPLACE TRIGGER JOB_EXECUTION_BRI
  8. BEFORE INSERT ON JOB_EXECUTION
  9. FOR EACH ROW
  10. BEGIN
  11. SELECT JOB_EXECUTION_SEQ.nextval INTO :new.JOBEXECUTIONID FROM dual;
  12. END;
  13. CREATE OR REPLACE TRIGGER STEP_EXECUTION_BRI
  14. BEFORE INSERT ON STEP_EXECUTION
  15. FOR EACH ROW
  16. BEGIN
  17. SELECT STEP_EXECUTION_SEQ.nextval INTO :new.STEPEXECUTIONID FROM dual;
  18. END;

huangapple
  • 本文由 发表于 2023年5月17日 21:40:45
  • 转载请务必保留本文链接:https://go.coder-hub.com/76272782.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定