2011-09-13 90 views
1

我有一個JDBC驅動器,我曾用JBoss 7很好用,因爲在調試時切換到Tomcat(也是v7)以加快部署,並且注意到相同的JDBC驅動程序不再自動加載。我必須手動註冊它自己,然後工作。這是不是在JBoss中存在的Tomcat中的一個讚美?JBoss v.s. Tomcat JDBC驅動程序註冊差異

我原以爲的JBoss使用Tomcat內部....

P.S:我正在對JRE 1.6使自動登記的一切應該是理所當然的。

回答

1

自動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()); 
    } 
    ... 
} 

實施 java.sql.Driver中的驅動程序代碼示例9-1例靜態初始化

+0

我不認爲你正確讀取我的問題。我知道這一切。我說的驅動器已註冊AUTOMATICALLY在JBoss 7中沒有問題,但在Tomcat 7下使用時需要通過DriverManager.registerDriver()進行手動註冊...我的問題是爲什麼JBoss基於Tomcat的缺點...這不是驅動程序的問題,因爲JBoss可以自動註冊它。 – Ayyoudy

+1

@Ayyoudy,我認爲你沒有正確閱讀我的答案。再次閱讀它。如果需要,請反編譯驅動程序,並瞭解爲什麼註冊過程在Tomcat中而不是在JBoss中失敗。唉,如果你不想發佈驅動程序的詳細信息,我只能提倡這麼多。 –