Idea of obtaining a session is strategized
public interface ISessionSupport
{
public HttpSession getSession(HttpServletRequest request
, HttpServletResponse response)
throws AspireServletException;
}
Obtaining an implementation
<request name="ISessionSupport">
<classname>com.ai.servlets.HorizontalSessionSupport1</classname>
<type>FriendSession|UserSession|AnnonymousSession|JointSession</type>
<session-expiry-page>url</session-expiry-page>
<expiration-timeout/>
</request>
Working with IHttpEvents
Idea of http events
public interface IHttpEvents
{
public static String NAME="IHttpEvents";
public void applicationStart() throws AspireServletException;
public void applicationStop() throws AspireServletException;
public void sessionStart(HttpSession session,
HttpServletRequest request,
HttpServletResponse response) throws AspireServletException;
public void sessionStop() throws AspireServletException;
public void beginRequest(HttpServletRequest request,
HttpServletResponse response) throws AspireServletException;
public void endRequest(HttpServletRequest request,
HttpServletResponse response) throws AspireServletException;
public void userLogin(String username, HttpSession session,
HttpServletRequest request,
HttpServletResponse response) throws AspireServletException;
public void userChange(String oldUser,
String newUser,
HttpSession session,
HttpServletRequest request,
HttpServletResponse response) throws AspireServletException;
}
Loading a user profile when login takes place
public class MyUserLoginEvent extends DefaultHttpEvents
{
public void userLogin(String username, HttpSession session,
HttpServletRequest request, HttpServletResponse response)
throws AspireServletException
{
AppObjects.log("Info:user loggedin event");
Hashtable args = new Hashtable();
args.put("aspire_session",session);
args.put("profile_user",username);
try
{
AppObjects.getObject(AspireConstants.SESSION_SUPPORT_NEW_USER_SESSION_LOADER,args);
}
catch(RequestExecutionException x)
{
throw new AspireServletException("Error:" + x.getRootCause(), x);
}
}//eof-function
}//eof-class
Specifying http events
<request name="IHttpEvents">
<classname>EventDeMultiplexer</classname>
<eventHandlers>UserLoginEventRequest</eventHandlers>
</request>
<request name="UserLoginEventRequest">
<classname>MyUserLoginEvent</classname>
</request>
References
1. General Introduction to other Server side Patterns in this series