change jta transaction timeout from default to custom

前端 未结 2 875
自闭症患者
自闭症患者 2021-01-13 01:11

I am using Atomikos for JTA transaction. I have following setting for JTA:

UserTransactionImp userTransactionImp = new UserTransactionImp();
userTransactionI         


        
相关标签:
2条回答
  • 2021-01-13 01:21

    From the Atomikos documentation:

    com.atomikos.icatch.max_timeout

    Specifies the maximum timeout (in milliseconds) that can be allowed for transactions. Defaults to 300000. This means that calls to UserTransaction.setTransactionTimeout() with a value higher than configured here will be max'ed to this value. For 4.x or higher, a value of 0 means no maximum (i.e., unlimited timeouts are allowed).

    Indeed, if you take a look at the Atomikos library source code (for both versions 4.0.0M4 and 3.7.0), in the createCC method from class com.atomikos.icatch.imp.TransactionServiceImp you will see:

    387:   if ( timeout > maxTimeout_ ) {
    388:       timeout = maxTimeout_;
    389:       //FIXED 20188
    390:       LOGGER.logWarning ( "Attempt to create a transaction with a timeout that exceeds maximum - truncating to: " + maxTimeout_ );
    391:   }
    

    So any attempt to specify a longer transaction timeout gets capped to maxTimeout_ which has a default value of 300000 set during initialization if none is specified.

    You can set the com.atomikos.icatch.max_timeout as a JVM argument with:

    -Dcom.atomikos.icatch.max_timeout=900000

    or you could use The Advanced Case recipe specified in the Configuration for Spring Section from the Atomikos documentation.

    0 讨论(0)
  • 2021-01-13 01:35

    I've resolved similar problem where configuration in application.yml (or application. properties) of Spring Boot did not get picked up.

    There was even a log that I later found mentioned in official docs.

    However, I added transactions.properties file (next to the application.yml) where I set mine desired properties.

    # Atomikos properties
    
    # Service must be defined!
    com.atomikos.icatch.service = com.atomikos.icatch.standalone.UserTransactionServiceFactory
    
    # Override default properties.
    com.atomikos.icatch.log_base_dir = ./atomikos
    

    Some properties can be set within transactions.properties and other within jta.properties file.

    0 讨论(0)
提交回复
热议问题