jms.jar 2.0_JMS 2.0中JMSContext的类型

jms.jar 2.0

如果您遵循Java EE,那么您将不会知道JMS 2.0(Java EE 7)中的简化API组件。 构成简化API一部分的重要接口之一是javax.jms.JMSContext接口。

根据实例的获取和管理方式(生命周期),JMSContext可以分为两种类型:容器管理和应用程序管理

应用管理

让我们看一下代码片段:

@Path("email")
@Stateless
public class EmailService {//pulls in default Conn Factory as per Java EE 7@ResourceConnectionFactory cf;//application managedJMSContext ctx;@Resource("jms/emailQ")Destination emailQ;@POSTpublic void send(String email) {Session session;try {ctx = cf.createContext();ctx.createProducer().send(emailQ, email);System.out.println("Message Sent to queue - " + ((Queue) emailQ).getQueueName());} catch (JMSException ex) {Logger.getLogger(EmailService.class.getName()).log(Level.SEVERE, null, ex);throw new JMSRuntimeException(ex.getMessage(), ex.getMessage(), ex);} finally {//clean up after use. Can also be done as inside a @PreDestroy callback methodctx.close();System.out.println("JMSContext closed");}}
}

在这种情况下,使用ConnectionFactory获得了JMSContext的实例,因此需要由应用程序代码关闭。 容器将无法管理其生命周期

集装箱管理

如果使用@Inject允许容器注入JMSContext实例,则容器将对其生命周期承担全部责任。

@Path("email")
@Stateless
public class AwesomeEmailService {//container managed@InjectJMSContext ctx;@Resource("jms/emailQ")Destination emailQ;@POSTpublic void send(String email) {Session session;try {ctx.createProducer().send(emailQ, email);System.out.println("Message Sent to queue - " + ((Queue) emailQ).getQueueName());} catch (JMSException ex) {Logger.getLogger(AwesomeEmailService.class.getName()).log(Level.SEVERE, null, ex);throw new JMSRuntimeException(ex.getMessage(), ex.getMessage(), ex);}}
}

如果在容器管理的JMSContext上调用close() ,将最终遇到此异常– javax.jms.IllegalStateRuntimeException:在容器管理(注入)的JMSContext上不允许使用此方法。

和…。

在上一个示例中,容器自动使用默认的Connection Factory(根据Java EE 7)。 您还可以利用@JMSConnectionFactory批注(JMS 2.0的另一个有用补充)来指定您选择的连接工厂。

@Path("email")
@Stateless
public class TheBestEmailService {//container managed@Inject@JMSConnectionFactory("jms/myConnectionFactory")JMSContext ctx;@Resource("jms/emailQ")Destination emailQ;@POSTpublic void send(String email) {Session session;try {ctx.createProducer().send(emailQ, email);System.out.println("Message Sent to queue - " + ((Queue) emailQ).getQueueName());} catch (JMSException ex) {Logger.getLogger(TheBestEmailService.class.getName()).log(Level.SEVERE, null, ex);throw new JMSRuntimeException(ex.getMessage(), ex.getMessage(), ex);}}
}

就是这样..干杯!

翻译自: https://www.javacodegeeks.com/2015/06/types-of-jmscontext-in-jms-2-0.html

jms.jar 2.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

配置多个git账号_docker随手笔记第七节 jenkins通过git部署java微服务插件安装

