java ejb定时器(调度程序)不触发

ejk8hzay  于 2024-01-05  发布在  Java
关注(0)|答案(1)|浏览(189)

我有两个ejb浏览器在一个运行在weblogic服务器上的类中。它工作正常,除了在一些罕见的情况下,其中一个(第一个计时器)甚至没有触发,而另一个正在工作。我通过查看服务器日志来意识到这一点,并没有看到可用的日志。我想知道为什么它从来没有被触发!
通过重新启动定时器工作的服务器节点来解决该问题。

  1. @Singleton
  2. public class SamanElectronicPaymentTimer {
  3. @Inject
  4. private EntityManager em;
  5. @Inject
  6. @WebProperties
  7. Bundle webProperties;
  8. @Inject
  9. SamanElectronicPaymentService samanElectronicPaymentService;
  10. @Inject
  11. private RestServices restServices;
  12. @Inject
  13. private CreateHistory createHistory;
  14. @Schedule(minute = "*/5", dayOfMonth = "*", hour = "*", month = "*", year = "*", second = "20", persistent = false)
  15. public void samanElectronicCheckPayment() {
  16. try {
  17. Logger.getLogger(DebitInstallmentPaymentTimer.class.getName()).log(Level.INFO, "samanElectronicCheckPayment is running");
  18. if (checkTrueNode()) {
  19. payCheckSamanManualyTimer();
  20. Logger.getLogger(SamanElectronicPaymentTimer.class.getName()).log(Level.INFO, "<<<<<<<<<<<<<< samanElectronicCheckPaymentTimer End>>>>>>>>>>>>>");
  21. }
  22. } catch (Exception ex) {
  23. Logger.getLogger(SamanElectronicPaymentTimer.class.getName()).log(Level.SEVERE, ex.getMessage());
  24. }
  25. }
  26. @Schedule(minute = "*/20", hour = "*", second = "10", persistent = false)
  27. public void createDebitWithTimer() {
  28. if (checkTrueNode()) {
  29. try {
  30. List<OnlinePaymentInfo> onlinePaymentInfoList = this.em.createNamedQuery("getOnlinePaymentInfo.fortimer.creatDebit")
  31. .setMaxResults(1000)
  32. .getResultList();
  33. if (onlinePaymentInfoList.size() > 0) {
  34. for (OnlinePaymentInfo onlinePaymentInfotmp : onlinePaymentInfoList) {
  35. Logger.getLogger(this.getClass().getName()).log(Level.INFO, onlinePaymentInfotmp.toString());
  36. createHistory.createHistoryByTimer(onlinePaymentInfotmp);
  37. }
  38. Logger.getLogger(this.getClass().getName()).log(Level.INFO, onlinePaymentInfoList.size() + " histories created!");
  39. }
  40. } catch (Exception ex) {
  41. Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "sabegheTimer went wrong:: " + ex);
  42. }
  43. }
  44. }
  45. private boolean checkTrueNode() {
  46. try {
  47. InitialContext ctx = new InitialContext();
  48. MBeanServer mBeanServer = (MBeanServer) ctx.lookup("java:comp/env/jmx/runtime");
  49. String serverName = System.getProperty("weblogic.Name");
  50. ObjectName serverRuntime = new ObjectName("com.bea:Name=" + serverName + ",Type=ServerRuntime");
  51. String listenAddress = mBeanServer.getAttribute(serverRuntime, "ListenAddress").toString();
  52. String listenPort = mBeanServer.getAttribute(serverRuntime, "ListenPort").toString();
  53. Logger.getLogger(DebitInstallmentPaymentTimer.class.getName()).log(Level.INFO, "listenPort is :" + listenPort.toString());
  54. Logger.getLogger(DebitInstallmentPaymentTimer.class.getName()).log(Level.INFO, "ListenAddress is :" + listenAddress.toString());
  55. if (listenPort.equals("9091") && listenAddress.contains("eservice-n3.tamin.org")) {
  56. return true;
  57. } else {
  58. return false;
  59. }
  60. } catch (Exception ex) {
  61. ex.printStackTrace();
  62. return false;
  63. }
  64. }

