Hi You should have a look at AsyncMiddleManServlet. It's in jetty-proxy module.
On Thu, Jul 8, 2021 at 2:45 PM Aniruddha Tekade via jetty-users < jetty-users@eclipse.org> wrote: > 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 > -- Olivier
_______________________________________________ jetty-users mailing list jetty-users@eclipse.org To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users