public class MasterProductManagerDMI { public MasterProductViewDto updateAR(MasterProductViewDto masterProuductDto) { //Code here } } //////////////////////////////////////////// public class KeelBuilderIDACall extends IDACall { private static final long serialVersionUID = 1L; private static final String CLIENT_ID = "clientId"; private static final String INVALIDATE_CACHE = "invalidateCache"; private static final Logger logger = Logger .getLogger(KeelBuilderIDACall.class); private static final boolean DEFAULT_AS_USERMESSAGE = true; private static final boolean DEFAULT_WARNING = true; @Override public void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { long start = System.currentTimeMillis(); try { RPCManager rpcManager; RequestContext requestContext = RequestContext.instance(this, request, response); try { rpcManager = new RPCManager(this, request, response); } catch (ClientMustResubmitException exception) { return; } Long clientId = Long.parseLong(request.getParameter(CLIENT_ID)); boolean invalidateCache = Boolean.parseBoolean(request .getParameter(INVALIDATE_CACHE)); SmartClientTransaction smartClientTransaction; try { smartClientTransaction = new SmartClientTransaction( requestContext, clientId); smartClientTransaction.markAsStarted(); Map responses = new HashMap(); try { logger.info("Performing " + rpcManager.requestCount() + " operation(s)"); for (Object object : rpcManager.getRequests()) { responses.put( CacheTransaction.getRequestKey(object), sendResponse(object, rpcManager, requestContext, invalidateCache)); } } catch (Exception e) { smartClientTransaction.remove(); e.printStackTrace(); throw e; } smartClientTransaction.markAsCompleted(responses); } catch (AlreadyProcessedException exception) { logger.debug("Smartclient transaction was completed earlier. Result get from cache"); Map responses = SmartClientTransaction .getResponses(requestContext, clientId); Map requestsResponseMap = CacheTransaction.findCorrespondence( rpcManager.getRequests(), responses); for (Object req : requestsResponseMap.keySet()) { sendResponseFromCache(req, requestsResponseMap.get(req), rpcManager, requestContext, invalidateCache); } } catch (InProcessException exception) { logger.debug("Smartclient transaction in executing"); for (Object object : rpcManager.getRequests()) { sendExceptionResponse(object, rpcManager, requestContext, exception); } } catch (CacheTransactionExpiredException exception) { logger.debug("Smartclient transaction in executing"); for (Object object : rpcManager.getRequests()) { sendExceptionResponse(object, rpcManager, requestContext, exception); } } try { response.flushBuffer(); } catch (IOException ex) { } } catch (Throwable throwable) { handleError(response, throwable); } finally { long end = System.currentTimeMillis(); logger.debug(MessageFormat.format("operation(s) takes {0}ms", Long.toString(end - start))); } } [...] }