/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.aries.samples.ariestrader.web.prims;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.aries.samples.ariestrader.util.*;
/**
*
* PingHTTPSession2 session create/destroy further extends the previous test by
* invalidating the HTTP Session on every 5th user access. This results in testing
* HTTPSession create and destroy
*
*/
public class PingSession2 extends HttpServlet {
private static String initTime;
private static int hitCount;
/**
* forwards post requests to the doGet method
* Creation date: (11/6/2000 10:52:39 AM)
* @param res javax.servlet.http.HttpServletRequest
* @param res2 javax.servlet.http.HttpServletResponse
*/
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
doGet(req, res);
}
/**
* this is the main method of the servlet that will service all get requests.
* @param request HttpServletRequest
* @param responce HttpServletResponce
**/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = null;
try
{
try
{
session = request.getSession(true);
}
catch (Exception e)
{
Log.error(e, "PingSession2.doGet(...): error getting session");
//rethrow the exception for handling in one place.
throw e;
}
// Get the session data value
Integer ival = (Integer) session.getAttribute("sessiontest.counter");
//if there is not a counter then create one.
if (ival == null)
{
ival = new Integer(1);
}
else
{
ival = new Integer(ival.intValue() + 1);
}
session.setAttribute("sessiontest.counter", ival);
//if the session count is equal to five invalidate the session
if (ival.intValue() == 5)
{
session.invalidate();
}
try
{
// Output the page
response.setContentType("text/html");
response.setHeader("SessionTrackingTest-counter", ival.toString());
PrintWriter out = response.getWriter();
out.println(
"<html><head><title>Session Tracking Test 2</title></head><body><HR><BR><FONT size=\"+2\" color=\"#000066\">HTTP Session Test 2: Session create/invalidate <BR></FONT><FONT size=\"+1\" color=\"#000066\">Init time: "
+ initTime
+ "</FONT><BR><BR>");
hitCount++;
out.println(
"<B>Hit Count: "
+ hitCount
+ "<BR>Session hits: "
+ ival
+ "</B></body></html>");
}
catch (Exception e)
{
Log.error(e, "PingSession2.doGet(...): error getting session information");
//rethrow the exception for handling in one place.
throw e;
}
}
catch (Exception e)
{
//log the exception
Log.error(e, "PingSession2.doGet(...): error.");
//set the server response to 500 and forward to the web app defined error page
response.sendError(
500,
"PingSession2.doGet(...): error. " + e.toString());
}
} //end of the method
/**
* returns a string of information about the servlet
* @return info String: contains info about the servlet
**/
public String getServletInfo()
{
return "HTTP Session Key: Tests management of a read/write unique id";
}
/**
* called when the class is loaded to initialize the servlet
* @param config ServletConfig:
**/
public void init(ServletConfig config) throws ServletException {
super.init(config);
hitCount = 0;
initTime = new java.util.Date().toString();
}
}