Java的JSR規範

https://blog.csdn.net/liangkun0124/article/details/51306886

https://blog.csdn.net/majian_1987/article/details/42001797

一、基本概念:

1、java體系:

Java分爲三個體系,分別爲Java SE(J2SE,Java2Platform Standard Edition,標準版),JavaEE(J2EE,Java 2Platform, Enterprise Edition,企業版),Java ME(J2ME,Java 2Platform Micro Edition,微型版)。

 

2、JSR:

JSR是JavaSpecification Requests的縮寫,意思是“Java 規範提案”。是指向JCP(JavaCommunity Process)提出新增一個標準化技術規範的正式請求。任何人都可以提交JSR,以向Java平臺增添新的API和服務。JSR已成爲Java界的一個重要標準。簡單的就是jsr是java開發者以及授權者指定的標準,而java開發者以及授權者形成一個jcp國際組織。職能是指定java標準。

 

3、JCP

JCP由SUN於1995年創造Java的非正式過程,演進到如今有數百名來自世界各地Java代表成員一同監督Java發展的正式程序 。(出自百度)

Jcp官方網站是:https://www.jcp.org/en/home/index

 

二、核心內容:

1、JSR由來:

JCP維護的規範包括J2ME、J2SE、J2EE,XML,OSS,JAIN等。組織成員可以提交JSR(Java Specification Requests),通過特定程序以後主要包括(Java技術規範、參考實現(RI)、技術兼容包(TCK)),進入到下一版本的規範裏面。

所有聲稱符合J2EE規範的J2EE類產品(應用服務器、應用軟件、開發工具等),必須通過該組織提供的TCK兼容性測試(需要購買測試包),通過該測試後,需要繳納J2EE商標使用費。兩項完成,即是通過J2EE認證(Authorized Java Licensees of J2EE)。

 

