The mbean code for setting the default timeout says:
public void setTransactionTimeout(int timeout) throws javax.transaction.SystemException
{
if (timeout > 0)
else
throw new javax.transaction.SystemException("Transaction Timeout < 0");
}
This means that it's not possible for anyone to provide a value of -1, which means: transactions never timeout. Also, the if clause should say >= 0 if the else clause is to be accurate.