private int initStepTransactionTimeout() {
        logger.entering(sourceClass, "initStepTransactionTimeout");
        Properties p = runtimeStepExecution.getProperties();
        int timeout = DEFAULT_TRAN_TIMEOUT_SECONDS; // default as per spec.
        if (p != null && !p.isEmpty()) {

            String propertyTimeOut = p.getProperty("javax.transaction.global.timeout");
            if (logger.isLoggable(Level.FINE)) {
                logger.log(Level.FINE, "javax.transaction.global.timeout = {0}", propertyTimeOut == null ? "<null>" : propertyTimeOut);
            }
            if (propertyTimeOut != null && !propertyTimeOut.isEmpty()) {
                timeout = Integer.parseInt(propertyTimeOut, 10);
            }
        }
        logger.exiting(sourceClass, "initStepTransactionTimeout", timeout);
        return timeout;
    }
private int initStepTransactionTimeout ( ) { logger . entering ( sourceClass , "initStepTransactionTimeout" ) ; Properties p = runtimeStepExecution . getProperties ( ) ; int timeout = DEFAULT_TRAN_TIMEOUT_SECONDS ; if ( p != null && ! p . isEmpty ( ) ) { String propertyTimeOut = p . getProperty ( "javax.transaction.global.timeout" ) ; if ( logger . isLoggable ( Level . FINE ) ) { logger . log ( Level . FINE , "javax.transaction.global.timeout = {0}" , propertyTimeOut == null ? "<null>" : propertyTimeOut ) ; } if ( propertyTimeOut != null && ! propertyTimeOut . isEmpty ( ) ) { timeout = Integer . parseInt ( propertyTimeOut , 10 ) ; } } logger . exiting ( sourceClass , "initStepTransactionTimeout" , timeout ) ; return timeout ; }
Note we can rely on the StepContext properties already having been set at this point.

@return global transaction timeout defined in step properties. default
timeout value is 180