JMS生产者接受消息,而JMS消费者确认从服务器接受消息;确认协议允许JMS提供者监测一条消息的整个过程, 以便了解是否成功的生产和消费了该消息; 消息确认 消息确认协议是保证消息传送的关键所在,JMS...; 3.事务性发送和接收 ?...如果事务性生产者和事务性消费者由同一会话创建,那么他们就能够组合在单个事务中;这样一来,JMS客户端就可以作为单独的工作单元生产和消费消息; 4.实例分析 QSender做如下改动: ?...在接收完end结束标志之后,执行commit()方法,高速服务器接收完成;当然这里使用非事务性消费者也是可以接收消息的,事务的范围仅限于生产者或消费者与消息服务器的会话;可以发现JMS的事务和JDBC提供的事务很像...总结 本文介绍了一下JMS的消息确认模式和本地事务,并以ActiveMQ作为服务器来做测试和分析,大体上了解了JMS的确认机制;重点介绍了一下本地事务,至于分布式事务一笔带过,其实在处理分布式事务的问题
事务的基本操作: 1. 开启事务 :start transaction/begin(一组操作前开启事务) 2. 提交事务:commit (操作全部成功,提交事务) 3....回滚事务:rollback(一组操作中任何一个操作出现问题,整组回滚) Spring 中的事务 Spring 中的事务分为两类: 编程式事务(手动写代码操作事务) 声明式事务(利用注解自动开启和提交事务...org.apache.ibatis.logging.stdout.StdOutImpl map-underscore-to-camel-case: true #配置驼峰⾃动转换 实体类: import java.util.Date...指定能够触发事务回滚类型的异常类型 @Transactional 默认只在遇到运⾏时异常和Error时才会回滚,⾮运⾏时异常不回滚....rollbackFor,指定什么异常类型时进行回滚 @Transactional(rollbackFor = Exception.class) 注意: 默认情况下,只有运行时异常RuntimeExpection和Error
事务传播机制 事务传播机制:多个事务⽅法存在调⽤关系时,事务是如何在这些⽅法间进⾏传播的。 上篇博客讲到的事务隔离级别能解决多个事务同时调用一个数据库的问题。...事务传播机制解决的是⼀个事务在多个方法中传递的问题。...,如果当前存在事务,则加入该事务;如果当前没有事务,则创建应该新的事务 Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以⾮事务的⽅式继续运⾏ Propagation.MANDATORY...:强制性,如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常 Propagation.REQUIRES_NEW:创建一个新事务。...Propagation.NESTED:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于 Propagation.REQUIRED。
JPA是Java的一个规范(Java持久性API)。...它用于在Java对象和关系数据库之间保存数据。 JPA充当面向对象的领域模型和关系数据库系统之间的桥梁。 由于JPA只是一个规范,它本身不执行任何操作。 它需要一个实现。...: [enoepl3el2.png] 在整个事务管理过程中使用的是Spring事务控制,并且由相关ORM框架实现JPA规范 JMS事务原理 Spring JMS Session 通过Session进行事务管理操作...、如JBoss等 JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API...,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。
Java EE 简介 Java EE 基本架构 JavaEE 的诞生是为了解决传统 C/S 架构的弊端:客户端臃肿庞大,扩展性差等弊端。 JavaEE 将传统的两层结构细分为了四层。...Java EE 技术变迁 Java EE前身是J2EE(J2EE最后一个版本号是1.4),截止到目前,最新的是 1.7版本。...下图揭示了Java EE中的技术变迁: 每种技术的简单介绍请参照这里; Java EE 容器 前面我们介绍Java EE分层的时候,Web 层和 Business 层用的是 组件(Component),...管理 Web 页面,Servlet和某些 EJB 组件 运行的容器。 Java EE Server。 同时提供 EJB 和Web 容器的运行时。 Application client 容器。...管理 applets 的执行,由浏览器和 Java 插件提供运行时。
1.Junit测试时,使用for循环发送JMS(ReportQuestionSender)的时候,监听器(ReportQuestionListener)只接受到一条消息。
1、什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息...Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持(百度百科给出的概述)。...客户端使用一个连接工厂对象连接到JMS服务提供者,它创建了JMS服务提供者和客户端之间的连接。JMS客户端(如发送者或接受者)会在JNDI名字空间中搜索并获取该连接。...JMS使用两种目的地,队列和话题。...Session 提供了事务的功能,如果需要使用session发送/接收多个消息时,可以将这些发送/接收动作放到一个事务中。
Java EE 应用服务器是在 X/Open DTP 模型和 CORBA OTS 的基础上发展出来的事务处理监视器,TP Monitor 开始融入 Java EE应用服务器,提供更丰富的中间件服务和组件化的应用程序模型...Java EE 中的全局事务处理使用的就是 X/Open DTP 模型。在企业 Java 应用的世界中,X/Open DTP 是事务处理的基石。...JTA 是 Java EE 规范的一部分,旨在简化分布式事务处理。JTA 遵循 X/Open DTP模型,将事务管理器和资源管理器的接口抽象为 Java 接口。...CORBA 比 Java EE 的出现早了十年,并且不受限于单一的实现语言。在 Java EE 出现之前,CORBA 是企业应用程序的标准开发平台。...一些 CORBA 服务,如 CORBA 命名服务、CORBA 事务和 CORBA 安全,被 Java EE 标准所接受,作为创建可互操作的 EJB 服务的手段。
import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask...缺点:Java 单继承限制,无法再继承其他类;任务与线程耦合,重用性差。...import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask...如果 Lambda 体只有一行代码,可省略{}和return(如上述Runnable的单行示例)。...import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit
如上面的图片,上面就是定义了一个 JDK,JDK 有 Java 运行时和 Java SE API。我们都知道装 Java 的时候需要装 JDK,等于就是在你的计算机上装了这么一堆东西。...Java EEJava EE 是 Java Platform, Enterprise Edition (Java EE) 的简写。...Java Platform, Enterprise Edition (Java EE) 是基于 JDK 运行的,没有 JDK 你照样用不了 Java EE。...比如说,非常古老的 EJB,就在 Java EE 里面。Java EE 通常使用 Javax 为包的名称。...比如说重量级的应用服务器和容器:Weblogic 和 JBoss 就是能够支持 Java EE 的。
在Spring中有基于底层API的编程式事务管理和基于TransactionTemplate的编程式事务管理。 2.简述声明式事务管理的处理方式。...其实Spring JdbcTemplate的使用方法和API和JDBC十分类同,我们这里通过一个简单的例子讲解,本章重点是后面的声明式事务管理。...实现类,其中没有什么技术难点,大家直接看代码练手就行: package com.ch5; import java.util.List; public interface TestDao { public...结果分析:我们之前这句sql删除了所有数据,后来插入重复数据导致抛出异常,事务回滚(整个事务回滚,这个事务包括了删除和插入数据。)我们看看我们的数据库是否是这样: ?...这里可以使用默认的事务提交和回滚规则,在业务代码中不需要显式调用任何事务处理的API。
ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。...JMS 简介 • JMS(Java Message Service),即:java消息服务应用程序接口。 • 是Java平台面向消息中间件(MOM)的API/技术规范。...ActiveMQ主要特性 • (1)JMS1.1、J2EE1.4 • (2)J2EE servers(Tomcat,JBoss4,GlassFish,WebLogic…) • (3)多语言客户端(Java...2.完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务) 3.对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性 4....完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务) 5.通过了常见J2EE服务器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的测试,其中通过JCA
前言 从编写Java代码的角度来说,线程一共有六种状态;但是以操作系统的视角来看,线程状态可以分为物种 六种划分 调用getState()方法获取当前线程状态 一.NEW 定义:线程(对象)被创建但还没有启动...thread.join(); //TERMINATED System.out.println(thread.getState()); } } 五种划分 一.新建 和NEW....阻塞 线程启动完毕,但被暂停执行(可能是自身原因,也可能是外部原因),有以下几种情况 1.等待其他线程释放锁对象 2.等待文件IO,如 3.调用wait(无参数/有参数)方法 五.终止 和TERMINATED
什么是J2EE? J2EE(Java 2 Enterprise Edition)是建立在Java 2平台上的企业级应用的解决方式。J2EE技术的基础便是Java 2平台。...J2EE是Java2平台企业版(Java 2Platform Enterprise Edition),核心是一组技术规范与指南,其中所包含的各类组件,服务架构和技术层次,都有共同的标准及规格,让各种依云...换句话说,JMS是Java平台上有关面向消息中间件的技术规范,它提供了一种通用的方式创建、发送、接受和读取企业信息通信系统的消息。 ?...它允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据。JTA和JTS为J2EE 平台提供了分布式事务服务。 ...JTA事务比JDBC事务更强大,一个JTA事务可以有多个参与者,而一个JDBC事务则被限定在一个单一的数据库连接。 Java 事务API 可以横跨的包含:EJB訪问、JDBC连接以及JMS连接。
来自:开源中国 https://www.oschina.net/news/108108/java-ee-rename-as-jakarta-ee Eclipse基金会最近对 Java EE 标准的每个规范进行了重命名...新的名称Jakarta EE是Java EE的第二次重命名。2006年5月,“J2EE”一词被弃用,并选择了Java EE这个名称。...Java EE 5(2005)到Java EE 8(2017)使用javax命名空间。 Java EE 4使用javax命名空间。...除了将“Java”替换为“Jakarta”之外,还为每个规范名称带来了一致性和清晰性。例如,API规范名称中不需要冗余的单词“API”。 规范重命名还没有对依赖项的包名进行标准化。...对于移植旧应用程序,开发人员希望使用兼容Jakarta EE应用服务器或Servlet容器,并确保它们的依赖项使用使用新的groupId和artifactId。
在日常工作中,我经常需要解决许多简单的或者是复杂的Maven/Java EE工程结构的问题。为了找到解决办法,我经常要拿项目的结构做实验,在不同应用服务器上对部署进行测试并且调优。...为了挑战更难的任务和改善作为Java开发者的技能,这也是很重要的一步。...domain工程会有普通的用JPA2注解标注的Java类。 ?...其他的通用的属性,比如我们要编译的Java运行时的版本。 源文件或其他资源的默认的编码。 ? 在properties部分之后,继续添加另一个重要的部分dependencyManagement。...dependencyManagement和pluginManagement的重要性。 资源 Maven3 Java EE 7指南 Maven工程的结构 父pom 什么是依赖管理 什么是插件管理
我们的企业级java bean,尤其是会话bean就放那里。我们还定义了另一个主管实体bean(数据库展现bean)的模块(层),即所谓的域模型。...就目前而言,最终和下面的内容差不多: ?...在Java EE7里面,这个文件已经简化了许多,我们甚至可以略过数据源的定义,因为已经有一个默认的数据源。参考这里。
它实际上是,将会打包在ear中的jar包和wars包,而且将会被看成是一等公民。正如你知道的,我们定义了两个顶层模块,sample-web和sample-services。...这样,sample-services.jar会和sample-domain.jar一起被“获取(fetch)”。...最后的工作:skinny war和MANIFEST.MF文件 最后,我们可以在这里结束。...最后的ear是对的并且可以工作了,但是和所有上述的配置一起,特别是根据我们的喜好的设置来创建skinny wars。需要注意的一个细节:MANIFEST文件是jar和war中的特殊描述符。...从零开始,应用基本的maven准则为Java企业级应用构建一些基本的maven模块。你可以使用这个例子,任意扩展满足你的需求。
synchronized 就会阻塞等待 进入synchronized修饰的代码块,相当于加锁 退出synchronized修饰的代码块,相当于解锁 synchronized用的锁是存在Java...synchronized 几个要点: 1)进入{就是加锁,进入}就是解锁 2)加锁 操作是会防止其他线程“插队”不影响本线程调度出 cpu(和临界区做区分) 3)锁对象,两个线程针对同一个对象加锁...下一个线程并不是立即就能获取到锁,而是要靠操作系统来“唤醒”,这也就是操作系统线程调度的一部分工作 假设有ABC三个线程,线程A先获取到锁,然后B尝试获取锁,然后C再尝试获取锁,此时B和C...都在阻塞队列中排队等待,但是当A释放锁之后,虽然B比C先来的,但是B不一定就能获取到锁,而是和C重新竞争,并不遵守先来后到的规则 注意: synchronized的底层是使用操作系统的mutexlock...(locker) { count++; } } } 在可重入锁的内部,包含了"线程持有者"和"计数器"两个信息: 如果某个线程加锁的时候,发现锁已经被人占用,但是恰好占用的正是自己
最开始的时候 Sun 是希望这个标准和基于 Java 的扩展给企业用户用的。 按照 Java 版本的定义,Java 是不使用主版本的,所以自然就使用了数字 2。 这个就导致 J2EE 实在是难理解。...最令人郁闷的 EJB 就是 J2EE 中的内容,因为程序员实在烦躁这个 EJB 的容器管理和注入,所以就有了一个轻量的框架 Spring,这就是是另外一个演进路径了。...Java EE 在 2006 年 ,Java 1.5 版本发布了,J2EE 这个名字就停止使用了,确实这个名字也难理解。...J2EE 就被改成了 Java EE 或者 Java Platform Enterprise Edition 这个名字更加简单明了,去掉了比较有歧义的数字 2。...https://www.ossez.com/t/j2ee-java-ee-jakarta-ee/14382