亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

開發 Web 應用程序的快捷途徑介紹

2019-11-18 12:53:01
字體:
來源:轉載
供稿:網友

  共享物理連接
  共享一個連接只能在共享作用域中發生。最常見的共享作用域是多個活動的連接句柄可以共享同一物理連接的事務作用域。在 application Server V5 中有兩個事務作用域:全局事務和本地事務容器(Local Transaction Containment,LTC)邊界。
  
  全局事務可以是由 J2EE 應用程序啟動的用戶事務,或者是由 Application Server EnterPRise java Bean(EJB)容器所啟動的容器全局事務。當使用 Required 或 RequiresNew 事務屬性配置了 EJB 方法時,EJB 容器就啟動一個全局事務。當使用 Required、Supports 或 Mandatory 事務屬性配置了 EJB 方法時,EJB 容器也可以使用客戶端的全局事務。注重 EJB 的客戶端可以是 J2EE 應用程序、Servlet、jsp 或另一個 EJB。
  LTC 邊界與資源治理器本地事務(Resource Manager Local Transaction,RMLT)是有區別的,后者是本地事務的資源視圖。LTC 是一個作用域,在它里面可以訪問多個 RMLT。在沒有全局事務的時候,通常由容器來建立 LTC。LTC 的一個示例是含事務屬性 NotSupported 的 Bean 方法的執行。 RMLT 的一個示例是將 autocommit 設置為 false,稍后再提交連接。
  在 Application Server 中,連接共享作用域是全局事務。雖然在 LTC 中調用多次 getConnection 可以返回具有同一物理連接的多個連接句柄,該物理連接被連續重用,但是并沒有被共享。此行為是"連接串行重用(connection serial reuse)。"后面將討論 LTC 中的連接串行重用。
  
  正如上面所提到的,假如一個應用程序的部署描述符元素 res-sharing-scope 被設置為 shareable,并且符合某些條件,那么在此應用程序中多次調用 getConnection 符合共享同一連接的條件。要讓一個共享作用域中調用多次 getConnection 返回同一物理連接,下列連接特性必須一致:
  
  Java 命名和目錄接口(Java Naming and Directory Interface,JNDI)名稱。 雖然 JNDI 名稱實際上不是一個連接特性,但是此必要條件表示您只能共享來自位于相同服務器進程的相同數據源的連接。您必須在應用程序服務器中的相同數據源上調用兩次 getConnection 調用以共享一個物理連接。
  資源認證設置。使用資源引用的資源認證設置來指定應用程序組件供給者如何將一個主體(用戶 ID 和密碼)聯系到一個資源治理器。對于非 CMP 應用程序,資源認證由 res-auth 部署描述符來標識。它的值是 Application 或 Container。Application Server 也為 CMP 連接工廠的資源認證提供一個 IBM 擴展。該設置由 IBM 部署描述符擴展文件 ibm-ejb-jar-ext.xmi 中的 resAuth 元素來標識。您可以將 resAuth 的值設置為 Per_Connection_Factory 或 Container。Per_Connection_Factory 與 res-auth 部署描述符的 Application 值一致。當兩個數據源或連接工廠引用與 Application Server 中的一個數據源相關聯,那么在(并且僅在)這兩個引用擁有相同的資源認證值的情況下連接是可共享的。要查閱有關資源認證的描述,請參考 WebSphere Application Server V5 中的數據庫驗證。
  主體。相同的主題表示相同的用戶和密碼對于相關的數據庫是必需的。假如應用程序使用一個不同的用戶 ID 和密碼來獲取連接,那么從 getConnection 調用返回的物理連接將是不同的。當應用程序的資源認證設置被設置為 Application 時,您可以通過 getConnection() 或 getConnection(String userid, String passWord) 來獲取連接。請注重,即使與數據源相關聯的受組件治理的認證別名在所使用的 getConnection(String userid, String password) 中有相同的用戶 ID 和密碼,從這兩個調用獲取的連接也不是共享的。
  連接事務隔離級別特性。在 Application Server 中,您可以通過幾種方法來指定獲取的連接所使用的隔離級別:
  您可以使用訪問意圖來指定事務隔離級別。
  您可以使用 IBM 擴展(在 IBM 擴展文件中指定為 isolationLevel)來指定特定應用程序的數據源引用的隔離級別。
  您可以將事務隔離級別設置為 IBM 擴展 API(JDBCConnectionSpec),然后使用 WSDataSource.getConnection(JDBCConnectionSpec)來獲取連接。要共享同一物理連接,在一個給定事務中的多個 getConnection 調用的事務隔離級別必須是相同的。請注重,IBM 擴展 API-JDBCConnectionSpec 是一個私有 API。假如您使用這個 API,您的應用程序將不能轉換到其他應用程序服務器。
  連接 readOnly、catalog 和 typeMap 特性。正如同連接事務隔離級別,這三個連接特性對多個 getConnection 調用必須是相同的,以共享同一物理連接。應用程序可以使用 JDBCConnectionSpec 來指定這三個特性的值。
  假如上述必要條件中的一個沒有滿足,那么兩個 getConnection 調用將返回不同的物理連接。
  
  清單 1 顯示了在一個用戶事務中共享同一物理連接的兩個連接句柄。資源引用的資源共享作用域被設為 Shareable。連接 conn1 和 conn2 是從同一數據源 ds 獲取的兩個連接句柄。由于這兩個連接是在一個共享作用域(在本例中,是一個用戶事務)中獲取的,并且所有的共享必要條件都已滿足,所以 conn1 和 conn2 共享同一物理連接。
  
  假如將一個應用程序的部署描述符中的 res-sharing-scope 部署描述符元素設置為 Unshareable,那么這些連接不共享同一物理連接。在一個全局事務或 LTC 中的多個 getConnection 調用將返回包含不同物理連接的連接句柄。
  
  清單 1. 在一個用戶事務中共享連接
  
  // Start a user transaction
  userTransaction.begin();
  
  // Get the first connection
  java.sql.Connection conn1 = ds.getConnection();
  java.sql.Statement stmt1 = conn1.createStatement();
  ...
  
  // Get the second connection
  java.sql.conenction conn2 = ds.getConnection();
  java.sql.Statement stmt2 = conn2.createStatement();
  ...
  
  // Commit the user transaction
  userTransaction.commit();
  
  LTC 中的連接串行重用
  在一個本地事務容器(Local Transaction Containment,LTC)邊界中,您不能擁有多個使用同一物理連接的活動連接句柄。然而,假如前面的包裝相同物理連接的連接句柄已關閉,那么您可以重用該物理連接。在您使用如下模式時將發生連接重用:
  
  獲得連接 1 -> 使用連接 1 -> 提交/回滾連接1(可選) -> 關閉連接 1 -> 獲得連接 2 -> 使用連接 2 -> 提交/回滾連接 2(可選) -> 關閉連接 2 -> ...
  假設使用了相同的特性并且沒有將 res-sharing-scope 設置為 unshareable,那么從第二個 getConnection 返回的連接與從第一個 getConnection 返回的連接相同。因為連接的使用是串行的,在同一時間僅有一個到基礎物理連接的連接句柄,所以沒有發生真正的連接共享。因此,物理連接被"串行重用(serially reused)。" 請注重,在本模式中提交和回滾連接是可選的。也就是說,即使第一個連接沒有被提交或回滾,一旦前一連接已關閉,第二個 getConnection 仍然返回相同的物理連接。您必須注重下列語句隱藏的事務語義:"連接句柄 2 的回滾或提交將回滾或提交對連接句柄 2 所做的工作。它也將回滾或提交對連接句柄 1 所做的工作。"
  
  清單 2 顯示了在一個 LTC 中兩個連接句柄重用相同的物理連接。該代碼在一個 Web 應用程序(Servlet)中,或者位于在全局事務邊界內未執行的 EJB 方法中。在沒有全局事務邊界的情況下,將建立 LTC 邊界。在本應用程序中,連接 conn1 從數據源 ds 獲得,然后連接 conn1 的 autocommit 值被設為 false。再將記錄 1 插入到數據庫中。在此之后,沒有經過提交或回滾連接,連接 conn1 就被關閉了。然后從相同的數據庫 ds 獲得連接 conn2。由于用來獲得連接 conn2 的連接特性與用來獲得連接 conn1 的連接特性相同,并且連接 conn1 已關閉,所以連接 conn2 重用相同的物理連接。在此之后,conn2 的 autocommit 被設置為 false(重用連接,所以不需要將 autocommit 設置為 false,因為它已經是 false),然后記錄 2 被插入到數據庫中。當回滾連接 conn2 時,不僅回滾了記錄 2 插入,同時也回滾了記錄 1 插入。
  
  清單 2. 在 LTC 邊界中重用連接
  
  // Get the first connection
  java.sql.Connection conn1 = ds.getConnection();
  conn1.setAutoCommit(false)
  java.sql.Statement stmt1 = conn1.createStatement();
  
  //use statement1 to insert record 1
  ... ...
  
  conn1.close();
  
  java.sql.conenction conn2 = ds.getConnection();
  conn2.setAutoCommit(false);
  java.sql.Statement stmt2 = conn2.createStatement();
  
  //use statement 2 to insert record 2
  ... ...
  conn2.rollback();
  conn2.close();
  
  編程模型
  共享連接使應用程序更具有可伸縮性。它減少了資源分配,還減少了出現死鎖情況的機會。然而,在共享連接時是有限制的。例如,不答應在可共享的連接上設置特性,這是因為一個連接句柄的用戶可能無法預見由其他連接句柄做出的更改。該限制是 J2EE 1.3 標準的一部分。
  
  在某些情況下,您不希望應用程序共享物理連接。一個原因在于該應用程序可能需要更改連接屬性,而那些更改對于可共享連接是不被答應的。然而,除了增加資源分配消耗之外,還有其他有關使用不可共享連接的約束。
  
  讓我們在此查看清單 1 中的代碼。假設數據源的資源引用被標記為 Unshareable。連接句柄 conn1 和 conn2 將有不同的物理連接。該應用程序在下

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
自拍亚洲一区欧美另类| 亚洲区一区二区| 成人黄色av免费在线观看| 91精品免费久久久久久久久| 狠狠色狠色综合曰曰| 久久久亚洲网站| 爽爽爽爽爽爽爽成人免费观看| 欧美性猛交xxxx乱大交极品| 久久久久日韩精品久久久男男| 国产精品视频公开费视频| 97免费中文视频在线观看| 国内免费久久久久久久久久久| 国产精品一区二区久久国产| 国产精品视频xxxx| 国产精品美女久久久免费| 精品久久久久久久大神国产| 美女视频久久黄| 日韩精品中文字幕有码专区| 国产精品成人aaaaa网站| 国产亚洲精品久久久久久777| 久久久精品欧美| 国产成人97精品免费看片| 欧美第一黄色网| 日韩精品免费在线播放| 一区二区三区天堂av| 国产视频在线观看一区二区| 国产成人av在线| 日韩中文字幕免费| 国产精品盗摄久久久| 国内精品一区二区三区四区| 日韩精品高清在线观看| 亚洲自拍在线观看| 欧美激情视频网址| 欧美日韩国产黄| 九九热99久久久国产盗摄| 国产男人精品视频| 亚洲人成在线观| 久久久久久久久国产精品| 欧美精品免费在线| 成人日韩在线电影| 成人网欧美在线视频| 国产精品久久久久久久久久久久久久| 国产成人精品午夜| 97人洗澡人人免费公开视频碰碰碰| 久久久黄色av| 国产精品18久久久久久麻辣| 久久久久久久久网站| 亚洲一区二区三区777| 国产一区二区三区视频| 欧美日韩激情小视频| 91在线观看欧美日韩| 性色av一区二区咪爱| 久久久亚洲影院| 久久天天躁狠狠躁夜夜躁2014| 国产成人精品午夜| 中文字幕亚洲欧美日韩2019| 国产一区二区三区在线观看视频| 日本一区二区在线播放| 5252色成人免费视频| 国产精品99久久久久久白浆小说| 91色精品视频在线| 久久人人爽人人| 亚洲国产精品电影在线观看| 日韩电影免费观看在线| www.久久久久| 国产精品中文在线| 亚洲午夜未满十八勿入免费观看全集| 欧美激情精品久久久久久久变态| 国产精品mp4| 欧美精品福利视频| 国产精品久久网| 亚洲男人第一网站| 另类图片亚洲另类| 国产一区二区三区免费视频| 久久精品成人欧美大片| 国产欧美日韩专区发布| 国产欧美精品在线播放| 国产日韩欧美在线视频观看| 美日韩精品免费观看视频| 欧美电影免费观看大全| 国a精品视频大全| 亚洲电影成人av99爱色| 久久中国妇女中文字幕| 成人高清视频观看www| 黄色精品一区二区| www.亚洲免费视频| 日韩电影第一页| 日韩亚洲成人av在线| 欧美另类高清videos| 欧美激情欧美狂野欧美精品| 成人亲热视频网站| 91中文精品字幕在线视频| 久久精品视频导航| 日韩精品在线观看视频| 日韩中文字幕在线| 91国产精品电影| 国产精品久久久久久av下载红粉| 日韩国产一区三区| 亚洲性线免费观看视频成熟| 欧美激情一级精品国产| 国产精品91在线观看| 成人中文字幕在线观看| 日韩免费在线免费观看| 黄色精品一区二区| 一区二区三区动漫| 欧美午夜宅男影院在线观看| 久久亚洲一区二区三区四区五区高| 成人a免费视频| 国模精品系列视频| 日韩精品在线观看一区| 国产成人精品久久亚洲高清不卡| 日本欧美爱爱爱| 色哟哟网站入口亚洲精品| 中文字幕成人在线| 日本一欧美一欧美一亚洲视频| 欧美激情videoshd| 中文字幕久精品免费视频| 欧美视频免费在线观看| 久久精品视频播放| 亚洲日韩中文字幕| 欧美日韩亚洲一区二区| 国产精品久久久久久久久久免费| 精品久久香蕉国产线看观看gif| 国产精品久久久久久久久免费| 国产精品爽爽爽爽爽爽在线观看| 国产精品精品视频一区二区三区| 国产精品久久久久久久久久久久久| 日韩欧美成人免费视频| 伊人久久久久久久久久久| 精品一区精品二区| 韩国国内大量揄拍精品视频| 日韩精品中文字幕视频在线| 亚洲福利小视频| 在线电影av不卡网址| 清纯唯美亚洲激情| 成人福利网站在线观看11| 国产一区二区三区免费视频| …久久精品99久久香蕉国产| 久久精品免费电影| 久久久久久久电影一区| 亚洲网址你懂得| 亚洲视频在线观看免费| 国产欧美欧洲在线观看| 久久视频中文字幕| 精品亚洲va在线va天堂资源站| 亚洲综合一区二区不卡| 久久这里只有精品视频首页| 欧美成人手机在线| 国产盗摄xxxx视频xxx69| 亚洲欧美综合另类中字| 黄色成人在线免费| 欧美专区第一页| 午夜精品一区二区三区在线视| 亚洲无线码在线一区观看| 久久久久在线观看| 97av在线视频免费播放| 欧美在线性爱视频| 日韩av免费一区| 日韩精品极品在线观看播放免费视频| 久久久久久国产三级电影| xxxx性欧美| 亚洲女性裸体视频| 黄网动漫久久久| 国产精品吹潮在线观看|