我有一个 JDBC 驱动器,我以前在 JBoss 7 上使用得很好我已经切换到 Tomcat(也是 v7)以便在调试时更快地部署并注意到不再自动加载相同的 JDBC 驱动程序。我必须自己手动注册,然后才起作用。这是 Tomcat 中 JBoss 中不存在的限制吗?
我还以为JBoss内部用的是Tomcat....
P.S:我正在针对 JRE 1.6 运行所有内容,因此应该提供自动注册。
最佳答案
自动 JDBC 驱动程序注册取决于 Driver
实现,它提供一个调用 DriverManager.registerDriver(...)
的静态初始化程序 block ;只有在加载 Driver
类时才会调用该 block 。可能是驱动程序实现没有这样的静态初始化器,或者应用程序服务器没有加载类(不太可能)。
如果驱动程序声称是 JDBC 4.0 兼容驱动程序,如果没有静态初始化程序 block ,请考虑提交错误,因为 JDBC 4.0 规范的第 9.2 节特别指出(强调我的):
JDBC drivers must implement the Driver interface, and the implementation must contain a static initializer that will be called when the driver is loaded. This initializer registers a new instance of itself with the DriverManager, as shown in CODE EXAMPLE 9-1.
public class AcmeJdbcDriver implements java.sql.Driver {
static {
java.sql.DriverManager.registerDriver(new AcmeJdbcDriver());
}
...
}
CODE EXAMPLE 9-1 Example static initializer for a driver implementing java.sql.Driver
关于java - JBoss 对比Tomcat JDBC 驱动程序注册差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7405679/