获取 SQLException:当使用系统属性定义资源时,Driver:org.hsqldb.jdbcDriver 在 tomee 中为 URL 返回空值

Getting SQLException: Driver:org.hsqldb.jdbcDriver returned null for URL in tomee when Resource is defined with system properties

我尝试通过系统属性定义 DataSource 资源(与将其放入 tomee.xml 相比)并获得与 Getting SQLException: Driver:org.hsqldb.jdbcDriver returned null for URL in tomee.

中完全相同的结果

不同的是,我为 属性 jdbcDriver 提供了一个值,并且我通过系统属性定义了我的数据源:

JAVA_OPTS="${JAVA_OPTS} -DmyDS='new://Resource?type=javax.sql.DataSource'"
JAVA_OPTS="${JAVA_OPTS} -DmyDS.jdbcDriver='com.mysql.jdbc.Driver'"
JAVA_OPTS="${JAVA_OPTS} -DmyDS.jdbcUrl='jdbc:mysql://ahost/adb'"
JAVA_OPTS="${JAVA_OPTS} -DmyDS.userName='auser'"
JAVA_OPTS="${JAVA_OPTS} -DmyDS.password='apass'"
JAVA_OPTS="${JAVA_OPTS} -DmyDS.maxActive=5"
JAVA_OPTS="${JAVA_OPTS} -DmyDS.maxIdle=5"
JAVA_OPTS="${JAVA_OPTS} -DmyDS.minIdle=1"
JAVA_OPTS="${JAVA_OPTS} -DmyDS.initialSize=1"

由于堆栈跟踪还包含 jdbcUrl 的值,我很确定这些值已由 TomEE 正确处理,只是似乎选择了错误的驱动程序 (HSQL)

mysql-连接器 JAR 在 $TOMEE_BASE/lib 中。将数据源定义放入 tomee.xml 中。

不确定您的 shell 但我会删除单引号。此外,即使不那么重要的 tomee 倾向于使用以大写字母开头的属性,即使大多数属性不区分大小写。

事实证明,原因是 class 加载程序冲突。 MySQL 连接器同时出现在 WAR(偶然)和 TomEE 中。从 WAR 中删除驱动程序后一切开始工作。

仍然很奇怪它回退到 HSQLDB 而没有进一步通知一些驱动程序问题。