簡體   English   中英

Atomikos 與 Hibernate(MySQL) 有連接錯誤

[英]Atomikos with Hibernate(MySQL) have connection error

我設置了以下屬性導致 MySQL 錯誤( https://www.atomikos.com/Documentation/KnownProblems#MySQL_XA_bug

com.atomikos.icatch.serial_jta_transactions=false
pinGlobalTxToPhysicalConnection="true"

但是當我在設置上層屬性后使用多個請求對其進行測試時,它顯示以下錯誤

XA resource 'shard0': suspend for XID '3139322E3136382E3231392E3131382E746D313634343537333034393734363030303031:3139322E3136382E3231392E3131382E746D31' raised -5: invalid arguments were given for the XA operation java.sql.SQLException: XAER_INVAL: Invalid arguments (or unsupported command)
at com.atomikos.datasource.xa.XAResourceTransaction.xaSuspend(XAResourceTransaction.java:700) [7 skipped]
at com.atomikos.datasource.xa.session.BranchEnlistedStateHandler.transactionSuspended(BranchEnlistedStateHandler.java:94)
at com.atomikos.datasource.xa.session.TransactionContext.transactionSuspended(TransactionContext.java:94)
at com.atomikos.datasource.xa.session.SessionHandleState.notifyBeforeUse(SessionHandleState.java:165)
at com.atomikos.jdbc.AtomikosConnectionProxy.enlist(AtomikosConnectionProxy.java:207)
... 140 common frames omitted

我想知道為什么即使我設置了所有屬性,我的應用程序也會從下面的代碼中拋出“UnexpectedTransactionContextException”。

//BranchEnlistedStateHandler.java(Atomikos)
    TransactionContextStateHandler checkEnlistBeforeUse ( CompositeTransaction currentTx)
            throws InvalidSessionHandleStateException, UnexpectedTransactionContextException 
    {
        
        if ( currentTx == null || !currentTx.isSameTransaction ( ct ) ) {
            //OOPS! we are being used a different tx context than the one expected...
            
            //TODO check: what if subtransaction? Possible solution: ignore if serial_jta mode, error otherwise.
            
            String msg = "The connection/session object is already enlisted in a (different) transaction.";
            if ( LOGGER.isTraceEnabled() ) LOGGER.logTrace ( msg );
            throw new UnexpectedTransactionContextException();
        } 
        
        //tx context is still the same -> no change in state required
        return null;
    }java

為時已晚,但這可能會幫助某人:

春季啟動 2.6.7

mysql-connector-java 8.0.29

根據 atomikos 問題MySQL_XA_bug嘗試將以下屬性添加到 spring boot。

spring.jta.atomikos.properties.serial-jta-transactions = false
spring.datasource.xa.properties.pinGlobalTxToPhysicalConnection = true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM