I think I found a way to replicate the issue: I autodeploy my war file (e.g.
copy updated war to webapps and let resin reload it). After a few deployments
this issue will occur so maybe there is some corruption caused by autodeploy?
matt
On Aug 16, 2010, at 9:57 AM, Matthew Serrano wrote:
> I am not intentionally making the call from another thread but would this be
> the case if the server had restarted? Maybe there is some combination of the
> session expiring and the server restarting that causes some issue? The code
> is:
> HttpSession mySession = req.getSession(false);
> if (mySession != null) {
> UserBean userBean = (UserBean)
> mySession.getAttribute(com.ordinate.common.auth.UserBean.SESSION_KEY);
> if (userBean != null) {
> logger.debug("User is already logged in. Redirecting to welcome page.");
> redirect(req, res, successUrl);
> } else {
> redirect(req, res, errorUrl);
> }
> }
>
> The exception occurs on the cast of the user object (line 3) so I tried
> removing the cast which allows the code to process past this point. However,
> the application then threw the same error later in a JSP when I try to get
> the user object from the session using JSTL.
>
> I have tried to replicate the issue by waiting for sessions to expire,
> restarting the server, deploying new apps (in multiple combinations)...so far
> I can't replicate it but it has now occurred on three separate servers (2
> Debian 64bit and 1 Mac OS X desktop). The only thing I am considering now is
> that a step before the above servlet executes, the session is invalidated and
> then immediately recreated using req.getSession(true). Is it possible this is
> randomly causing some issue?
>
> Btw, this same code has been running for years on Resin Pro 3.0.25.
>
> matt
>
> On Aug 16, 2010, at 8:49 AM, Scott Ferguson wrote:
>
>> Matthew Serrano wrote:
>>> I am running resin 4.0.7 and I store a user object in the session using
>>> "User_Bean" as a key. Everything works fine most of the time but it seems
>>> when my session expires and I have not logged out, every subsequent call to
>>> get this object returns some HashMap instead of my object or null. Since I
>>> am casting the object when I retrieve it from the session the message I get
>>> is:
>>>
>>> java.lang.ClassCastException: java.util.HashMap cannot be cast to
>>> com.ordinate.ppass.beans.UserBean
>>>
>>> Is there some reason why getting an object from the session would return a
>>> Map instead of the object? Is "User_Bean" some reserved word or something?
>>> The only way I have been able to get my application working again is to
>>> shutdown the server, delete everything in the resin-data folder and restart
>>> (deleting the exploded war, deploying the app again, restarting all do not
>>> work).
>>>
>> Is the session get/put in the normal request context? As opposed to
>> being read from some other thread or a different context class loader?
>>
>> That behavior sounds like it might be caused by a getAttribute call from
>> outside the web-app's context. In other words, if Resin can't find the
>> UserBean class when its deserializing. Is that at all possible in your
>> application?
>>
>> -- Scott
>>> Also, this seems to happen on resin 4.0.9 as well.
>>>
>>> thanks
>>> matt
>>>
>>> _______________________________________________
>>> resin-interest mailing list
>>> [email protected]
>>> http://maillist.caucho.com/mailman/listinfo/resin-interest
>>>
>>>
>>
>>
>>
>> _______________________________________________
>> resin-interest mailing list
>> [email protected]
>> http://maillist.caucho.com/mailman/listinfo/resin-interest
>
> _______________________________________________
> resin-interest mailing list
> [email protected]
> http://maillist.caucho.com/mailman/listinfo/resin-interest
_______________________________________________
resin-interest mailing list
[email protected]
http://maillist.caucho.com/mailman/listinfo/resin-interest