黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Tomca教程
Tomcat Manager
Tomcat Realm 配置
Tomcat 安全管理
Tomcat JNDI 資源
Tomcat JDBC 數據源
Tomcat 類加載機制
Tomcat JSPs
Tomcat SSL/TLS配置
Tomcat SSI
Tomcat CGI
Tomcat 代理支持
Tomcat MBean 描述符
Tomcat 默認 Servlet
Tomcat 集群
Tomcat 連接器
Tomcat監控與管理
Tomcat 日志機制
Tomcat 基于 APR 的原生庫
Tomcat 虛擬主機
Tomcat 高級 IO 機制
Tomcat 附加組件
Tomcat 安全性注意事項
Tomcat Windows 服務
Tomcat Windows 認證
Tomcat 的 JDBC 連接池
Tomcat WebSocket 支持
Tomcat 重寫機制

Oracle 8i 與 OCI 客戶端

雖然并不能嚴格地解決如何使用 OCI 客戶端來創建 JNDI 數據源的問題,但這些注意事項卻能和上文提到的 Oracle 與 DBCP 解決方案結合起來使用。

為了使用 OCI 驅動,應該先安裝一個 Oracle 客戶。你應該已經通過光盤安裝好了 Oracle 8i(8.1.7)客戶端,并從 otn.oracle.com 下載了適用的 JDBC/OCI 驅動(Oracle8i 8.1.7.1 JDBC/OCI 驅動)。

將 classes12.zip 重命名為 classes12.jar 后,將其復制到 $CATALINA_HOME/lib 中。根據 Tomcat 的版本以及你所使用的 JDK,你可能還必須該文件中的刪除 javax.sql.* 類。

連接起來

確保在 $PATH 或 LD_LIBRARY_PATH(可能在 $ORAHOME\bin)目錄下存在 ocijdbc8.dll 或 .so 文件,另外還要確認能否使用 System.loadLibrary("ocijdbc8"); 這樣的簡單測試程序加載本地庫。

下面你應該創建一個簡單測試用 servlet 或 jsp,其中應該包含以下關鍵代碼:

DriverManager.registerDriver(new
oracle.jdbc.driver.OracleDriver());
conn =
DriverManager.getConnection("jdbc:oracle:oci8:@database","username","password");

目前數據庫是 host:port:SID 形式,如果你試圖訪問測試用servlet/jsp,那么你會得到一個 ServletException 異常,造成異常的根本原因在于 java.lang.UnsatisfiedLinkError:get_env_handle。

分析一下,首先 UnsatisfiedLinkError 表明:

JDBC 類文件和 Oracle 客戶端版本不匹配。消息中透露出的意思是沒有找到需要的庫文件。比如,你可能使用 Oracle 8.1.6 的 class12.zip 文件,而 Oracle 客戶端版本則是 8.1.5。classeXXXs.zip 文件必須與 Oracle 客戶端文件版本相一致。

出現了一個 $PATH, LD_LIBRARY_PATH 問題。

  • 有報告稱,忽略從 otn 網站下載的驅動,使用 $ORAHOME\jdbc\lib 目錄中的 class12.zip 文件,同樣能夠正常運作。

接下來,你可能還會遇到另一個錯誤消息:ORA-06401 NETCMN: invalid driver designator。

Oracle 文檔是這么說的:“異常原因:登錄(連接)字符串包含一個不合法的驅動標識符。解決方法:修改字符串,重新提交。”所以,如下面這樣來修改數據庫(host:port:SID)連接字符串:(description=(address=(host=myhost)(protocol=tcp)(port=1521))(connect_data=(sid=orcl)))

常見問題

下面是一些 Web 應用在使用數據庫時經常會遇到的問題,以及一些應對技巧。

數據庫連接間歇性失敗

Tomcat 運行在 JVM 中。JVM 周期性地會執行垃圾回收(GC),清除不再使用的 Java 對象。當 JVM 執行 GC 時,Tomcat 中的代碼執行就會終止。如果配置好的數據庫連接建立的最長時間小于垃圾回收的時間,數據庫連接就會失敗。

在啟動 Tomcat 時,將 -verbose:gc 參數添加到 CATALINA_OPTS 環境變量中,就能知道垃圾回收所占用的時間了。在啟用 verbose:gc 后, $CATALINA_BASE/logs/catalina.out 日志文件就能包含每次垃圾回收的數據,其中也包括它所占用的時間。

