JCA JMS和Plain JMS有什么区别

时间:2019-05-08 02:54:08

标签: jms jca

我是JMS的新手。我试图了解JCA JMS(Java连接器体系结构)和Plain JMS之间的区别。我尝试通过网络找到它,但没有找到满意的结果。我们可以使用WebLogic和JBoss都支持的JCA JMS编写代码吗?

1 个答案:

答案 0 :(得分:1)

从API角度看,“ JCA JMS”和“普通JMS”之间没有区别。区别在于他们的行为。与普通的JMS连接工厂相比,基于JCA的JMS连接工厂具有两大优势:

  • 池化-一般而言,当从基于JCA的JMS连接工厂“创建”连接时,底层物理连接将从池中取出,而当连接“关闭”时,底层物理连接返回到池中。这消除了实际创建和破坏物理连接的性能损失,该性能连接使客户端可以以通常被认为是反模式的方式编写(例如,为每个发送的消息“创建”和“关闭”连接)。
  • 自动加入JTA事务-在大多数情况下,在Java EE应用程序服务器中运行的消耗JMS消息的应用程序都是通过MDB进行的。默认情况下,消息在MDB中的消耗(即onMessage的执行)发生在JTA事务中。如果在MDB的处理过程中使用了基于JCA的JMS连接工厂(例如,发送消息),则JCA逻辑将自动将会话加入JTA事务中,以便消息的使用和消息的发送是一个原子操作(假设基于JCA的连接工厂具有XA功能)。

我希望您可以编写在WebLogic和JBoss AS中表现相同的应用程序代码。