docker随手笔记第一节 docker概念及安装docker随手笔记第二节 docker常用命令解析docker随手笔记第三节 docker构建java镜像docker随手笔记第四节 docker安装mysql5.7docker随手笔记第五节 docker安装redis4.0jenkins部署git的java微服务需要如下插件SSH plugin (远程登陆到服务…

适合新手入门—嵌入式C语言

点击上方蓝字关注我,了解更多咨询你现在被数百种电子设备包围着,虽然这些设备表面看起来很简单,但它们的体内都运行着复杂的微处理器(或微控制器)。微处理器的功能由嵌入式系统软件控制、引导和监督。嵌入式软件和嵌入式硬件构成了一个嵌入式…

怎样编写测试类测试分支_编写干净的测试–天堂中的麻烦

怎样编写测试类测试分支如果我们的代码有明显的错误,我们很有动力对其进行改进。 但是,在某些时候,我们认为我们的代码“足够好”并继续前进。 通常,当我们认为改进现有代码的好处小于所需的工作时,就会发生这种情况。…

access无法与wincc链接_wincc和Access连接写如变量

我要把在WINCC中设定的变量(多个变量)保存到ACCESS数据库,用的时候再从ACCESS中提取写入PLC,分别用保存,读取,增加,按钮实现,怎么做,最好详细说明,最佳答案WinCC 对一个小型数据库进行查询、插入等操作,推荐使用 MS Access 比较方便。大致步骤如下:1、电…

如何学习C语言数据结构?

点击上方蓝字关注我,了解更多咨询C语言的数据结构与算法,难就难在链表,学会了链表,可能后面就一点都不难了。书籍推荐《数据结构与算法分析—C语言描述版》,要深入学习的话可以选择这本书,因为针对链表的讲…

数组做参数_C语言进阶之路:函数—数组参数!

数组参数属于指针参数.指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径.如果把数组当作参数, 不管你愿意与否, 它就是指针, 指向第一个值的指针.1. 数组参数就是指向第一个元素的指针:2. 干脆直接声明为指针:3. 即使你在形参中指定维数也不起…

wso2 esb_使用WSO2 ESB进行邮件内容过滤

wso2 esb每个集成设计师或开发人员都应该熟悉Gregor Hohpe和Bobby Woolf所描述的企业集成模式(EIP) 。 模式之一是“内容消息过滤器” (不要与消息过滤器模式混淆)。 使用不同的Mediator在WSO2中有多种方法可以实现此目的。 一种…

c语言中的/和%表示什么意思

点击上方蓝字关注我,了解更多咨询%代表求余运算符号;/代表除法运算符号。1、求余是一种数学计算方法,指一个数除以另一个数,不够除的部分就是余数,就是求余的结果。一个数除以另一个数,要是比另一个数小的话…

vue 脚手架测试环境_关于单元测试脚手架的几点思考

vue 脚手架测试环境莱昂:Luc Besson的专业人士 当我开始通过创建相同的对象并准备用于运行测试的数据来重复进行单元测试方法时,我对设计感到失望。 带有大量代码重复的长测试方法看起来并不正确。 为了简化和缩短它们,基本上有两个选择&…

Lightly:新一代的C语言IDE

点击上方蓝字关注我,了解更多咨询C语言最初是作为Unix系统的开发工具而发明,现如今已成为最广泛使用、最流行的编程语言之一。它具有如下几个特点:(1)低级语言它是一种建立在底层构建逻辑的机器语言,可以直…

大篆汉字对照表_篆书转换器软件下载(篆体字转换汉字对照表)

笔顺篆书的笔顺和汉字笔顺规则基本相仿,如先横后竖、从上到下、从左到右等,这些对初学者来说是不成问题的。重要的是和汉字不同的笔顺,而这些不同之处正是篆书笔顺的特点,掌握了这些特点,就能把握好篆书的结体&#xf…

java 8 lambda_异常作弊– Java 8 Lambdas

java 8 lambda异常作弊– Java 8 Lambdas 撇开关于Checked vs Runtime异常的宗教辩论&#xff0c;有时由于库的构造不佳&#xff0c;处理Checked示例会使您发疯。 考虑一下您可能要编写的以下代码片段&#xff1a; public void createTempFileForKey(String key) {Map<Str…

c语言程序的基本单位是什么呢?

点击上方蓝字关注我&#xff0c;了解更多咨询随着科技的不断发展&#xff0c;电脑等终端设备已经成为我们生活中不可或缺的工具&#xff0c;而希望学习程序设计语言的朋友也越来越多&#xff0c;那么c语言的基本单位是什么呢&#xff1f;其实&#xff0c;c语言的基本单位是函数…

困难时拉你一把的图片_人生感悟语录:最不能忘记的,是在你困难时拉你一把的人...

1、人&#xff0c;最不能忘记的&#xff0c;是在你困难时拉你一把的人;最不能结交的&#xff0c;是在你失败时藐视你的人;最不能相信的&#xff0c;是在你成功时吹捧你的人;最不能抛弃的&#xff0c;是和你同创业共患难的人;最不能爱的&#xff0c;是不看重你人格的人。2、人生…

关于C语言中的memset()函数你了解多少

点击上方蓝字关注我&#xff0c;了解更多咨询1.函数原型及功能memset()函数原型为&#xff1a;函数功能&#xff1a;将_Dst所指区域的前size_t个字节均初始化为_val&#xff0c;调用时需要引用string.h头文件memset()函数多用于数组和结构体这种占用内存比较大的数据结构的初始…

如何判断无法到达目标的拼图_拼图项目的动机和目标

如何判断无法到达目标的拼图几周前&#xff0c;我写了一篇关于Jigsaw项目可能如何破坏现有代码的文章 。 那么我们得到什么回报呢&#xff1f; 让我们看一下项目解决的痛点及其在Java 9中解决问题的目标。 系列 这篇文章是正在进行的有关拼图项目系列的一部分。 按照推荐的顺序…

deepin下载python_深度操作系统中怎样下载python?

需要以下4步&#xff1a;1、下载 2、获取权限 3、安装 4 、运行测试注意&#xff1a;千万不要卸载或者强制卸载原来自带的python&#xff0c;具体原因请看度娘的介绍&#xff01;1、下载Python3.7.6&#xff1a;到官网下载https://www.python.org&#xff0c;在downloads中可以…

javafx显示image_JavaFX技巧20:有很多要显示的吗? 使用画布!

javafx显示imageJavaFX应用程序似乎有两种&#xff1a;第一种使用带有节点和CSS样式的场景图&#xff0c;第二种使用单个画布。 但是&#xff0c;将这两种方法混合使用是完全合法的。 尤其是当您的应用程序必须显示大量详细信息时&#xff0c;您很容易最终创建成千上万个节点。…

c语言中|的含义

点击上方蓝字关注我&#xff0c;了解更多咨询||在c语言中的意思是逻辑OR&#xff08;或&#xff09;运算&#xff0c;运算符两端有一个变量为真&#xff0c;则结果为真。比如a||b表示a和b做逻辑OR&#xff08;或&#xff09;运算&#xff0c;只要有任何一个变量为“真”&#x…

30 校准_校准or质控,傻傻分不清楚

今天发个福利&#xff0c;应kkz的要求&#xff0c;聊一聊我对IVD校准和质控的个人理解。非专业科普文&#xff0c;欢迎交流&#xff5e;先来讲个小故事&#xff1a;我小的时候&#xff0c;家里用的挂钟每隔一段时间就要调准一下。那个时候没有网络&#xff0c;爸妈是对着中央新…