Hi All, I am trying to build a response for a request that is saved in hashmap. But I am not sure how can I solve this problem - should I use async mechanism or multithreading and how?
- Request A is sent to a doGET() method to be served but doGET makes some changes and makes another request B to the outside server. - I save the request with its UUID request ID into a hashmap - The outside server sends 200 OK back for new request B. - The outside server then makes a POST request which has data to be sent back to request A. But I am super confused about how can I send this data with a response back to request A as a response? Can I use some kind of asynchronous mechanism or multithreading use? But I am super struggling with this? Even simplifying this approach would be great. But I must send the data received in the POST request back to request A. Please advise on how to progress on this. My handler class code is as follows - Map<String, HttpServletRequest> requestLookup = new HashMap<>(); public void handle(String target, Request jettyReq, HttpServletRequest request, HttpServletResponse response) { // Redirect API control based on HTTP method type if (request.getMethod().equals(constGetRequest)) { getObject(jettyReq, request, response); } if (request.getMethod().equals(constPostRequest)) { writeGetObjectResponse(jettyReq, request, response); } jettyReq.setHandled(true); } public void doGET(Request jettyReq, HttpServletRequest request, HttpServletResponse response) { requestLookup.put(xRequestId, request); String requestURI = request.getRequestURI(); String[] strs = requestURI.split("/"); for (String str : strs) { System.out.println("item:" + str); } String object_key; String bucket_name; String lambdaFunc; if (strs.length <= 2) { try { throw new Exception("Can not get bucket and object key info"); } catch (Exception e) { e.printStackTrace(); } } bucket_name = strs[1]; System.out.println("Handler -- bucketName received = " + bucket_name); // Redis class contains the mapping of bucket_name and function name to be executed in the Python server lambdaFunc = redis.getFuncFromRedis(bucket_name); // example function - "".upper() object_key = requestURI.substring(requestURI.indexOf(bucket_name) + bucket_name.length() + 1); System.out.println("objectKey = " + object_key); S3ObjectReader getObject = new S3ObjectReader(); response.setContentType("text/html;charset=utf-8"); response.setStatus(HttpServletResponse.SC_OK); List<String> result = getObject.printOriginalObjectContent(bucket_name,object_key); System.out.println("Print original object content:"); for (String s : result) { System.out.println(s); } System.out.println("Print transformed object content:"); LambdaFunctionConnector connectLambdaFunc = new LambdaFunctionConnector(); connectLambdaFunc.sendRequest(lambdaFunc,result); } public void doPOST(Request jettyReq, HttpServletRequest req, HttpServletResponse res) { // retrieve request from the lookup table String requestID = request.getHeader("X-Request-ID"); HttpServletRequest originalRequest = requestLookup.get(requestID); } - aniruddha ========= ᐧ
_______________________________________________ jetty-users mailing list jetty-users@eclipse.org To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users