精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java理論和實踐: 理解JTS

開發 后端
JTS能夠確定事務中是不是只征用了一個資源管理器。如果它檢測出所有與事務相關的資源都一樣,它可以跳過兩階段提交并讓資源管理器自己來處理事務。

  什么是 JTS?

  JTS 是一個 組件事務監視器(component transaction monitor)。這是什么意思?我們將介紹事務處理監視器(TPM)這個概念,TPM 是一個程序,它代表應用程序協調分布式事務的執行。TPM 與數據庫出現的時間長短差不多;在 60 年代后期,IBM 首先開發了 CICS,至今人們仍在使用。經典的(或者說 程序化)TPM 管理被程序化定義為針對事務性資源(比如數據庫)的操作序列的事務。隨著分布式對象協議,如 CORBA、DCOM 和 RMI 的出現,人們希望看到事務更面向對象的前景。將事務性語義告知面向對象的組件要求對 TPM 模型進行擴展 ― 在這個模型中事務是按照事務性對象的調用方法定義的。JTS 只是一個組件事務監視器(有時也稱為 對象事務監視器(object transaction monitor)),或稱為 CTM。

  JTS 和 J2EE 的事務支持設計受 CORBA 對象事務服務(CORBA Object Transaction Service,OTS)的影響很大。實際上,JTS 實現 OTS 并充當 Java 事務 API(Java Transaction API)― 一種用來定義事務邊界的低級 API ― 和 OTS 之間的接口。使用 OTS 代替創建一個新對象事務協議遵循了現有標準,并使 J2EE 和 CORBA 能夠互相兼容。

  乍一看,從程序化事務監視器到 CTM 的轉變好像只是術語名稱改變了一下。然而,差別不止這一點。當 CTM 中的事務提交或回滾時,與事務相關的對象所做的全部更改都一起被提交或取消。但 CTM 怎么知道對象在事務期間做了什么事?象 EJB 組件之類的事務性組件并沒有 commit() 或 rollback() 方法,它們也沒向事務監視器注冊自己做了什么事。那么 J2EE 組件執行的操作如何變成事務的一部分呢?

  透明的資源征用

  當應用程序狀態被組件操縱時,它仍然存儲在事務性資源管理器(例如,數據庫和消息隊列服務器)中,這些事務性資源管理器可以注冊為分布式事務中的資源管理器。在第 1 部分中,我們討論了如何在單個事務中征用多個資源管理器,事務管理器如何協調這些資源管理器。資源管理器知道如何把應用程序狀態中的變化與特定的事務關聯起來。

  但這只是把問題的焦點從組件轉移到了資源管理器 ― 容器如何斷定什么資源與該事務有關,可以供它征用?請考慮下面的代碼,在典型的 EJB 會話 bean 中您可能會發現這樣的代碼:

  清單 1. bean 管理的事務的透明資源征用

