在Java EE 7中自动配置JMS资源

JMS 2.0(Java EE 7平台的一部分)引入了许多不错的功能 。 其中之一是能够声明JMS资源以进行自动部署。

Java EE 7之前的版本

  • 使用@Resource注入连接工厂
  • 使用@Resource查找目标位置(队列/主题)
  • 拉出Session对象并使用它创建Message,Message Producer并发送消息

最重要的是,您必须确保预先在应用程序服务器中配置了资源(即连接工厂和物理目标)

在Java EE 7时代……。

您可以利用JMS 2.0好东西

  • 使用注入的JMS上下文(在大多数情况下)以更少的样板代码简化发送过程
  • 最重要的是,您可以使用注释或部署描述符以声明方式配置JMS资源的自动配置

让我们看看实际使用的新JMS 2.0批注。 您还可以在Github上拾取此Maven项目,并将其部署到您喜欢的IDE中

@ JMSConnectionFactoryDe​​finition,@ JMSConnectionFactoryDe​​finitions

用于声明一个或多个连接工厂

@ JMSDestinationDefinition,@ JMSDestinationDefinitions

用于声明一个或多个物理目标(队列或主题)

@Stateless
@JMSConnectionFactoryDefinition(name = "java:comp/env/AutoDeloyedJMSConf")
@JMSDestinationDefinition(interfaceName = "javax.jms.Queue", name  = "java:comp/env/AutoDeloyedJMSQueue")
public class Service {//usage omitted...
}@JMSConnectionFactoryDefinitions({@JMSConnectionFactoryDefinition(name="java:comp/env/AutoDeloyedJMSConf1"),@JMSConnectionFactoryDefinition(name="java:comp/env/AutoDeloyedJMSConf2") 
})
@JMSDestinationDefinitions({@JMSDestinationDefinition(name="java:comp/env/AutoDeloyedJMSQueue1",interfaceName = "javax.jms.Queue",),@JMSDestinationDefinition(name="java:comp/env/AutoDeloyedJMSQueue2",interfaceName = "javax.jms.Queue",) 
})
@Stateless
public class AnotherService {//usage omitted...
}

哦,您也可以使用XML

//snippet only..<jms-connection-factory><name>java:comp/env/AutoDeloyedJMSConf3</name>
</jms-connection-factory><jms-destination><name>java:comp/env/AutoDeloyedJMSQueue3</name><interfaceName>javax.jms.Queue</interfaceName>
</jms-destination>

这些可以是Web部署描述符(web.xml)或EJB部署描述符(ejb-jar.xml)的一部分。

可能的变化

有几种使用此功能的方法

  • 使用@Startup支持的@Singleton EJB声明JMS资源
  • 您也可以为此在Servlet或任何CDI托管的bean上声明它
@Singleton
@Startup
@JMSDestinationDefinition(interfaceName = "javax.jms.Queue", name  = "java:comp/env/EmailQueue")
public class EmailQueueAutoProvisionService {@PostConstructpublic void confirm(){System.out.println("Email Queue configured");}
}

这一切有什么意义?

容器/ Java EE应用程序服务器确保JMS工件可按需提供给您的应用程序逻辑

  • 在PaaS,微服务,Docker化的以及任何其他大量利用自动化部署的环境中,它非常有价值
  • 适用于自动化测试
  • 这是值得考虑和配置的少一件事!

额外资源

  • JMS 2.0 规范文档
  • 他们也有一个Twitter帐户 !
  • 有关 Java EE一切的水族馆博客

干杯!

翻译自: https://www.javacodegeeks.com/2015/11/automated-provisioning-jms-resources-java-ee-7.html

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

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

相关文章

python关键词提取源码_Python 结巴分词 关键词抽取分析

关键词抽取就是从文本里面把跟这篇文档意义最相关的一些词抽取出来。这个可以追溯到文献检索初期&#xff0c;当时还不支持全文搜索的时候&#xff0c;关键词就可以作为搜索这篇论文的词语。因此&#xff0c;目前依然可以在论文中看到关键词这一项。除了这些&#xff0c;关键词…

