Hey Dave,
I have one problem.... Action Class
i will tell u the clean scenario.. It is related with the session
validation and invalidation in the same page..
1) i am logging into the site and retrieved my trip details...
2) and i started Initial Search with the same user name and
password...coz it maintains my session..
3) i went upto 3 steps... (ex: Review Trip page). there it should
ask only the continue button.. i am getting it. and i logged out from
that session
4) and in the same screen i started my initial search again..
5) when i get into the review trip page it should ask for two
options.. one is login option and another on is continue option..
hence i logged out from the first session..
6) But i am getting only the continue option... when i looked into
application.log file, it is given me the same session id and same
JSessionId...
Please tell me how can i come over this problem
here is the code change i have made to validate and invalidate the session:---
private void validateSession( HttpServletRequest request,
HttpServletResponse response,
SessionManager sessionManager )
throws ActionSessionException
{
HttpSession httpSession = request.getSession();
Session sessionToken = getSession( request );
if ( isDebugEnabled() )
{
logDebug( "AbstractTpAction::validateSession( )-->",
"Found session token. Will try to validate it" );
}
//TODO: will be replaced by 'DONT_CREATE_TP_SESSION'.
if ( sessionToken.getTpSession().getLastKnownState() ==
TpSessionState.TPNOTAVAILABLE && !isTPUsed )
{
createSession( request, response, sessionManager );
return;
}
if ( !isTPUsed )
{
return;
}
// Copy the current session ID from cookie for any of the 888 applications
// if this isn't the first time they've validated the session.
// Their session IDs change everytime they go to the 888 home page and
// if we try to validate the new vs. old, it fails.
/*
TpPdbResponse tpPdbResponse = null;
TpDataManager tpDataManager;
tpDataManager = (TpDataManager) lookupComponent( TpDataManager.ROLE );
try
{
tpDataManager.retrievePDB( getSession ( request ), "cookie_uid");
tpDataManager.retrievePDB( getSession ( request ), "sh_SID");
tpDataManager.retrievePDB( getSession ( request ), "sh_login_list");
}
catch (ManagedComponentException ex)
{
logError("AbstractTpAction: error in retirevePDB", ex);
}
finally
{
getComponentManager().release (tpDataManager);
}
*/
HttpDataManager httpDataManager = null;
TpDataManager tpDataManager = null;
httpDataManager = ( HttpDataManager ) lookupComponent(
HttpDataManager.ROLE );
httpDataManager.getPersistentValue(request, "SID");
logDebug( "Cookie Value -
>",httpDataManager.getPersistentValue(request, "SID"));
if ( httpDataManager.getPersistentValue(request, "SID") == null)
{
tpDataManager = ( TpDataManager ) lookupComponent( TpDataManager.ROLE
);
try
{
TpResponse tpResponse = tpDataManager.invalidateSession(
getSession(request) );
httpSession.invalidate();
createSession( request, response, sessionManager );
sessionToken = getSession( request );
request.setAttribute( "FIRST_REQUEST", "FIRST_REQUEST" );
return;
}catch ( ManagedComponentException ex )
{
logError( "AbstractTpAction: error in invalidation tpSession
", ex );
}
finally
{
getComponentManager().release( httpDataManager );
}
}
if ( ValidateUtil.validateNotNull( sessionToken.getSessionId() ) &&
sessionToken.getServiceTag().endsWith( "PHONE" ) )
{
try
{
String tpSessionId = httpDataManager.getPersistentValue( request,
"SID" );
if ( ValidateUtil.validateNotNull( tpSessionId ) )
{
sessionToken.getTpSession().setSessionId( tpSessionId );
}
}
finally
{
getComponentManager().release( httpDataManager );
}
}
/*
if ( ValidateUtil.validateNotNull( sessionToken.getSessionId() ) &&
sessionToken.getServiceTag().endsWith( "PHONE" ) )
{
HttpDataManager httpDataManager = null;
try
{
httpDataManager = ( HttpDataManager ) lookupComponent(
HttpDataManager.ROLE );
String tpSessionId = httpDataManager.getPersistentValue( request,
"SID" );
if ( ValidateUtil.validateNotNull( tpSessionId ) )
{
sessionToken.getTpSession().setSessionId( tpSessionId );
}
}
finally
{
getComponentManager().release( httpDataManager );
}
}
*/
SessionValidateRequest sessionValidateRequest =
new SessionValidateRequest( sessionToken, Boolean.FALSE );
String forceValidation = request.getParameter( "forceValidation" );
if ( isDebugEnabled() )
{
logDebug( "AbstractTpAction::validateSession( )--> FIRST_REQUEST=",
request.getAttribute( "FIRST_REQUEST" ) );
}
if ( ( ValidateUtil.validateStringNotEmpty( forceValidation ) &&
"Y".equals( forceValidation ) ) ||
!ValidateUtil.validateNotNull( request.getAttribute(
"FIRST_REQUEST" ) ) )
{
sessionValidateRequest.setForceValidation( Boolean.TRUE );
}
if ( !ValidateUtil.validateNotNull( request.getAttribute(
"FIRST_REQUEST" ) ) )
{
request.setAttribute( "FIRST_REQUEST", "FIRST_REQUEST" );
}
SessionResponse sessionResponse =
sessionManager.validateSession( sessionValidateRequest );
if ( ResponseUtil.isSuccess( sessionResponse ) )
{
sessionToken = sessionResponse.getSession();
AssertUtil.assertNotNull( sessionToken );
if ( isDebugEnabled() )
{
logDebug( "", sessionToken.toString() );
}
httpSession.setAttribute( WebApplicationConstants.SESSION_TOKEN,
sessionToken );
//Store Session for use with GlobalSession
GlobalSessionManager.setSid( sessionToken.getTpSession(
).getSessionId( ) );
GlobalSessionManager.setSession( sessionToken );
checkSessionUserInformation( sessionResponse, httpSession );
}
else if ( sessionResponse.getStatus( ) != null &&
TpResponseCode.TP_SID_EXPIRED.equals(
sessionResponse.getStatus( ).getCode( ) ) )
{
logDebug(
"AbstractTpAction::validateSession( )--> The last TP session
was expired ....Creating a new Java session" );
createSession( request, response, sessionManager );
}
else
{
logWarn( "AbstractTpAction::validateSession--> session response",
sessionResponse.getStatus() );
logWarn( "AbstractTpAction::validateSession--> " +
"removing SessionToken from httpSession!" );
httpSession.removeAttribute( WebApplicationConstants.SESSION_TOKEN );
//remove sid for use with GlobalSession
GlobalSessionManager.removeSession( sessionToken.getTpSession(
).getSessionId( ) );
throw new ActionSessionException( "Fatal Error. Session object
has expired. Response = " +
ObjectUtil.toString(
sessionResponse ) );
}
}
Cheers!!!!!
Kannan
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]