1 InitialContext ic = new InitialContext();
2   UserTransaction ut = ejbContext.getUserTransaction();
3   ut.begin();
4   DataSource db1 = (DataSource) ic.lookup("java:comp/env/OrdersDB");
5   DataSource db2 = (DataSource) ic.lookup("java:comp/env/InventoryDB");
6   Connection con1 = db1.getConnection();
7   Connection con2 = db2.getConnection();
8   // perform updates to OrdersDB using connection con1
9   // perform updates to InventoryDB using connection con2
10   ut.commit();
11

  注意,這個示例中沒有征用當前事務中 JDBC 連接的代碼 ― 容器會為我們完成這個任務。我們來看一下它是如何發生的。

  資源管理器的三種類型

  當一個 EJB 組件想訪問數據庫、消息隊列服務器或者其它一些事務性資源時,它需要到資源管理器的連接(通常是使用 JNDI)。而且,J2EE 規范只認可三種類型的事務性資源 ― JDBC 數據庫、JMS 消息隊列服務器和“其它通過 JCA 訪問的事務性服務”。后面一種服務(比如 ERP 系統)必須通過 JCA(J2EE Connector Architecture,J2EE 連接器體系結構)訪問。對于這些類型資源中的每一種,容器或提供者都會幫我們把資源征調到事務中。

  在清單 1 中, con1 和 con2 好象是普通的 JDBC 連接,比如那些從 DriverManager.getConnection() 返回的連接。我們從一個 JDBC DataSource 得到這些連接,JDBC DataSource 可以通過查找 JNDI 中的數據源名稱得到。EJB 組件中被用來查找數據源( java:comp/env/OrdersDB )的名稱是特定于組件的;組件的部署描述符的 resource-ref 部分將其映射為容器管理的一些應用程序級 DataSource 的 JNDI 名稱。

  隱藏的 JDBC 驅動

  每個 J2EE 容器都可以創建有事務意識的池態 DataSource 對象,但 J2EE 規范并不向您展示如何創建,因為這不在 J2EE 規范內。瀏覽 J2EE 文檔時,您找不到任何關于如何創建 JDBC 數據源的內容。相反,您不得不為您的容器查閱該文檔。創建一個數據源可能需要向屬性或配置文件添加一個數據源定義,或者也可以通過 GUI 管理工具完成,這取決于您的容器。

  每個容器(或連接池管理器,如 PoolMan)都提供它自己的創建 DataSource 機制,JTA 魔術就隱藏在這個機制中。連接池管理器從指定的 JDBC 驅動器得到一個 Connection ,但在將它返回到應用程序之前,將它與一個也實現 Connection 的虛包包在一起,將自己置入應用程序和底層連接之間。當創建連接或者執行 JDBC 操作時,包裝器詢問事務管理器當前線程是不是正在事務的上下文中執行,如果事務中有 Connection 的話,就自動征用它。

  其它類型的事務性資源,JMS 消息隊列和 JCA 連接器,依靠相似的機制將資源征用隱藏起來,使用戶看不到。如果要使 JMS 隊列在部署時對 J2EE 應用程序可用,您就要再次使用特定于提供者的機制來創建受管 JMS 對象(隊列連接工廠和目標),然后在 JNDI 名稱空間內發布這些對象。提供者創建的受管對象包含與 JDBC 包裝器(由容器提供的連接池管理器添加)相似的自動征用代碼。

     透明的事務控制

  兩種類型的 J2EE 事務 ― 容器管理的和 bean 管理的 ― 在如何啟動和結束事務上是不同的。事務啟動和結束的地方被稱為 事務劃分(transaction demarcation)。清單 1 中的示例代碼演示了 bean 管理的事務(有時也稱為 編程(programmatic)事務)。Bean 管理的事務是由組件使用 UserTransaction 類顯式啟動和結束的。通過 ejbContext 使 UserTransaction 對 EJB 組件可用,通過 JNDI 使其對其它 J2EE 組件可用。

  容器根據組件的部署描述符中的事務屬性代表應用程序透明地啟動和結束容器管理的事務(或稱為 宣告式事務(declarative transaction))。通過將 transaction-type 屬性設置為 Container 或 Bean 您可以指出 EJB 組件是使用 bean 管理的事務性支持還是容器管理的事務性支持。

  使用容器管理的事務,您可以在 EJB 類或方法級別上指定事務性屬性;您可以為 EJB 類指定缺省的事務性屬性,如果不同的方法會有不同的事務性語義,您還可以為每個方法指定屬性。這些事務性屬性在裝配描述符(assembly descriptor)的 container-transaction 部分被指定。清單 2 顯示了一個裝配描述符示例。 trans-attribute 的受支持的值有:

  Supports

  Required

  RequiresNew

  Mandatory

  NotSupported

  Never

  trans-attribute 決定方法是否支持在事務內部執行、當在事務內部調用方法時容器會執行什么操作以及在事務外部調用方法時容器會執行什么操作。最常用的容器管理的事務屬性是 Required 。如果設置了 Required ,過程中的事務將在該事務中征用您的 bean,但如果沒有正在運行的事務,容器將為您啟動一個。在這個系列的第 3 部分,當您可能想使用每個事務屬性時,我們將研究各個事務屬性之間的區別。

  清單 2. EJB 裝配描述符樣本

