instance.discard();
throw e;
} catch (final Throwable t) {
if (ROOT_LOGGER.isTraceEnabled())
ROOT_LOGGER.trace("Discarding bean " + primaryKey + " because of Throwable", t);
instance.discard();
throw new RuntimeException(t);
} finally {
// the StatefulSessionSynchronizationInterceptor will take care of releasing
context.putPrivateData(ComponentInstance.class, null);
}