Description
The Javadoc for Driver#connect(String, Properties) states:
The driver should return "null" if it realizes it is the wrong kind of driver to connect to the given URL.
Agroal does not perform a null check, leading to an opaque NPE if the driver returns null. It would be helpful if Agroal noticed this and threw an exception that explains the problem.
11:34:23,808 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 46) MSC000001: Failed to start service jboss.persistenceunit."song-gaming-portal.war#GamingPortalPU": org.jboss.msc.service.StartException in service jboss.persistenceunit."song-gaming-portal.war#GamingPortalPU": javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.7.1.v20171221-bd47e8f): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: java.sql.SQLException: Exception while creating new connection Error Code: 0 at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:195) [wildfly-jpa-14.0.0.Final.jar:14.0.0.Final] at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:125) [wildfly-jpa-14.0.0.Final.jar:14.0.0.Final] at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:650) [wildfly-elytron-1.6.0.Final.jar:1.6.0.Final] at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:209) [wildfly-jpa-14.0.0.Final.jar:14.0.0.Final] at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378) at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_181] at org.jboss.threads.JBossThread.run(JBossThread.java:485) Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.7.1.v20171221-bd47e8f): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: java.sql.SQLException: Exception while creating new connection Error Code: 0 at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:846) [eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f] at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:216) [eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f] at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:194) [eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f] at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getDatabaseSession(EntityManagerFactoryImpl.java:540) [eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f] at org.eclipse.persistence.jpa.PersistenceProvider.createContainerEntityManagerFactoryImpl(PersistenceProvider.java:385) [eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f] at org.eclipse.persistence.jpa.PersistenceProvider.createContainerEntityManagerFactory(PersistenceProvider.java:313) [eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f] at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:357) [wildfly-jpa-14.0.0.Final.jar:14.0.0.Final] at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$1300(PersistenceUnitServiceImpl.java:70) [wildfly-jpa-14.0.0.Final.jar:14.0.0.Final] at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:187) [wildfly-jpa-14.0.0.Final.jar:14.0.0.Final] ... 9 more Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.7.1.v20171221-bd47e8f): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: java.sql.SQLException: Exception while creating new connection Error Code: 0 at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:316) [eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f] at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:147) [eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f] at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:170) [eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f] at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.setOrDetectDatasource(DatabaseSessionImpl.java:228) [eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f] at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:804) [eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f] at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:254) [eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f] at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:759) [eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f] ... 17 more Caused by: java.sql.SQLException: Exception while creating new connection at io.agroal.pool.ConnectionPool.handlerFromSharedCache(ConnectionPool.java:215) at io.agroal.pool.ConnectionPool.getConnection(ConnectionPool.java:137) at io.agroal.pool.DataSource.getConnection(DataSource.java:61) at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135) [eclipselink-2.7.1.jar:2.7.1.v20171221-bd47e8f] ... 22 more Caused by: java.util.concurrent.ExecutionException: java.lang.NullPointerException at java.util.concurrent.FutureTask.report(FutureTask.java:122) [rt.jar:1.8.0_181] at java.util.concurrent.FutureTask.get(FutureTask.java:192) [rt.jar:1.8.0_181] at io.agroal.pool.ConnectionPool.handlerFromSharedCache(ConnectionPool.java:197) ... 25 more Caused by: java.lang.NullPointerException at io.agroal.pool.ConnectionFactory.connectionSetup(ConnectionFactory.java:180) at io.agroal.pool.ConnectionFactory.createConnection(ConnectionFactory.java:169) at io.agroal.pool.ConnectionPool$CreateConnectionTask.call(ConnectionPool.java:316) at io.agroal.pool.ConnectionPool$CreateConnectionTask.call(ConnectionPool.java:305) at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_181] at io.agroal.pool.util.PriorityScheduledExecutor.beforeExecute(PriorityScheduledExecutor.java:66) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) [rt.jar:1.8.0_181] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_181] at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_181]