1 <assembly-descriptor>
2   ...
3   <container-transaction>
4     <method>
5       <ejb-name>MyBeanejb-name>
6       <method-name>*method-name>
7     method>
8     <trans-attribute>Requiredtrans-attribute>
9   container-transaction>
10   <container-transaction>
11     <method>
12       <ejb-name>MyBeanejb-name>
13       <method-name>updateNamemethod-name>
14       method>
15    <trans-attribute>RequiresNewtrans-attribute>
16   container-transaction>
17   ...
18 assembly-descriptor>
19

  功能強大,但很危險

  與清單 1 中的示例不同,由于有宣告式事務劃分,這段組件代碼中沒有事務管理代碼。這不僅使結果組件代碼更加易讀(因為它不與事務管理代碼混在一起),而且它還有另一個更重要的優點 ― 不必修改,甚至不必訪問組件的源代碼,就可以在應用程序裝配時改變組件的事務性語義。

  盡管能夠指定與代碼分開的事務劃分是一種非常強大的功能,但在裝配時做出不好的決定會使應用程序變得不穩定,或者嚴重影響它的性能。對容器管理的事務進行正確分界的責任由組件開發者和應用程序裝配人員共同擔當。組件開發者需要提供足夠的文檔說明組件是做什么的,這樣應用程序部署者就能夠明智地決定如何構建應用程序的事務。應用程序裝配人員需要理解應用程序中的組件是怎樣相互作用的,這樣就可以用一種既強制應用程序保持一致又不削弱性能的方法對事務進行分界。在這個系列的第 3 部分中我們將討論這些問題。

  透明的事務傳播

  在任何類型的事務中,資源征用都是透明的;容器自動將事務過程中使用的任意事務性資源征調到當前事務中。這個過程不僅擴展到事務性方法使用的資源(比如在清單 1 中獲得的數據庫連接),還擴展到它調用的方法(甚至遠程方法)使用的資源。我們來看一下這是如何發生的。

  容器用線程與事務相關聯

  我們假設對象 A 的 methodA() 啟動一個事務,然后調用對象 B 的 methodB() (對象 B 將得到一個 JDBC 連接并更新數據庫)。 B 獲得的連接將被自動征調到 A 創建的事務中。容器怎么知道要做這件事?

  當事務啟動時,事務上下文與執行線程關聯在一起。當 A 創建事務時, A 在其中執行的線程與該事務關聯在一起。由于本地方法調用與主調程序(caller)在同一個線程內執行,所以 A 調用的每個方法也都在該事務的上下文中。

  櫥中骸骨

  如果對象 B 其實是在另一個線程,甚至另一個 JVM 中執行的 EJB 組件的存根,情況會怎樣?令人吃驚的是,遠程對象 B 訪問的資源仍將在當前事務中被征用。EJB 對象存根(在主調程序的上下文中執行的那部分)、EJB 協議(IIOP 上的 RMI)和遠端的骨架對象協力要使其透明地發生。存根確定調用者是不是正在執行一個事務。如果是,事務標識,或者說 Xid,被作為 IIOP 調用的一部分與方法參數一起傳播到遠程對象。(IIOP 是 CORBA 遠程-調用協議,它為傳播執行上下文(比如事務上下文和安全性上下文)的各種元素而備;關于 RMI over IIOP 的更多信息,請參閱 參考資料。)如果調用是事務的一部分,那么遠程系統上的骨架對象自動設置遠程線程的事務上下文,這樣,當調用實際的遠程方法時,它已經是事務的一部分了。(存根和骨架對象還負責開始和提交容器管理的事務。)

  事務可以由任何 J2EE 組件來啟動 ― 一個 EJB 組件、一個 servlet 或者一個 JSP 頁面(如果容器支持的話,還可以是一個應用程序客戶機)。這意味著,應用程序可以在請求到達時在 servlet 或者 JSP 頁面中啟動事務、在 servlet 或者 JSP 頁面中執行一些處理、作為頁面邏輯的一部分訪問多個服務器上的實體 bean 和會話 bean 并使所有這些工作透明地成為一個事務的一部分。圖 1 演示了事務上下文怎樣遵守從 servlet 到 EJB,再到 EJB 的執行路徑。

  圖 1.單個事務中的多個組件

  

  最優化

  讓容器來管理事務允許容器為我們做出某些最優化決定。在圖 1 中,我們看到一個 servlet 和多個 EJB 組件在單個事務的上下文中訪問一個數據庫。每個組件都獲得到數據庫的 Connection ;很可能每個組件都在訪問同一個數據庫。即使多個連接是從不同的組件到同一個資源,JTS 也可以檢測出多個資源是否和事務有關,并最優化該事務的執行。您可以從第 1 部分回憶起來,單個事務要包含多個資源管理器需要使用兩階段提交協議,這比單個資源管理器使用的單階段提交代價要高。JTS 能夠確定事務中是不是只征用了一個資源管理器。如果它檢測出所有與事務相關的資源都一樣,它可以跳過兩階段提交并讓資源管理器自己來處理事務。

  結束語

  這個慮及透明事務控制、資源征用和透明傳播的魔術不是 JTS 的一部分,而是 J2EE 容器如何在幕后代表 J2EE 應用程序使用 JTA 和 JTS 服務的一部分。在幕后有許多實體合力使這個魔術透明地發生;EJB 存根和骨架、容器廠商提供的 JDBC 驅動器包裝器、數據庫廠商提供的 JDBC 驅動器、JMS 提供器和 JCA 連接器。所有這些實體都與事務管理器進行交互,于是應用程序代碼就不必與之交互了。

