I'm trying to configure a clustered store for EJB timers with JBoss EAP 7.4 (patched to JBoss EAP 7.4.5.GA WildFly Core 15.0.13.Final-redhat-00001).
Everything is working fine when I use my Postgres datasource and the clustered store as such:
<database-data-store name="clustered-store" datasource-jndi-name="java:jboss/datasources/postgresDS" database="postgresql" partition="timer"/>
But if I try and use Oracle instead
<database-data-store name="clustered-store" datasource-jndi-name="java:jboss/datasources/oracleDS" database="oracle" partition="timer"/>
I get this exception on startup
10:18:36,279 (MSC service thread 1-1) WFLYJCA0001: Bound data source [java:jboss/datasources/oracleDS]
10:18:36,279 (MSC service thread 1-6) WFLYJCA0001: Bound data source [java:jboss/datasources/ExampleDS]
10:18:36,282 (MSC service thread 1-5) MSC000001: Failed to start service org.wildfly.ejb3.timer-service.timer-persistence-service.clustered-store: org.jboss.msc.service.StartException in service org.wildfly.ejb3.timer-service.timer-persistence-service.clustered-store: Failed to start service
at org.jboss.msc@1.4.12.Final-redhat-00001//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1731)
at org.jboss.msc@1.4.12.Final-redhat-00001//org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
at org.jboss.threads@2.4.0.Final-redhat-00001//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads@2.4.0.Final-redhat-00001//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
at org.jboss.threads@2.4.0.Final-redhat-00001//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at org.jboss.threads@2.4.0.Final-redhat-00001//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.NullPointerException
at org.jboss.as.ejb3@7.4.5.GA-redhat-00001//org.jboss.as.ejb3.timerservice.persistence.database.DatabaseTimerPersistence.adjustCreateAutoTimerStatement(DatabaseTimerPersistence.java:323)
at org.jboss.as.ejb3@7.4.5.GA-redhat-00001//org.jboss.as.ejb3.timerservice.persistence.database.DatabaseTimerPersistence.identifyDialect(DatabaseTimerPersistence.java:311)
at org.jboss.as.ejb3@7.4.5.GA-redhat-00001//org.jboss.as.ejb3.timerservice.persistence.database.DatabaseTimerPersistence.investigateDialect(DatabaseTimerPersistence.java:280)
at org.jboss.as.ejb3@7.4.5.GA-redhat-00001//org.jboss.as.ejb3.timerservice.persistence.database.DatabaseTimerPersistence.start(DatabaseTimerPersistence.java:187)
at org.jboss.msc@1.4.12.Final-redhat-00001//org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)
at org.jboss.msc@1.4.12.Final-redhat-00001//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1701)
... 6 more
I've double checked timer-sql.properties and it seems "oracle" is the right name to use for JBoss to locate the appropriate script.
Since everything is working fine Postgres I'm assuming it's not something to do with the configuration of the beans themselves or @Schedule, and I fail to see why changing the underlying datasource would cause this.
Any help much appreciated.