1 package org.apache.geronimo;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStreamReader;
6 import java.io.PrintWriter;
7 import java.net.URL;
8 import java.util.Random;
9
10 import javax.servlet.ServletException;
11 import javax.servlet.http.HttpServlet;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
14
15 /**
16 * Servlet implementation class for Servlet: AsyncServlet
17 *
18 * @web.servlet name="AsyncServlet" display-name="AsyncServlet"
19 *
20 * @web.servlet-mapping url-pattern="/async"
21 *
22 */
23 public class BlockingServlet extends HttpServlet {
24 static final long serialVersionUID = 1L;
25
26 private String remoteUrl;
27
28 public void init() throws ServletException {
29 getServletContext().log("getinit init");
30
31 remoteUrl = getServletConfig().getInitParameter("remoteUrl");
32 }
33
34 /**
35 * Process the given Comet event.
36 *
37 * @param event
38 * The Comet event that will be processed
39 * @throws IOException
40 * @throws ServletException
41 */
42 public void doGet(HttpServletRequest request, HttpServletResponse response)
43 throws IOException, ServletException {
44
45 System.out.println("");
46 System.out.println("Inside BlockingServlet.doGet()");
47
48 String sessionId = request.getSession(true).getId();
49
50 if (request.getParameter("remoteUrl") != null) {
51 remoteUrl = request.getParameter("remoteUrl");
52 }
53
54 String remoteUri = request.getParameter("remoteUri");
55 if (remoteUri == null) {
56 remoteUri = "/remoteApp/page";
57 }
58
59 Integer[] params = generateRandomParams();
60 System.out.println("sessionId:" + sessionId + "; delay:" + params[0]
61 + "; code:" + params[1]);
62
63 String url_string = remoteUrl + remoteUri + "?sessionId=" + sessionId + "&delay=" + params[0] + "&code=" + params[1];
64 URL url_connect = new URL(url_string);
65
66 try {
67 BufferedReader input = new BufferedReader(new InputStreamReader(url_connect.openStream()));
68 String line = "";
69 response.setContentType("text/html");
70 PrintWriter out = response.getWriter();
71 while ((line = input.readLine()) != null) {
72 out.println(line);
73 }
74 out.flush();
75 out.close();
76 input.close();
77 }
78 catch(IOException ex) {
79 response.sendError(params[1].intValue());
80 }
81
82
83 System.out.println("doGet processed");
84 }
85
86 protected Integer[] generateRandomParams() {
87 Integer[] params = new Integer[2];
88 final int[] codes = new int[] { 200, 302, 403, 404, 500 };
89
90 Random generator = new Random();
91
92
93 int delay = generator.nextInt(2000) + 10;
94 params[0] = new Integer(delay);
95
96
97 int index = generator.nextInt(codes.length);
98 params[1] = new Integer(codes[index]);
99
100 return params;
101 }
102
103 }