【編輯推薦】

  1. 高手Java核心技術學習筆記
  2. 如何使用 JavaScript XSLT 處理 XML 文件
  3. JSP結合XML+XSLT將輸出轉換HTML
  4. Java通過JNI調用C語言的方法
  5. JAVA環境變量的設置
責任編輯:王觀 來源: 中國IT實驗室
相關推薦

2011-06-30 11:04:05

JTS

2024-03-28 09:36:29

2017-05-04 16:33:58

Java線程池實踐

2023-05-05 07:35:01

QoS網絡業務

2015-04-29 11:23:03

Java理論與實踐 Volatile 變

2012-04-28 09:54:16

Java

2012-08-10 13:55:56

Java動態代理

2012-03-21 10:09:12

2010-04-26 14:19:22

BondLinux系統安裝

2022-05-06 08:00:51

Golang編程語言Java

2009-06-16 11:26:22

弱引用內存泄露

2011-06-28 17:43:37

SEO

2019-06-17 16:47:54

網絡協議DNS

2015-09-11 09:59:32

2025-01-22 11:10:34

2022-03-09 23:02:30

Java編程處理模型

2024-01-09 07:25:31

2024-07-26 00:16:11

2025-09-08 07:14:25

點贊
收藏

51CTO技術棧公眾號

