2010-06-09 94 views
1

我使用weblogic 10. 它提供了一個Oracle JDBC驅動程序10.2.0.2(在weblogic home的server/lib中)。Weblogic服務器lib VS實例libext

實際上有人在工作中很久以前就在實例文件夾中放入了一個10.2.0.3驅動程序。

但是在生產中,我們得到了一個jdbc驅動程序堆棧(nullpointer:O),並且通過逆向工程,似乎我們使用的是驅動程序10.2.0.2。

我們知道我們可以更改weblogic的服務器/ lib中的驅動程序,但我想了解。

是不是libext應該重寫像META-INF的服務器庫libs覆蓋libext?

通過我們正處於一個奇怪的現象方式: - 我們有2個EAR,並在這些2完全相同的待遇,一個有時會扔Oracle驅動程序空指針,而另一個沒有 - 我不知道一個耳朵不使用10.2.0.2,而另一個耳朵使用10.2.0.3(我看到一個修復的bug,可以適應我們這個版本的問題)。 - 我需要看起來更好,但乍一看,雙耳使用完全相同的數據源設置在weblogic JNDI資源

任何想法?

回答

1

沒有人應該把任何東西放到lib/ext目錄中,特別是不要使用JDBC驅動程序JAR。該目錄用於庫擴展。我會立即從lib/ext中刪除該JAR。

正如你所說,如果10.2.0.3版本是一個錯誤修復,放置它的正確位置應該是server/lib,而不是lib/ext。

兩個EARs是指兩個獨立的服務器還是兩個不同的端口?我不確定爲什麼WebLogic會爲相同的配置選擇一個驅動程序。

+0

其實我在10.2.0.3版本說明中的錯誤固定的看到: 4688156 NullPointerException異常可能,如果發生網絡錯誤 - >我認爲這是我們得到了什麼? 同樣的Weblogic文檔本身是最高審計機關要更新我們可以用驅動程序替換server/lib中的文件 我完全不知道爲什麼它會使用一個驅動程序作爲耳朵,另一個用於其他驅動程序......這是我發現的唯一可以解釋爲什麼常見處理(初始化一個翻譯緩存)可以在一個耳朵上工作,而不是在另一個耳機上工作(在應用程序啓動時失敗大約40%)... – 2010-06-09 10:12:15

+0

但實際上我的問題是不知道將jdbc驅動程序放在解壓縮文件中是否是一種好的做法,但如果它應該重寫weblogic提供的oracle jdbc驅動程序:) – 2010-06-09 11:29:14

+0

我想你有你的答案:「有時候」。我認爲這不是一個非常令人滿意的答案。從lib/ext中刪除JAR - 除了Sun的擴展外,你不應該放置任何東西。對於不懂CLASSPATH或認爲自己聰明的人來說,這並不意味着成爲柺杖。 – duffymo 2010-06-09 13:29:59

1

由於@duffymo和Oracle文檔狀態:http://download.oracle.com/docs/cd/E11035_01/wls100/jdbc_admin/third_party_drivers.html#wp1048361驅動程序的位置應該是server/lib。

你可以從每個EAR上的JSP運行這個 - 這應該給你從加載驅動程序的jar文件。

try { 
    String candidate = "oracle.jdbc.driver.OracleDriver"; 
    Class clazz = Class.forName(candidate); 
    java.security.ProtectionDomain dom = clazz.getProtectionDomain(); 
    java.security.CodeSource cs = dom.getCodeSource(); 
    java.net.URL url = cs.getLocation(); 
    out.println("<TITLE>" + candidate + "</TITLE></head><body>"); 
    out.println("Path for " + candidate + " = " + url.getFile()); 
} catch (Exception t) { 
    t.printStackTrace(response.getWriter()); 
}