public Object processInvocation(InterceptorContext context) throws Exception {
final StatefulSessionComponent component = getComponent(context, StatefulSessionComponent.class);
final StatefulSessionComponentInstance instance = getComponentInstance(context);
// TODO: per method
AccessTimeout timeout = component.getAccessTimeout();
boolean acquired = lock.tryLock(timeout.value(), timeout.unit());
if(!acquired) {
throw new ConcurrentAccessTimeoutException("EJB 3.1 FR 4.3.14.1 concurrent access timeout on " + context
+ " - could not obtain lock within " + timeout.value() + timeout.unit());
}
TransactionSynchronizationRegistry transactionSynchronizationRegistry = component.getTransactionSynchronizationRegistry();
Object currentTransactionKey = transactionSynchronizationRegistry.getTransactionKey();
if(transactionKey != null) {