1 5 package com.tctest.server.appserver.unit; 6 7 import org.apache.commons.httpclient.HttpClient; 8 9 import com.tc.test.server.appserver.unit.AbstractAppServerTestCase; 10 import com.tc.test.server.util.HttpUtil; 11 12 import java.io.IOException ; 13 import java.io.PrintWriter ; 14 import java.io.StringWriter ; 15 import java.net.URL ; 16 17 import javax.servlet.http.HttpServlet ; 18 import javax.servlet.http.HttpServletRequest ; 19 import javax.servlet.http.HttpServletResponse ; 20 import javax.servlet.http.HttpSession ; 21 22 public class ShareSessionObjectTest extends AbstractAppServerTestCase { 23 public final void testSessions() throws Exception { 24 25 startDsoServer(); 26 27 HttpClient client = HttpUtil.createHttpClient(); 28 29 int port0 = startAppServer(true).serverPort(); 30 int port1 = startAppServer(true).serverPort(); 31 32 URL url0 = new URL (createUrl(port0, TestServlet.class) + "?cmd=set"); 33 URL url1 = new URL (createUrl(port1, TestServlet.class) + "?cmd=read"); 34 35 assertEquals("OK", HttpUtil.getResponseBody(url0, client)); 36 assertEquals("OK", HttpUtil.getResponseBody(url1, client)); 37 } 38 39 public static final class TestServlet extends HttpServlet { 40 41 private static final String ATTR_NAME = "session reference"; 42 43 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { 44 PrintWriter out = response.getWriter(); 45 46 try { 47 doGet0(request, response); 48 out.write("OK"); 49 } catch (Throwable t) { 50 StringWriter sw = new StringWriter (); 51 t.printStackTrace(new PrintWriter (sw)); 52 out.write(sw.toString()); 53 } 54 } 55 56 private void doGet0(HttpServletRequest request, HttpServletResponse response) { 57 HttpSession session = request.getSession(true); 58 response.setContentType("text/html"); 59 60 String cmd = request.getParameter("cmd"); 61 62 Object o = session.getAttribute(ATTR_NAME); 63 if ("set".equals(cmd)) { 64 if (o != null) { throw new AssertionError ("attribute is not null: " + o); } 65 session.setAttribute(ATTR_NAME, session); 66 } else if ("read".equals(cmd)) { 67 if (o != session) { throw new AssertionError ("different session objects, " + session + " != " + o); } 68 } else { 69 throw new AssertionError ("unknown cmd: " + cmd); 70 } 71 72 } 73 } 74 75 } 76 | Popular Tags |