JSRs是指定的一些標準,在JCP官網上提供了相應標準的下載(https://www.jcp.org/en/home/index)。下面列出了基於java三個平臺的一系列標準JSR(標準)鏈接:

Java EE (54 JSRs) (https://www.jcp.org/en/jsr/platform?listBy=3&listByType=platform)

Java SE (57 JSRs) (https://www.jcp.org/en/jsr/platform?listBy=2&listByType=platform)

Java ME (85 JSRs) (https://www.jcp.org/en/jsr/platform?listBy=1&listByType=platform)

現在我們進入到一個(Java EE (54 JSRs))標準的JSR下載頁面(JSR-000907 JTA)的API標準:

 

其中有下載鏈接有兩個文檔,從字面意思明白一個是這些規則及標準的評估,一個是這些規則的實施,打開實施規則的文檔可以看出,這些標準提供了一些接口文檔和協議。裏面提供了一些面對開發人員的接口以及面對具體實現接口的各個軟件公司,也就是這些接口的具體的實現包,由各個軟件廠商實現。

  發人員使用開發人員接口(UserTransaction),實現應用程序對全局事務的支持;各提供商依據提供商接口(Transaction)實現事務資源管理功能;事務管理器(TransactionManager )將開發人員對事務的使用映射到實際的事務資源並在事務資源間進行協調與控制。 下面,本文將對包括UserTransaction、Transaction和 TransactionManager 在內的三個主要接口以及其定義的方法進行介紹。


UserTransaction:

面向開發人員的接口爲 UserTransaction,開發人員通常只使用此接口實現 JTA 事務管理,其定義瞭如下的方法:

begin()- 開始一個分佈式事務

commit()- 提交事務

rollback()- 回滾事務

getStatus()- 返回關聯到當前線程的分佈式事務的狀態

setRollbackOnly()- 標識關聯到當前線程的分佈式事務將被回滾

 

TransactionManager:

面向提供商的實現接口主要涉及到 TransactionManager 和 Transaction 兩個對象

Transaction 代表了一個物理意義(具體實現)上的事務,在開發人員調用 UserTransaction.begin() 方法時 TransactionManager 會創建一個 Transaction 事務對象(標誌着事務的開始)並把此對象通過 ThreadLocale 關聯到當前線程。UserTransaction 接口中 的 commit()、rollback(),getStatus() 等方法都將最終委託給 Transaction 類的對應方法執行。

Transaction 接口定義瞭如下的方法:

commit()- 協調不同的事務資源共同完成事務的提交

rollback()- 協調不同的事務資源共同完成事務的回滾

setRollbackOnly()- 標識關聯到當前線程的分佈式事務將被回滾

getStatus()- 返回關聯到當前線程的分佈式事務的狀態

enListResource(XAResource xaRes, int flag)- 將事務資源加入到當前的事務中

delistResourc(XAResource xaRes, int flag)- 將事務資源從當前事務中刪除

registerSynchronization(Synchronization sync)- 回調接口,Hibernate 等 ORM 工具都有自己的事務控制機制來保證事務,但同時 它們還需要一種回調機制以便在事務完成時得到通知從而觸發一些處理工作,如清除緩存等。當事務成功提交後,回調程序將被激活。

TransactionManager 本身並不承擔實際的事務處理功能,它更多的是充當用戶接口和實現接口之間的橋樑。

TransactionManager 中定義的方法:(大部分事務方法與 UserTransaction 和 Transaction 相同)

begin()- 開始事務

commit()- 提交事務

rollback()- 回滾事務

getStatus()- 返回當前事務狀態

setRollbackOnly()

getTransaction()- 返回關聯到當前線程的事務

setTransactionTimeout(int seconds)- 設置事務超時時間

resume(Transaction tobj)- 繼續當前線程關聯的事務

suspend()- 掛起當前線程關聯的事務

在系統開發過程中會遇到需要將事務資源暫時排除的操作,此時就需要調用 suspend() 方法將當前的事務掛起:在此方法後面所做的任何操作將不會被包括在事務中,在非事務性操作完成後調用 resume()以繼續事務(注:要進行此操作需要獲得 TransactionManager 對象,其獲得方式在不同的 J2EE 應用服務器上是不一樣的)。

至此,你也可以自己實現JSRs標準的JTA事務管理了(具體實現在以後的章節中實現)這篇博文知識讓各位看官理解java的一些標準的相關定義。以後的博文大多是基於javaEE來進行的。

JSR規範整理

  • Web Service技術
    • Java Date與Time API (JSR 310)
    • Java API for RESTful Web Services (JAX-RS) 1.1 (JSR 311)
    • Implementing Enterprise Web Services 1.3 (JSR 109)
    • Java API for XML-Based Web Services (JAX-WS) 2.2 (JSR 224)
    • Java Architecture for XML Binding (JAXB) 2.2 (JSR 222)
    • Web Services Metadata for the Java Platform (JSR 181)
    • Java API for XML-Based RPC (JAX-RPC) 1.1 (JSR 101)
    • Java APIs for XML Messaging 1.3 (JSR 67)
    • Java API for XML Registries (JAXR) 1.0 (JSR 93)
  • Web應用技術
    • Java Servlet 3.0 (JSR 315)
    • JavaServer Faces 2.0 (JSR 314)
    • JavaServer Pages 2.2/Expression Language 2.2 (JSR 245)
    • Standard Tag Library for JavaServer Pages (JSTL) 1.2 (JSR 52)
    • Debugging Support for Other Languages 1.0 (JSR 45)
  • 企業應用技術
    • Contexts and Dependency Injection for Java (Web Beans 1.0) (JSR 299)
    • Dependency Injection for Java 1.0 (JSR 330)@postConstruct, @PreDestroy
    • Bean Validation 1.0 (JSR 303)
    • Enterprise JavaBeans 3.1 (includes Interceptors 1.1) (JSR 318)
    • Java EE Connector Architecture 1.6 (JSR 322)
    • Java Persistence 2.0 (JSR 317)
    • Common Annotations for the Java Platform 1.1 (JSR 250)
    • Java Message Service API 1.1 (JSR 914)
    • Java Transaction API (JTA) 1.1 (JSR 907)
    • JavaMail 1.4 (JSR 919)
  • 管理與安全技術
    • Java Authentication Service Provider Interface for Containers (JSR 196)
    • Java Authorization Contract for Containers 1.3 (JSR 115)
    • Java EE Application Deployment 1.2 (JSR 88)
    • J2EE Management 1.1 (JSR 77)
  • Java SE中與Java EE有關的規範
    • JCache API (JSR 107)
    • Java Memory Model (JSR 133)
    • Concurrency Utilitie (JSR 166)
    • Java API for XML Processing (JAXP) 1.3 (JSR 206)
    • Java Database Connectivity 4.0 (JSR 221)
    • Java Management Extensions (JMX) 2.0 (JSR 255)
    • Java Portlet API (JSR 286)
    • 模塊化 (JSR 294)
    • Swing應用框架 (JSR 296)
    • JavaBeans Activation Framework (JAF) 1.1 (JSR 925)
    • Streaming API for XML (StAX) 1.0 (JSR 173)
  • 如果希望知道各種技術的更多細節(包括各份規範的下載鏈接),請訪問Java EE 6技術頁面。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章