关于对JSR标准的理解
来源:互联网 发布:判断平年和闰年的java 编辑:程序博客网 时间:2024/05/22 15:14
小编从事java的开发已是一年加一半载。。。博客上的学习前期多是理论的学习。。。往后会更加的注重项目的实践来撰写博文!!!!!闲话不多说,直接上内容了,望各位看官斧正啊。
一、基本概念:
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标准的理解
- 对web标准的理解
- 对web标准的理解
- 对Web标准的理解
- 对web标准的理解
- jsr 286标准所需要的文档
- 发现对标准库的理解不够
- 我对标准输入标准输出的理解
- 关于web标准的一些理解
- 关于电力系统标准规约的一些理解
- 关于浏览器对标准的支持
- 关于对递归的理解
- 关于对synchronized的理解
- 关于对TrerSet的理解
- 关于对Selenium的理解
- 关于对truncate的理解
- phantomjs#3系统模块
- OpenStack Austin Nova Design Summit - Migration
- 一个adapter实现多个itemView
- untiy 3d ShaderLab_第6章_VertexLit渲染路径_2_顶点照明和Unity存放光源的第一种方式
- java-计算几何图形的面积(抽象类)
- 关于对JSR标准的理解
- 学校自己挂的题目。。。我也不知道是哪里的。。。
- bash :- : no such file or directory
- 第十周项目一 阅读下面的定义,请说出在测试函数中不同情况的调用产生的结果(5 e)
- Problem E
- Linux下调试与性能分析工具的总结
- Server进程和Client进程获取ServiceManager的远程接口
- hdu4283(区间dp)
- Ajax 完整教程 (转)