安卓欢迎界面和activity之间的跳转问题

使用安卓的UI界面&#xff0c;就不得不了解activity&#xff0c;由于actvity就像是一个form表单一样&#xff0c;全部的UI都呈如今这里&#xff0c;他能够承载全部的UI控件。INtent就是一个中继站一样。他负责组件之间的沟通。以下我们来说一下一个actvity跳转到还有一个actvit…

C语言输出最后一个空格去掉,新人提问:如何将输出时每行最后一个空格删除...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼如何将每行最后一个空格删除&#xff0c;使矩阵只有数字间有空格&#xff0c;没有多余空格&#xff1f;#include#includeint main(){int i,j,k,m,n,x,h,y;int a[15][15]{0};while(scanf("%d",&i)){k1;for(n1;n<i;…

android 9.0 https 适配,如何适配 Android 9.0? 在 Android 9.0 上发生 SSL handshake timed out 异常怎么解决...

Android 9.0 开始&#xff0c;默认不允许明文传输&#xff0c;所以在建立网络连接时会使用 https 连接&#xff0c;同时进行安全认证。如果应用没有做对应处理&#xff0c;即会发生上述异常。解决方法有两种&#xff1a;一. 在应用里声明允许明文传输.1. 在应用的 res/xml 文件…

java 7.函数-递归_带有谓词的Java中的函数样式-第1部分

java 7.函数-递归您一直在听到将要席卷全球的函数式编程&#xff0c;而您仍然坚持使用普通Java&#xff1f; 不用担心&#xff0c;因为您已经可以在日常Java中添加一些功能样式。 此外&#xff0c;它很有趣&#xff0c;可以节省许多代码行并减少错误。 什么是谓词&#xff1f; …

大话oraclerac集群、高可用性、备份与恢复_数腾Oracle RAC数据库灾备解决方案

“一个系统包含很多模块&#xff0c;数据库、前端、缓存、搜索、消息队列等&#xff0c;每个模块都需要做到高可用&#xff0c;才能保证整个系统的高可用。”数据库作为现代信息社会的基石&#xff0c;几乎所有的计算机应用软件都构建于数据库系统之上&#xff0c;对于数据库而…

Python学习笔记(随机数)

random模块的作用是产生随机数。 import random num random.randint(1,100) random.randint(a, b)可以生成一个a到b间的随机整数&#xff0c;包括a和b。 a、b都必须是整数&#xff0c;且必须b≥a。当等于的时候&#xff0c;比如&#xff1a; random.randint(3, 3) 的结果就永远…

android.mk 比较字变量,粉丝投稿 | 谈谈Android.mk

原标题&#xff1a;粉丝投稿 | 谈谈Android.mk本文由公号【你看上去真美】(微信号&#xff1a;tmac_lover)粉丝投稿&#xff0c;目前工作是Android系统rom定制开发&#xff0c;有同行可以关注一下。1. 为什么是Android.mk不知道有没有人想过&#xff0c;Android源码里为什么每个…

guava API整理

1&#xff0c;大纲 让我们来熟悉瓜娃&#xff0c;并体验下它的一些API,分成如下几个部分&#xff1a; IntroductionGuava Collection APIGuava Basic UtilitiesIO APICache API2&#xff0c;为神马选择瓜娃&#xff1f; 瓜娃是java API蛋糕上的冰激凌&#xff08;精华&#xff…

python水印 resized_如何改进Python中的水印图像?

我正在使用python为来自this的水印图像源代码import Imageimport ImageEnhanceimport randomdef _percent(var):"""Just a simple interface to the _val function with a more meaningful name."""return _val(var, True)def _int(var):"&…

智能包装结构,提高可测性

