The EJB3.1 spec, section Section 188.8.131.52.1 says:
"An @AccessTimeout value of -1 indicates that the client request will block indefinitely until forward progress can be made.
An @AccessTimeout value of 0 indicates that concurrent access is not allowed. Access attempts on methods with a timeout value of 0 result in a javax.ejb.ConcurrentAccessException."
We currently don't handle these values and just pass them to Lock.tryLock(), which as per its javadoc says:
"If the time is less than or equal to zero, the method will not wait at all. "
This breaks the EJB3.1 spec expectation.