JBoss v.s. Tomcat JDBC驱动程序注册差异

时间:2011-09-13 17:04:14

标签: java tomcat jdbc jboss registration

我有一个JDBC驱动器,我以前习惯使用JBoss 7我已经切换到Tomcat(也是v7)以便在调试时更快部署,并注意到相同的JDBC驱动程序不再自动加载。我必须自己手动注册,然后工作。这在Tomcat中是不是在JBoss中不存在?

我原以为JBoss在内部使用了Tomcat ......

P.S:我正在针对JRE 1.6运行所有内容,因此应该自动注册。

1 个答案:

答案 0 :(得分:1)

自动JDBC驱动程序注册取决于提供调用Driver的静态初始化程序块的DriverManager.registerDriver(...)实现;只有在加载Driver类时才会调用该块。有可能驱动程序实现没有这样的静态初始化程序,或者应用程序服务器没有加载类(不太可能)。

如果驱动程序声称是JDBC 4.0兼容驱动程序,请考虑在没有静态初始化程序块的情况下提交错误,因为JDBC 4.0规范的第9.2节明确指出(强调我的):

  

JDBC驱动程序必须实现Driver接口,并且   实现必须包含一个静态初始化程序   加载驱动程序时调用。此初始化程序注册一个新的   使用DriverManager自身的实例,如代码示例所示   9-1。

public class AcmeJdbcDriver implements java.sql.Driver {
  static {
    java.sql.DriverManager.registerDriver(new AcmeJdbcDriver());
  }
  ...
}
  

代码示例9-1驱动程序实现的静态初始化程序示例   java.sql.Driver中