When timeout is zero(0), this method setTimeout runs normally, it will not throw the IlleglArgumentException. In other words, zero is valid timeout for this method. The valid arguments:
- TIMEOUT_DEFAULT(-1)
- Zero(0)
- Positive integer(>=1)
So, I think non-negative is better in this method.
(Actually when timeout is zero, it will throw TransactionTimedOutException on transaction starting)
Comment From: simonbasle
A zero timeout is indeed a valid input, and it is up to the underlying transaction implementation to interpret this.
Of particular note is how this gets interpreted if the 0 is passed down to a Jakarta UserTransaction:
If the value is zero, the transaction service restores the default value. If the value is negative a SystemException is thrown.