素人av在线| 日韩精品一区三区| 深夜福利一区二区三区| 福利视频在线看| 国内精品视频在线观看| 欧美男男青年gay1069videost | 亚洲电影一级黄| 欧美日韩在线精品一区二区三区| 国产精品高潮呻吟久久久| 激情欧美国产欧美| 最新的欧美黄色| 亚洲精品第二页| 国产香蕉久久| 精品久久香蕉国产线看观看亚洲| 一区二区国产日产| 日本一区高清| 粉嫩久久99精品久久久久久夜| 日韩av123| 久草视频免费播放| 欧美www视频在线观看| 日韩成人中文电影| 免费欧美一级片| 亚州一区二区三区| 天天av天天翘天天综合网| 99国产精品久久| 91精品国产91久久久久福利| 三级在线观看免费大全| 国产日韩欧美一区二区三区| 精品国产91洋老外米糕| 中文字幕 日韩 欧美| 欧美福利在线播放| 欧美视频一二三| 成人免费性视频| 国产在线高潮| 国产精品日日摸夜夜摸av| 国产在线一区二区三区四区| av免费观看在线| 九色|91porny| 国产精品丝袜一区二区三区| 黄瓜视频在线免费观看| 亚洲黄色精品| 午夜免费在线观看精品视频| 老女人性淫交视频| 欧美日韩1区2区3区| 久久偷看各类女兵18女厕嘘嘘| 天堂网av2018| 99国产精品免费视频观看| 中文字幕欧美日韩| 亚洲欧美va天堂人熟伦 | 色综合天天综合在线视频| 国产精品入口尤物| japanese国产在线观看| 三级成人在线视频| 日本道色综合久久影院| 亚洲va在线观看| 久久久噜噜噜久久狠狠50岁| 日本久久久久久久| 亚洲大片免费观看| 日本欧美加勒比视频| 国产精品91免费在线| 成人免费视频国产免费| 日本特黄久久久高潮| 国产精品青青在线观看爽香蕉| 国产日韩在线免费观看| 日本中文字幕不卡| 国产一区二区色| 国产精品主播一区二区| 激情综合网最新| 青青草一区二区| 中国一级片黄色一级片黄| 麻豆久久久久久| 91麻豆桃色免费看| 亚洲精品久久久狠狠狠爱 | 亚洲AV无码一区二区三区性| 国产毛片一区二区| 国产精品播放| 欧洲成人av| 中文字幕在线不卡一区二区三区| 中文字幕一区二区三区乱码| 免费看电影在线| 色综合久久中文综合久久牛| 中文字幕永久视频| 欧美激情三级| 日韩精品视频在线观看免费| 国产精品av久久久久久无| 欧美a级成人淫片免费看| 久操成人在线视频| 国产又黄又粗又爽| 麻豆成人久久精品二区三区红 | 秋霞蜜臀av久久电影网免费| 亚洲国产午夜| 亚洲高清久久久久久| 一区二区黄色片| 综合激情网站| 欧美在线观看网站| 6—12呦国产精品| av毛片久久久久**hd| 日本一区二区三区视频在线播放| a级影片在线观看| 精品日韩美女的视频高清| 色国产在线视频| 精品福利网址导航| 三级精品视频久久久久| 亚洲 欧美 视频| 国产精品资源在线观看| 欧美成人在线免费观看| 1区2区在线观看| 欧洲精品视频在线观看| 成年人看片网站| 日韩电影免费网址| 4438全国成人免费| 亚洲黄色精品视频| 国产精品福利影院| 92看片淫黄大片一级| 日韩精品三级| 日韩中文在线中文网在线观看 | 欧洲av一区二区嗯嗯嗯啊| 大尺度在线观看| 亚洲成人一区| 国产精品一区二区三| 少妇精品视频一区二区| 竹内纱里奈兽皇系列在线观看| 国产色综合久久| 青草青青在线视频| 精品伊人久久| www.xxxx欧美| 黄色av一区二区| 2020国产精品久久精品美国| 91免费国产精品| 久久中文字幕一区二区| xxx欧美精品| 亚洲一级片免费看| 国产片一区二区| 日日摸日日碰夜夜爽av| 欧美精品中文| 欧美一级成年大片在线观看 | 国产精品第一| 一区二区三区四区视频| 欧美精品一二三四区| 99精品久久99久久久久| 日韩人妻无码精品久久久不卡| 精品一区二区三区在线观看视频| 色偷偷偷综合中文字幕;dd| 精品国产乱子伦| 久久精品欧美一区二区三区不卡| 欧美黑人经典片免费观看| 亚洲AV无码国产精品午夜字幕 | 亚洲成人999| 久久精品这里只有精品| 国产一区二区三区免费| 中文字幕日韩精品久久| 91精品福利观看| 久久人人爽人人爽爽久久| 国产乱色精品成人免费视频| 亚洲少妇屁股交4| 下面一进一出好爽视频| 欧美先锋影音| 精品国产乱码久久久久久丨区2区 精品国产乱码久久久久久蜜柚 | 美女精品视频在线| 欧美成人在线影院| 亚洲国产成人在线观看| 亚洲一二三区在线观看| 视频免费在线观看| 久久精品人人| 亚洲一二三区在线| 欧洲大片精品免费永久看nba| 欧美成人亚洲成人| 午夜性色福利视频| 国产视频一区二| 红桃av永久久久| 婷婷色一区二区三区| 美腿丝袜一区二区三区| 四虎精品欧美一区二区免费| 国产精品极品在线观看| 日本亚洲欧洲色| 欧美午夜电影一区二区三区| 欧美成人福利视频| 少妇高潮av久久久久久| 亚洲欧美综合网| 欧美一级片在线免费观看| 亚洲免费网址| 懂色av一区二区三区四区五区| 99a精品视频在线观看| 国产91精品久久久久久久| 成人影视在线播放| 欧美一区二区福利视频| 日韩毛片一区二区三区| 国产精品成人免费精品自在线观看| 亚洲欧美一区二区三区不卡| 国产欧美精品| 一区二区三视频| 精品国产一区二区三区不卡蜜臂| 欧洲一区二区视频| 182tv在线播放| 亚洲石原莉奈一区二区在线观看| 国产精品久久久国产盗摄| 精品久久久久久国产91| 日韩av在线免费观看一区| 久久精品www| 国产欧美日韩在线| 欧美熟妇精品一区二区| 日韩精品乱码av一区二区| 青青草综合在线| 精品国产一区二区三区四区| 成人资源视频网站免费| 成人在线免费av| 久久久噜噜噜久久中文字免| av小片在线| 亚洲精品国产综合区久久久久久久| 亚洲天堂网在线视频| 婷婷丁香激情综合| 欧美卡一卡二卡三| 亚洲国产精品t66y| 免费a v网站| 国产高清亚洲一区| 五月激情婷婷在线| 视频一区视频二区中文| 国产伦精品一区二区三区四区视频_| 欧美激情成人| 日韩一区二区三区资源| 国内精品免费| 成人av免费看| 成人豆花视频| 国产精品久久久久久搜索| 国产高清视频色在线www| 欧美精品做受xxx性少妇| av电影在线观看一区二区三区| 天堂av一区| 韩国精品久久久999| 中中文字幕av在线| 北条麻妃久久精品| 日本成a人片在线观看| 一区二区三区美女xx视频| 欧美日本网站| 日韩黄色在线免费观看| 日韩一级片免费观看| 欧美本精品男人aⅴ天堂| 国产婷婷在线视频| 日韩午夜av一区| www.四虎在线观看| 日韩色视频在线观看| a天堂在线视频| 日韩欧美中文一区二区| 国产夫妻性生活视频| 91精品国产一区二区三区| 91精品中文字幕| 欧美日韩国产在线播放网站| 天天爽夜夜爽人人爽| 日韩欧美精品中文字幕| 黄色一级视频免费看| 色婷婷亚洲综合| 欧美精品入口蜜桃| 亚洲一区二区三区四区不卡| 国产在线成人精品午夜| 亚洲大尺度视频在线观看| 国产一卡二卡在线播放| 午夜国产精品一区| 啦啦啦免费高清视频在线观看| 欧美午夜国产| 久久免费视频在线观看| 黑人玩欧美人三根一起进| 欧美精品福利视频| 久草免费在线视频| 欧美在线免费观看| 国产第一亚洲| 91丝袜美腿美女视频网站| 91成人福利| 久久综合入口| 成人高清电影网站| 日本一本草久p| 极品中文字幕一区| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 狂野欧美一区| aaa一级黄色片| 成人黄色大片在线观看 | 国产成人亚洲精品无码h在线| 翔田千里一区二区| 亚洲一级片网站| 国产激情一区二区三区桃花岛亚洲| 95视频在线观看| 欧美国产成人精品| 欧美激情精品久久| 日韩人体视频一二区| 国产又粗又大又爽视频| 精品国产a毛片| seseavlu视频在线| 久久久久久成人| 亚洲天堂1区| 超碰97在线播放| 成人在线电影在线观看视频| 亚洲三级在线免费观看| 欧美做受高潮6| 亚洲精品亚洲人成人网| 亚洲视频 欧美视频| 91精品国产免费| 三级视频在线| 欧美成人精品h版在线观看| 91精品产国品一二三产区| 91亚洲精品久久久| 狠狠色狠狠色综合婷婷tag| 国产高清不卡无码视频| 日韩电影免费一区| 色哟哟无码精品一区二区三区| 国产欧美综合在线观看第十页| 激情五月婷婷小说| 欧美性大战久久| 午夜av免费在线观看| 久久精品视频va| 天堂久久午夜av| 国产在线资源一区| 午夜日韩在线| 在线观看岛国av| 久久先锋影音av鲁色资源网| 国产在线观看99| 欧美一区二区美女| 二人午夜免费观看在线视频| 欧美亚洲视频在线观看| 超碰在线无需免费| 国产免费一区二区三区香蕉精| 亚欧日韩另类中文欧美| www国产免费| 韩国av一区二区三区| 成人午夜免费影院| 欧美私模裸体表演在线观看| 三级毛片在线免费看| 亚洲制服丝袜一区| 天天操精品视频| 国产精品福利一区二区三区| 亚洲国产成人精品女人久久| 亚洲黄色av网站| av免费在线视| 国产精品一区二区a| 国产专区一区| 无码人妻一区二区三区免费n鬼沢 久久久无码人妻精品无码 | 88国产精品视频一区二区三区| 三级a在线观看| 国产无人区一区二区三区| 人妻 日韩精品 中文字幕| 日韩乱码在线视频| 一区二区三区短视频| 精品国产一区二区三区久久久久久| 精品999日本| 国产精品一区二区无码对白| 亚洲第一精品在线| 乱精品一区字幕二区| 性欧美在线看片a免费观看| 91欧美极品| 欧美成人三级在线视频| 99国产精品久久久久久久久久久| 黄色片视频网站| 亚洲午夜性刺激影院| 欧洲成人一区| 中文字幕日韩精品一区二区| 国产一区二区三区四区五区美女 | xxxx黄色片| 婷婷综合在线观看| 亚州av在线播放| 国产精品va在线| 91精品国产91久久久久久密臀 | 国产女主播一区| 中文字幕理论片| 久久中文字幕在线视频| 9l亚洲国产成人精品一区二三| 国产真人做爰毛片视频直播| 91蜜桃在线免费视频| 色老头在线视频| 久久精品视频播放| 精品精品精品| 天天影视综合色| 亚洲久本草在线中文字幕| 成人久久久精品国产乱码一区二区 | 青青国产91久久久久久| 国产suv精品一区二区68| 日韩欧美亚洲国产另类| 精精国产xxxx视频在线野外| 欧美性xxxx69| 国模大尺度一区二区三区| 久久黄色免费视频| 亚洲欧美日韩精品久久| 亚洲tv在线| 久久亚洲中文字幕无码| 欧美激情一区三区| 国产夫妻性生活视频| 日韩美女在线观看| 91精品国产自产拍在线观看蜜| 黄色av网址在线观看| 777亚洲妇女| 国产自产自拍视频在线观看| 一本一道久久久a久久久精品91 | 久久久综合av| 亚洲欧美综合自拍| 亚洲人永久免费| 免费观看亚洲视频大全| 久久久一本二本三本| 中文字幕制服丝袜一区二区三区| 秋霞av鲁丝片一区二区| 国产欧美一区二区三区久久 | 九九视频精品在线观看| 亚洲精品精品亚洲| 国产成人天天5g影院在线观看|