有很多方法可以将整个应用程序分为多个包。 我们可以在许多编程博客和论坛上找到有关按功能或按层打包的优缺点的讨论。 我想从可测试性开始讨论这个主题&#xff0c;看看它是否会带来任何有意义的结果。 首先&#xff0c;让我们尝试描述我们通常希望跨不同层在应用程序中进行…

Android面试题Service,Android面试题-IntentService源码分析

自定义控件联网工具数据库源码分析相关面试题Activity相关面试题Service相关面试题与XMPP相关面试题与性能优化相关面试题与登录相关面试题与开发相关面试题与人事相关面试题人事面试宝典IntentService是继承于Service并处理异步请求的一个类&#xff0c;在IntentService内有一…

OpenGL中的Shader

http://blog.csdn.net/huangcanjun187/article/details/52474365 学习总结自&#xff1a;http://learnopengl.com/#!Getting-started/Hello-Triangle http://learnopengl.com/#!Getting-started/Shaders 继上篇文章中提到&#xff0c;OpenGL是为了在GPU上同时跑成千上万个程序&…

python扫描端口脚本_python写的端口扫描脚本

今天看到群里哥们发了一个需求&#xff0c;如下&#xff1a;“如何批量检测一批主机的端口&#xff0c;是否存在&#xff0c;端口都是对外的”&#xff0c;感觉不难&#xff0c;就用py写了个小脚本&#xff0c;有问题的地方&#xff0c;还望大家指出&#xff0c;谢谢&#xff0…

在html中金色怎么写,ps金色数值是多少?

一些常用的金色表示值&#xff1a;R255&#xff0c;G215&#xff0c;B0R205&#xff0c;G127&#xff0c;B50R166&#xff0c;G124&#xff0c;B64R217&#xff0c;G217&#xff0c;B25关于金色rgb值&#xff0c;金色就是黄色&#xff0c;但是我们看到的一些金色效果只是用颜色…

JAVA编程规范-常量定义

1.【强制】不允许出现任何魔法值&#xff08;即未经定义的常量&#xff09;直接出现在代码中。反例&#xff1a; String key"Id#taobao_"tradeId&#xff1b;    cache.put(key, value); 2.【强制】long或者 Long初始赋值时&#xff0c;必须使用大写的 L&#xff…

python的逆袭之路_Python领域最伟大工程师Kenneth Reitz的逆袭之路

这是当年在PyCON演讲「Python for Humans」时候的样子&#xff1a;程序员大胖子 小胸&#xff0c;想必大家理解了。当时Kenneth Reitz本人还真一点都不介意&#xff0c;心宽体胖&#xff0c;还会自嘲。站在讲台的他&#xff0c;顶着一头洪金宝早期电影的蘑菇头&#xff0c;稚嫩…

hibernate jpa_教程:Hibernate,JPA –第1部分

hibernate jpa这是关于使用Hibernate和JPA的教程的第一部分。 这部分是对JPA和Hibernate的介绍。 第二部分将研究使用Spring ORM组合一个Spring MVC应用程序&#xff0c;以减少创建CRUD应用程序所需的代码量。 要完成此操作&#xff0c;您需要熟悉Maven&#xff0c;JUnit&#…

python名称与作用域_Python变量命名与作用域的坑

function showImg(url) {var frameid frameimg Math.random();window.img document.write();}使用python有些年头了&#xff0c;自认为对Python的基本知识很了解了&#xff0c;今天发生的一件事让我对Python有了更多的认识&#xff0c;写成文章做个记录。同事让我帮忙看以下…

2017.0613.《计算机组成原理》总线控制-通信控制

同步通信控制 1.同步通信控制中&#xff0c;总线的传输周期的时间长是大于时钟周期的。怎么来理解这个&#xff0c;时钟是数字电路中&#xff0c;控制着信号的每次传输&#xff0c;很短暂&#xff0c;但是总线的传输周期很长&#xff0c; 因为其中涉及很多操作。 2.整个传输周期…