JBoss v.s. Дискретность при регистрации драйвера Tomcat JDBC - PullRequest
1 голос
/ 13 сентября 2011

У меня есть диск JDBC, который я использовал для JBoss 7 очень хорошо. С тех пор я переключился на Tomcat (также v7) для более быстрого развертывания во время отладки и заметил, что тот же драйвер JDBC больше не загружался автоматически. Я должен был зарегистрировать это вручную самостоятельно, который тогда работал. Является ли это ударением в Tomcat, которого нет в JBoss?

Я думал, что JBoss внутренне использует Tomcat ....

P.S .: Я запускаю все против JRE 1.6, поэтому автоматическая регистрация должна быть предоставлена.

1 Ответ

1 голос
/ 13 сентября 2011

Автоматическая регистрация драйвера JDBC зависит от реализации Driver, обеспечивающей статический блок инициализатора, который вызывает DriverManager.registerDriver(...); блок вызывается только при загрузке класса Driver. Скорее всего, реализация драйвера не имеет такого статического инициализатора или сервер приложений не загружает класс (маловероятно).

Если драйвер заявляет, что он является драйвером, совместимым с JDBC 4.0, рассмотрите возможность сообщения об ошибке, если отсутствует статический блок инициализатора, как конкретно указано в разделе 9.2 спецификации JDBC 4.0 (выделено мое):

Драйверы JDBC должны реализовать интерфейс драйвера и реализация должна содержать статический инициализатор, который будет вызывается, когда драйвер загружен. Этот инициализатор регистрирует новый экземпляр самого себя с DriverManager, как показано в ПРИМ. КОДА 9-1.

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

ПРИМЕР КОДА 9-1 Пример статического инициализатора для драйвера, реализующего java.sql.Driver

...