即使 WebSphere Application Server Traditional 允许本地事务化的 JMS 会话,也不允许将 WebSphere Application Server Traditional 本地事务化的 JMS 会话移植到 Liberty。
当 transacted 布尔值为 true 或者 sessionMode 为 Session.SESSION_TRANSACTED 或 JMSContext.SESSION_TRANSACTED 时,此规则将通过对以下方法的引用来标记 Java 代码:
调用带有这些特定值的方法可能会在 Liberty 中产生不同的行为。
根据 JMS 规范,在 Java EE Web 或 EJB 容器中:
AUTO_ACKNOWLEDGE 或 DUPS_OK_ACKNOWLEDGE,并且会使用指定的 sessionMode/acknowledgeMode 将会话或上下文创建为非事务性的。
在传统 WebSphere 中,在这些场景中不会忽略传入的参数,因此允许创建本地事务化的会话。 如果相同的应用程序未进行任何更改在 Liberty 上运行,那么可能会获取非事务化的会话,或者可在现有的全局事务中获取创建的会话。 在任一情况下,如果获取 Session 或 JMSContext,尝试对其调用 commit() 或 rollback() 都将导致抛出异常。
有关信息,请参阅 Liberty: Runtime environment known issues and restrictions。