@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { JAtomicResourceSession atomicResourceSession = JAtomicResourceSessionHolder.getAtomicResourceSession(); Monitor.get().in(); Throwable throwable = null; Object object = null; try { object = method.invoke(target, args); } catch (Exception e) { logger.error(target.getClass().getName() + "(proxy) invoke encounter exception : ", e); throwable = e; throw e; } finally { if (throwable != null) { atomicResourceSession.rollback(); Monitor.remove(); JAtomicResourceSessionHolder.release(); } if (Monitor.get().out()) { atomicResourceSession.commit(); Monitor.remove(); JAtomicResourceSessionHolder.release(); } } return object; }
@Override public void remove(PnfsId id) { Monitor monitor = _entries.get(id); if (monitor != null) { monitor.remove(); } }