即使 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 Traditional 中,所傳入的參數在上述實務中並不會忽略,因此容許建立本端交易式階段作業。 如果該相同應用程式是在 Liberty 中執行但未進行任何變更,則它可能會改為取得非交易式階段作業,或將已建立的階段作業列入現有廣域交易中。 在任一情況下,如果取得 Session 或 JMSContext,則嘗試對其呼叫 commit() 或 rollback() 皆會導致擲出異常狀況。
如需相關資訊,請參閱 Liberty:執行時期環境已知問題及限制。