@Override
 public RET call() throws Exception {
   threadInitializer.initThread();
   try {
     LifeCycleManager.beforeRequest(request);
     try {
       Factory.setSessionFactory(sessionFactory, SessionType.CURRENT);
       return inner.call();
     } catch (Exception e) {
       System.err.println("Error while executing " + inner.getClass().getName());
       e.printStackTrace();
       throw e;
     } finally {
       LifeCycleManager.afterRequest();
     }
   } finally {
     threadInitializer.termThread();
   }
 }