diff --git a/src/main/java/com/avaje/ebeaninternal/api/ClassUtil.java b/src/main/java/com/avaje/ebeaninternal/api/ClassUtil.java index 380abe714..8e3f0679e 100644 --- a/src/main/java/com/avaje/ebeaninternal/api/ClassUtil.java +++ b/src/main/java/com/avaje/ebeaninternal/api/ClassUtil.java @@ -23,7 +23,7 @@ public class ClassUtil { /** * Load a class taking into account a context class loader (if present). */ - private static Class> forName(String name) throws ClassNotFoundException { + public static Class> forName(String name) throws ClassNotFoundException { return new ClassLoadContext().forName(name); } diff --git a/src/main/java/com/avaje/ebeaninternal/server/lib/sql/DataSourcePool.java b/src/main/java/com/avaje/ebeaninternal/server/lib/sql/DataSourcePool.java index c69983ac4..2bb82e9d0 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/lib/sql/DataSourcePool.java +++ b/src/main/java/com/avaje/ebeaninternal/server/lib/sql/DataSourcePool.java @@ -1,5 +1,12 @@ package com.avaje.ebeaninternal.server.lib.sql; +import com.avaje.ebean.config.DataSourceConfig; +import com.avaje.ebeaninternal.api.ClassUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.PersistenceException; +import javax.sql.DataSource; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; @@ -12,15 +19,6 @@ import java.util.Map.Entry; import java.util.Properties; import java.util.Set; -import javax.persistence.PersistenceException; -import javax.sql.DataSource; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.avaje.ebean.config.DataSourceConfig; -import com.avaje.ebeaninternal.api.ClassUtil; - /** * A robust DataSource. *
@@ -244,6 +242,13 @@ public class DataSourcePool implements DataSource { private void initialise() throws SQLException { + // Ensure database driver is loaded + try { + ClassUtil.forName(this.databaseDriver); + } catch (Throwable e) { + throw new PersistenceException("Problem loading Database Driver [" + this.databaseDriver + "]: " + e.getMessage(), e); + } + String transIsolation = TransactionIsolation.getLevelDescription(transactionIsolation); //noinspection StringBufferReplaceableByString StringBuilder sb = new StringBuilder(70); diff --git a/src/test/resources/ebean.properties b/src/test/resources/ebean.properties index 67c0f3e55..fabebeacb 100644 --- a/src/test/resources/ebean.properties +++ b/src/test/resources/ebean.properties @@ -117,6 +117,8 @@ datasource.pg.databaseDriver=org.postgresql.Driver datasource.ms.username=test datasource.ms.password=test -datasource.ms.databaseUrl=jdbc:sqlserver://192.168.1.70:1433;databaseName=test +datasource.ms.databaseUrl=jdbc:sqlserver://192.168.1.67:1433;databaseName=test datasource.ms.databaseDriver=com.microsoft.sqlserver.jdbc.SQLServerDriver - +#datasource.ms.databaseUrl=jdbc:jtds:sqlserver://192.168.1.67:1433/test +#datasource.ms.databaseDriver=net.sourceforge.jtds.jdbc.Driver +#datasource.ms.heartbeatsql=select 1