正確調整 JVM 后,垃圾回收可以做到在 99% 的情況下占用時間不超過 1 秒。剩余的情況則只占用幾秒鐘的時間,只有極少數情況下 GC 會占用超過 10 秒鐘的時間。

保證讓數據庫連接超時設定在 10~15 秒。對于 DBCP,可以使用 maxWaitMillis 參數來設置。

隨機性的連接關閉異常

當某一請求從連接池中獲取了一個數據庫連接,然后關閉了它兩次時,往往會出現這樣的異常消息。使用連接池時,關閉連接,就會把它歸還給連接池,以便之后其他的請求能夠重用該連接,而并不會關閉連接。Tomcat 使用多個線程來處理并發請求。下面這個范例就演示了,在 Tomcat 中,一系列事件導致了這種錯誤。

運行在線程 1 中的請求 1 獲取了一個連接。

請求 1 關閉了數據庫連接。

JVM 將運行的線程切換為線程 2

線程 2 中運行的請求 2 獲取了一個數據庫連接。
(同一個數據庫連接剛被請求 1 關閉)

JVM 又將運行的線程切換回為線程 1

請求 1 第二次關閉了數據庫連接。

JVM 將運行的線程切換回線程 2

請求 2 和線程 2 試圖使用數據庫連接,但卻失敗了。因為請求 1 已經關閉了它。

 }
  Connection conn = null;
  Statement stmt = null;  // Or PreparedStatement if needed
  ResultSet rs = null;
  try {
    conn = ... get connection from connection pool ...
    stmt = conn.createStatement("select ...");
    rs = stmt.executeQuery();
    ... iterate through the result set ...
    rs.close();
    rs = null;
    stmt.close();
    stmt = null;
    conn.close(); // Return to connection pool
    conn = null;  // Make sure we don't close it twice
  } catch (SQLException e) {
    ... deal with errors ...
  } finally {
    // Always make sure result sets and statements are closed,
    // and the connection is returned to the pool
    if (rs != null) {
      try { rs.close(); } catch (SQLException e) { ; }
      rs = null;
    }
    if (stmt != null) {
      try { stmt.close(); } catch (SQLException e) { ; }
      stmt = null;
    }
    if (conn != null) {
      try { conn.close(); } catch (SQLException e) { ; }
      conn = null;
    }

上下文與全局命名資源

注意,雖然在上面的說明中,把 JNDI 聲明放在一個 Context 元素里面,但還是有可能(而且有時更需要)把這些聲明放在服務器配置文件的 GlobalNamingResources 區域。被放置在 GlobalNamingResources 區域的資源將會被服務器的各個上下文所共享。

JNDI 資源命名和 Realm 交互

為了讓 Realm 能運作,realm 必須指向定義在  或  區域中的數據源,而不是 重新命名的數據源。

全部教程
主站蜘蛛池模板: 丁香婷婷六月 | 亚洲无矿砖码专区2020 | 日韩a级毛片免费视频 | 成人在线一区二区三区 | 波多野结衣不卡 | 91精品一区二区三区在线播放 | 国产日韩精品欧美一区色 | 日韩欧美网址 | 国产免费一区二区三区 | 夜夜躁狠狠躁日日躁视频 | 久久亚洲综合网 | 国内在线观看精品免费视频 | 一级视频黄色 | 日本全身露裸无遮挡黄漫画 | 亚洲综合色视频在线观看 | 夭天曰天天躁天天摸在线观看 | 日日干日日操日日射 | 日韩人成免费网站大片 | 一级在线免费视频 | 国产精品视频国产永久视频 | 日本三级香港三级人妇99 | 欧美综合区自拍亚洲综合 | 精品久久久久久综合日本 | 中文亚洲日韩欧美 | 一区二区三区在线视频播放 | 香港三级日本三级三级人妇99 | 中文字幕在线网 | 夜色私人影院永久入口 | 无遮挡h肉3d动漫在线观看 | 高清一区二区亚洲欧美日韩 | 天堂最新在线资源 | 亚洲成a人片在线网站 | 一本到在线视频 | 皮皮在线精品亚洲 | 永久免费的啪啪免费的网址 | 亚洲欧美一区二区三区在线观看 | 最新亚洲情黄在线网站无广告 | 日本三级一区 | 亚洲中文字幕特级毛片 | 免费在线观看中文字幕 | jizzjizz老师太多水日本 |