字符串
虽然第一个调度程序在非常罕见的情况下甚至不会被触发,但第二个计时器会持续抛出以下异常。这表明命名查询getOnlinePaymentInfo.fortimer.creatDebit超时。但在数据库上执行查询不会遇到超时问题,并在几秒钟内运行。
通过重新启动服务器,这两个问题都消失了。

  1. <Jun 28, 2023 1:20:37,835 PM IRST> <Error> <EJB> <BEA-011088> <The following error occurred while invoking the ejbTimeout(javax.ejb.Timer) method of EJB SamanElectronicPaymentTimer(Application: eservice-web, EJBComponent: eservice-web.war).
  2. javax.ejb.EJBException: EJB Exception: : com.oracle.pitchfork.interfaces.LifecycleCallbackException: Failure to invoke public java.lang.Object org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(javax.interceptor.InvocationContext) throws java.lang.Exception on bean class class org.jboss.weld.ejb.SessionBeanInterceptor with args: [LifecycleEventCallbackInvocationContext(1523997077)]
  3. at com.oracle.pitchfork.inject.Jsr250Metadata.invokeLifecycleMethod(Jsr250Metadata.java:391)
  4. at com.oracle.pitchfork.intercept.LifecycleEventCallbackInvocationContext.proceed(LifecycleEventCallbackInvocationContext.java:121)
  5. at com.oracle.pitchfork.intercept.LifecycleEventCallbackInvocationContext.proceed(LifecycleEventCallbackInvocationContext.java:150)
  6. at com.oracle.pitchfork.intercept.InterceptionMetadata.invokeTimeoutMethod(InterceptionMetadata.java:626)
  7. at weblogic.ejb.container.injection.EjbComponentCreatorImpl.invokeTimer(EjbComponentCreatorImpl.java:71)
  8. at weblogic.ejb.container.injection.InjectionBasedEjbComponentCreator.invokeTimer(InjectionBasedEjbComponentCreator.java:193)
  9. at weblogic.ejb.container.manager.BaseEJBManager.invokeTimeoutMethod(BaseEJBManager.java:199)
  10. at weblogic.ejb.container.timer.TimerImpl.timerExpired(TimerImpl.java:343)
  11. at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:301)
  12. at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:678)
  13. at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352)
  14. at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337)
  15. at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57)
  16. at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
  17. at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:652)
  18. at weblogic.work.ExecuteThread.execute(ExecuteThread.java:420)
  19. at weblogic.work.ExecuteThread.run(ExecuteThread.java:360)
  20. Caused by: java.lang.reflect.InvocationTargetException
  21. at sun.reflect.GeneratedMethodAccessor254.invoke(Unknown Source)
  22. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  23. at java.lang.reflect.Method.invoke(Method.java:498)
  24. at com.oracle.pitchfork.inject.Jsr250Metadata.invokeLifecycleMethod(Jsr250Metadata.java:388)
  25. ... 16 more
  26. Caused by: com.oracle.pitchfork.interfaces.LifecycleCallbackException: Failure to invoke timeout method public void ir.tamin.insurance.eservice.ws.rest.bank.SamanElectronicPaymentTimer.createDebitWithTimer() on bean class class ir.tamin.insurance.eservice.ws.rest.bank.SamanElectronicPaymentTimer_9io334_Impl with args: []]
  27. at com.oracle.pitchfork.inject.Jsr250Metadata.invokeTimeoutMethodInternal(Jsr250Metadata.java:376)
  28. at com.oracle.pitchfork.intercept.LifecycleEventCallbackInvocationContext.proceed(LifecycleEventCallbackInvocationContext.java:126)
  29. at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:73)
  30. at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)
  31. ... 20 more
  32. Caused by: java.lang.reflect.InvocationTargetException
  33. at sun.reflect.GeneratedMethodAccessor3729.invoke(Unknown Source)
  34. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  35. at java.lang.reflect.Method.invoke(Method.java:498)
  36. at com.oracle.pitchfork.inject.Jsr250Metadata.invokeTimeoutMethodInternal(Jsr250Metadata.java:373)
  37. ... 23 more
  38. Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.5.v20170607-b3d05bd): org.eclipse.persistence.exceptions.DatabaseException
  39. Internal Exception: java.sql.SQLException: Attempt to set connection harvestable to false but the connection is already closed.
  40. Error Code: 0
  41. Call: SELECT * FROM (SELECT /*+ FIRST_ROWS(1000) */ a.*, ROWNUM rnum FROM (SELECT RESNUM AS a1, AMOUNT AS a2, CONFIRM_DATE AS a3, CONTRACT_NUMBER AS a4, CREATE_DATE AS a5, END_DATE AS a6, GARDESH_END_DATE AS a7, GARDESH_START_DATE AS a8, SOLDIER_INST_COUNT AS a9, INSURANCE_ID AS a10, NATIONAL_CODE AS a11, ORD_ORDNO AS a12, ORP_ORDROW AS a13, REFNUM AS a14, RRN AS a15, SECUREPAN AS a16, SERVICENAME AS a17, START_DATE AS a18, STATE AS a19, STATUS AS a20, SYSTEMTYPE AS a21, TICKET AS a22, TICKET_BCKUP AS a23, TRACENO AS a24, USER_ID AS a25, WAGE AS a26 FROM ONLINEPAYMENTINFO WHERE (((((TICKET IS NOT NULL) AND (ORD_ORDNO IS NULL)) AND (ORP_ORDROW IS NULL)) AND STATE LIKE ?) AND (SYSTEMTYPE IN (?, ?, ?)))) a WHERE ROWNUM <= ?) WHERE rnum > ?
  42. bind => [%SUCCESSFUL%, 01, 03, 04, 1000, 0]
  43. Query: ReadAllQuery(name="getOnlinePaymentInfo.fortimer.creatDebit" referenceClass=OnlinePaymentInfo sql="SELECT * FROM (SELECT /*+ FIRST_ROWS(1000) */ a.*, ROWNUM rnum FROM (SELECT RESNUM AS a1, AMOUNT AS a2, CONFIRM_DATE AS a3, CONTRACT_NUMBER AS a4, CREATE_DATE AS a5, END_DATE AS a6, GARDESH_END_DATE AS a7, GARDESH_START_DATE AS a8, SOLDIER_INST_COUNT AS a9, INSURANCE_ID AS a10, NATIONAL_CODE AS a11, ORD_ORDNO AS a12, ORP_ORDROW AS a13, REFNUM AS a14, RRN AS a15, SECUREPAN AS a16, SERVICENAME AS a17, START_DATE AS a18, STATE AS a19, STATUS AS a20, SYSTEMTYPE AS a21, TICKET AS a22, TICKET_BCKUP AS a23, TRACENO AS a24, USER_ID AS a25, WAGE AS a26 FROM ONLINEPAYMENTINFO WHERE (((((TICKET IS NOT NULL) AND (ORD_ORDNO IS NULL)) AND (ORP_ORDROW IS NULL)) AND STATE LIKE ?) AND (SYSTEMTYPE IN (?, ?, ?)))) a WHERE ROWNUM <= ?) WHERE rnum > ?")
  44. at org.eclipse.persistence.internal.jpa.QueryImpl.getDetailedException(QueryImpl.java:387)
  45. at org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:260)
  46. at org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:478)
  47. at ir.tamin.insurance.eservice.ws.rest.bank.SamanElectronicPaymentTimer.createDebitWithTimer(SamanElectronicPaymentTimer.java:68)
  48. ... 27 more
  49. Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.5.v20170607-b3d05bd): org.eclipse.persistence.exceptions.DatabaseException
  50. Internal Exception: java.sql.SQLException: Attempt to set connection harvestable to false but the connection is already closed.
  51. Error Code: 0
  52. Call: SELECT * FROM (SELECT /*+ FIRST_ROWS(1000) */ a.*, ROWNUM rnum FROM (SELECT RESNUM AS a1, AMOUNT AS a2, CONFIRM_DATE AS a3, CONTRACT_NUMBER AS a4, CREATE_DATE AS a5, END_DATE AS a6, GARDESH_END_DATE AS a7, GARDESH_START_DATE AS a8, SOLDIER_INST_COUNT AS a9, INSURANCE_ID AS a10, NATIONAL_CODE AS a11, ORD_ORDNO AS a12, ORP_ORDROW AS a13, REFNUM AS a14, RRN AS a15, SECUREPAN AS a16, SERVICENAME AS a17, START_DATE AS a18, STATE AS a19, STATUS AS a20, SYSTEMTYPE AS a21, TICKET AS a22, TICKET_BCKUP AS a23, TRACENO AS a24, USER_ID AS a25, WAGE AS a26 FROM ONLINEPAYMENTINFO WHERE (((((TICKET IS NOT NULL) AND (ORD_ORDNO IS NULL)) AND (ORP_ORDROW IS NULL)) AND STATE LIKE ?) AND (SYSTEMTYPE IN (?, ?, ?)))) a WHERE ROWNUM <= ?) WHERE rnum > ?
  53. bind => [%SUCCESSFUL%, 01, 03, 04, 1000, 0]
  54. Query: ReadAllQuery(name="getOnlinePaymentInfo.fortimer.creatDebit" referenceClass=OnlinePaymentInfo sql="SELECT * FROM (SELECT /*+ FIRST_ROWS(1000) */ a.*, ROWNUM rnum FROM (SELECT RESNUM AS a1, AMOUNT AS a2, CONFIRM_DATE AS a3, CONTRACT_NUMBER AS a4, CREATE_DATE AS a5, END_DATE AS a6, GARDESH_END_DATE AS a7, GARDESH_START_DATE AS a8, SOLDIER_INST_COUNT AS a9, INSURANCE_ID AS a10, NATIONAL_CODE AS a11, ORD_ORDNO AS a12, ORP_ORDROW AS a13, REFNUM AS a14, RRN AS a15, SECUREPAN AS a16, SERVICENAME AS a17, START_DATE AS a18, STATE AS a19, STATUS AS a20, SYSTEMTYPE AS a21, TICKET AS a22, TICKET_BCKUP AS a23, TRACENO AS a24, USER_ID AS a25, WAGE AS a26 FROM ONLINEPAYMENTINFO WHERE (((((TICKET IS NOT NULL) AND (ORD_ORDNO IS NULL)) AND (ORP_ORDROW IS NULL)) AND STATE LIKE ?) AND (SYSTEMTYPE IN (?, ?, ?)))) a WHERE ROWNUM <= ?) WHERE rnum > ?")
  55. at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:316)
  56. at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:147)
  57. at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
  58. at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:346)
  59. at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:309)
  60. at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.reconnect(DatasourceAccessor.java:581)
  61. at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.reconnect(DatabaseAccessor.java:1634)
  62. at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.incrementCallCount(DatasourceAccessor.java:321)
  63. at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:615)
  64. at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:560)
  65. at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:2062)
  66. at org.eclipse.persistence.sessions.server.ServerSession.executeCall(ServerSession.java:570)
  67. at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:261)
  68. at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:260)
  69. at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:246)
  70. at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:317)
  71. at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.selectAllRows(DatasourceCallQueryMechanism.java:712)
  72. at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectAllRowsFromTable(ExpressionQueryMechanism.java:2740)
  73. at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectAllRows(ExpressionQueryMechanism.java:2693)
  74. at org.eclipse.persistence.queries.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:559)
  75. at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:1175)
  76. at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:911)
  77. at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1134)
  78. at org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:460)
  79. at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:1222)
  80. at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2899)
  81. at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1863)
  82. at org.eclipse.persistence.internal.sessions.AbstractSession.retryQuery(AbstractSession.java:1934)
  83. at org.eclipse.persistence.sessions.server.ClientSession.retryQuery(ClientSession.java:697)
  84. at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.retryQuery(UnitOfWorkImpl.java:5539)
  85. at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1900)
  86. at org.eclipse.persistence.internal.sessions.AbstractSession.retryQuery(AbstractSession.java:1934)
  87. at org.eclipse.persistence.sessions.server.ClientSession.retryQuery(ClientSession.java:697)
  88. at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.retryQuery(UnitOfWorkImpl.java:5539)
  89. at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1900)
  90. at org.eclipse.persistence.internal.sessions.AbstractSession.retryQuery(AbstractSession.java:1934)
  91. at org.eclipse.persistence.sessions.server.ClientSession.retryQuery(ClientSession.java:697)
  92. at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.retryQuery(UnitOfWorkImpl.java:5539)
  93. at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1900)
  94. at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1845)
  95. at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1810)
  96. at org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:258)
  97. ... 29 more
  98. Caused by: java.sql.SQLException: Attempt to set connection harvestable to false but the connection is already closed.
  99. at weblogic.jdbc.wrapper.Connection.setConnectionHarvestable(Connection.java:1590)
  100. at weblogic.jdbc.common.internal.RmiDataSource.getConnectionInternal(RmiDataSource.java:673)
  101. at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:594)
  102. at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:587)
  103. at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135)
  104. ... 69 more
  105. at weblogic.ejb.container.internal.EJBRuntimeUtils.asEJBException(EJBRuntimeUtils.java:86)
  106. at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:461)
  107. at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:410)
  108. at weblogic.ejb.container.internal.BaseLocalObject.postInvoke1(BaseLocalObject.java:239)
  109. at weblogic.ejb.container.internal.TimerDrivenLocalObject.postInvoke(TimerDrivenLocalObject.java:53)
  110. Truncated.
  111. Caused By: com.oracle.pitchfork.interfaces.LifecycleCallbackException: Failure to invoke public java.lang.Object org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(javax.interceptor.InvocationContext) throws java.lang.Exception on bean class class org.jboss.weld.ejb.SessionBeanInterceptor with args: [LifecycleEventCallbackInvocationContext(1523997077)]
  112. at com.oracle.pitchfork.inject.Jsr250Metadata.invokeLifecycleMethod(Jsr250Metadata.java:391)
  113. at com.oracle.pitchfork.intercept.LifecycleEventCallbackInvocationContext.proceed(LifecycleEventCallbackInvocationContext.java:121)
  114. at com.oracle.pitchfork.intercept.LifecycleEventCallbackInvocationContext.proceed(LifecycleEventCallbackInvocationContext.java:150)
  115. at com.oracle.pitchfork.intercept.InterceptionMetadata.invokeTimeoutMethod(InterceptionMetadata.java:626)
  116. at weblogic.ejb.container.injection.EjbComponentCreatorImpl.invokeTimer(EjbComponentCreatorImpl.java:71)
  117. Truncated.
  118. Caused By: java.lang.reflect.InvocationTargetException
  119. at sun.reflect.GeneratedMethodAccessor254.invoke(Unknown Source)
  120. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  121. at java.lang.reflect.Method.invoke(Method.java:498)
  122. at com.oracle.pitchfork.inject.Jsr250Metadata.invokeLifecycleMethod(Jsr250Metadata.java:388)
  123. at com.oracle.pitchfork.intercept.LifecycleEventCallbackInvocationContext.proceed(LifecycleEventCallbackInvocationContext.java:121)
  124. Truncated.
  125. Caused By: com.oracle.pitchfork.interfaces.LifecycleCallbackException: Failure to invoke timeout method public void ir.tamin.insurance.eservice.ws.rest.bank.SamanElectronicPaymentTimer.createDebitWithTimer() on bean class class ir.tamin.insurance.eservice.ws.rest.bank.SamanElectronicPaymentTimer_9io334_Impl with args: []]
  126. at com.oracle.pitchfork.inject.Jsr250Metadata.invokeTimeoutMethodInternal(Jsr250Metadata.java:376)
  127. at com.oracle.pitchfork.intercept.LifecycleEventCallbackInvocationContext.proceed(LifecycleEventCallbackInvocationContext.java:126)
  128. at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:73)
  129. at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)
  130. at sun.reflect.GeneratedMethodAccessor254.invoke(Unknown Source)
  131. Truncated.
  132. Caused By: java.lang.reflect.InvocationTargetException
  133. at sun.reflect.GeneratedMethodAccessor3729.invoke(Unknown Source)
  134. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  135. at java.lang.reflect.Method.invoke(Method.java:498)
  136. at com.oracle.pitchfork.inject.Jsr250Metadata.invokeTimeoutMethodInternal(Jsr250Metadata.java:373)
  137. at com.oracle.pitchfork.intercept.LifecycleEventCallbackInvocationContext.proceed(LifecycleEventCallbackInvocationContext.java:126)
  138. Truncated.
  139. Caused By: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.5.v20170607-b3d05bd): org.eclipse.persistence.exceptions.DatabaseException
  140. Internal Exception: java.sql.SQLException: Attempt to set connection harvestable to false but the connection is already closed.
  141. Error Code: 0
  142. Call: SELECT * FROM (SELECT /*+ FIRST_ROWS(1000) */ a.*, ROWNUM rnum FROM (SELECT RESNUM AS a1, AMOUNT AS a2, CONFIRM_DATE AS a3, CONTRACT_NUMBER AS a4, CREATE_DATE AS a5, END_DATE AS a6, GARDESH_END_DATE AS a7, GARDESH_START_DATE AS a8, SOLDIER_INST_COUNT AS a9, INSURANCE_ID AS a10, NATIONAL_CODE AS a11, ORD_ORDNO AS a12, ORP_ORDROW AS a13, REFNUM AS a14, RRN AS a15, SECUREPAN AS a16, SERVICENAME AS a17, START_DATE AS a18, STATE AS a19, STATUS AS a20, SYSTEMTYPE AS a21, TICKET AS a22, TICKET_BCKUP AS a23, TRACENO AS a24, USER_ID AS a25, WAGE AS a26 FROM ONLINEPAYMENTINFO WHERE (((((TICKET IS NOT NULL) AND (ORD_ORDNO IS NULL)) AND (ORP_ORDROW IS NULL)) AND STATE LIKE ?) AND (SYSTEMTYPE IN (?, ?, ?)))) a WHERE ROWNUM <= ?) WHERE rnum > ?
  143. bind => [%SUCCESSFUL%, 01, 03, 04, 1000, 0]
  144. Query: ReadAllQuery(name="getOnlinePaymentInfo.fortimer.creatDebit" referenceClass=OnlinePaymentInfo sql="SELECT * FROM (SELECT /*+ FIRST_ROWS(1000) */ a.*, ROWNUM rnum FROM (SELECT RESNUM AS a1, AMOUNT AS a2, CONFIRM_DATE AS a3, CONTRACT_NUMBER AS a4, CREATE_DATE AS a5, END_DATE AS a6, GARDESH_END_DATE AS a7, GARDESH_START_DATE AS a8, SOLDIER_INST_COUNT AS a9, INSURANCE_ID AS a10, NATIONAL_CODE AS a11, ORD_ORDNO AS a12, ORP_ORDROW AS a13, REFNUM AS a14, RRN AS a15, SECUREPAN AS a16, SERVICENAME AS a17, START_DATE AS a18, STATE AS a19, STATUS AS a20, SYSTEMTYPE AS a21, TICKET AS a22, TICKET_BCKUP AS a23, TRACENO AS a24, USER_ID AS a25, WAGE AS a26 FROM ONLINEPAYMENTINFO WHERE (((((TICKET IS NOT NULL) AND (ORD_ORDNO IS NULL)) AND (ORP_ORDROW IS NULL)) AND STATE LIKE ?) AND (SYSTEMTYPE IN (?, ?, ?)))) a WHERE ROWNUM <= ?) WHERE rnum > ?")
  145. at org.eclipse.persistence.internal.jpa.QueryImpl.getDetailedException(QueryImpl.java:387)
  146. at org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:260)
  147. at org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:478)
  148. at ir.tamin.insurance.eservice.ws.rest.bank.SamanElectronicPaymentTimer.createDebitWithTimer(SamanElectronicPaymentTimer.java:68)
  149. at sun.reflect.GeneratedMethodAccessor3729.invoke(Unknown Source)
  150. Truncated.
  151. Caused By: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.5.v20170607-b3d05bd): org.eclipse.persistence.exceptions.DatabaseException
  152. Internal Exception: java.sql.SQLException: Attempt to set connection harvestable to false but the connection is already closed.
  153. Error Code: 0
  154. Call: SELECT * FROM (SELECT /*+ FIRST_ROWS(1000) */ a.*, ROWNUM rnum FROM (SELECT RESNUM AS a1, AMOUNT AS a2, CONFIRM_DATE AS a3, CONTRACT_NUMBER AS a4, CREATE_DATE AS a5, END_DATE AS a6, GARDESH_END_DATE AS a7, GARDESH_START_DATE AS a8, SOLDIER_INST_COUNT AS a9, INSURANCE_ID AS a10, NATIONAL_CODE AS a11, ORD_ORDNO AS a12, ORP_ORDROW AS a13, REFNUM AS a14, RRN AS a15, SECUREPAN AS a16, SERVICENAME AS a17, START_DATE AS a18, STATE AS a19, STATUS AS a20, SYSTEMTYPE AS a21, TICKET AS a22, TICKET_BCKUP AS a23, TRACENO AS a24, USER_ID AS a25, WAGE AS a26 FROM ONLINEPAYMENTINFO WHERE (((((TICKET IS NOT NULL) AND (ORD_ORDNO IS NULL)) AND (ORP_ORDROW IS NULL)) AND STATE LIKE ?) AND (SYSTEMTYPE IN (?, ?, ?)))) a WHERE ROWNUM <= ?) WHERE rnum > ?
  155. bind => [%SUCCESSFUL%, 01, 03, 04, 1000, 0]
  156. Query: ReadAllQuery(name="getOnlinePaymentInfo.fortimer.creatDebit" referenceClass=OnlinePaymentInfo sql="SELECT * FROM (SELECT /*+ FIRST_ROWS(1000) */ a.*, ROWNUM rnum FROM (SELECT RESNUM AS a1, AMOUNT AS a2, CONFIRM_DATE AS a3, CONTRACT_NUMBER AS a4, CREATE_DATE AS a5, END_DATE AS a6, GARDESH_END_DATE AS a7, GARDESH_START_DATE AS a8, SOLDIER_INST_COUNT AS a9, INSURANCE_ID AS a10, NATIONAL_CODE AS a11, ORD_ORDNO AS a12, ORP_ORDROW AS a13, REFNUM AS a14, RRN AS a15, SECUREPAN AS a16, SERVICENAME AS a17, START_DATE AS a18, STATE AS a19, STATUS AS a20, SYSTEMTYPE AS a21, TICKET AS a22, TICKET_BCKUP AS a23, TRACENO AS a24, USER_ID AS a25, WAGE AS a26 FROM ONLINEPAYMENTINFO WHERE (((((TICKET IS NOT NULL) AND (ORD_ORDNO IS NULL)) AND (ORP_ORDROW IS NULL)) AND STATE LIKE ?) AND (SYSTEMTYPE IN (?, ?, ?)))) a WHERE ROWNUM <= ?) WHERE rnum > ?")
  157. at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:316)
  158. at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:147)
  159. at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
  160. at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:346)
  161. at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:309)
  162. Truncated.
  163. Caused By: java.sql.SQLException: Attempt to set connection harvestable to false but the connection is already closed.
  164. at weblogic.jdbc.wrapper.Connection.setConnectionHarvestable(Connection.java:1590)
  165. at weblogic.jdbc.common.internal.RmiDataSource.getConnectionInternal(RmiDataSource.java:673)
  166. at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:594)
  167. at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:587)
  168. at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135)
  169. Truncated.
  170. >


我不知道为什么一个计时器会停止工作在第一个地方,加上为什么事务超时,而它不是直接执行查询数据库?
weblogic是否在每次执行时都停止调度程序?

zmeyuzjn

zmeyuzjn1#

如果定时器是持久的(@Schedule(persistent = true)),请检查定时器数据是否正确持久化。如果定时器的状态没有正确存储,可能会影响定时器的重新调度。

相关问题