Well, my log didn't seem to expose the problem when compared to a log from my 
local machine where the problem did not show itself, because except for the 
session = {} there was no difference.

However, I did run across this uportal-specific bug when researching the 
problem more.
http://www.ja-sig.org/issues/browse/UP-1816

It sounds like it is the exact same problem that I've been seeing. I'll test 
the patch tomorrow and post the results (crossing fingers).

I know that this is a struts forum, but I wanted to make sure that I didn't 
leave this issue hanging, just in case others using struts & uportal come 
across this issue.

Todd Kofford
tkoff...@ku.edu
University of Kansas - IT

-----Original Message-----
From: Kofford, C Todd [mailto:tkoff...@ku.edu]
Sent: Wed 4/15/2009 4:04 PM
To: Struts Users Mailing List
Subject: RE: Struts 2 Portlet - Intermittent Session Problems
 
OK, I've now got a log with a sequence of events that causes the problem (see 
below). However, I'm still not sure that I can determine where the request(s) 
went wrong except for where session = {}.

Any help would be appreciated. This one is driving me crazy.

--Todd

DEBUG [http-8090-Processor20] [localhost].[/Parking].[] Apr/15 14:58:17 - 
servletPath=/Permits, pathInfo=null, queryString=null, name=null
DEBUG [http-8090-Processor20] [localhost].[/Parking].[] Apr/15 14:58:17 -  Path 
Based Include
DEBUG [http-8090-Processor20] dispatcher.Jsr168Dispatcher.[] Apr/15 14:58:17 - 
Entering processAction
DEBUG [http-8090-Processor20] dispatcher.Jsr168Dispatcher.[] Apr/15 14:58:17 - 
serviceAction
DEBUG [http-8090-Processor20] dispatcher.Jsr168Dispatcher.[] Apr/15 14:58:17 - 
Creating action proxy for name = permitHomeIdBox, namespace = /permits
DEBUG [http-8090-Processor20] xwork2.DefaultActionProxy.[] Apr/15 14:58:17 - 
Creating an DefaultActionProxy for namespace /permits and action name 
permitHomeIdBox
DEBUG [http-8090-Processor20] interceptor.I18nInterceptor.[] Apr/15 14:58:17 - 
intercept '/permits/permitHomeIdBox' { 
DEBUG [http-8090-Processor20] interceptor.I18nInterceptor.[] Apr/15 14:58:17 - 
before Locale=en_US
DEBUG [http-8090-Processor20] interceptor.PrefixMethodInvocationUtil.[] Apr/15 
14:58:17 - cannot find method [prepareIdBox] in action 
[edu.ku.it.sdd.si.parking.permits.action.permitsh...@7f2a19]
DEBUG [http-8090-Processor20] interceptor.PrefixMethodInvocationUtil.[] Apr/15 
14:58:17 - cannot find method [prepareDoIdBox] in action 
[edu.ku.it.sdd.si.parking.permits.action.permitsh...@7f2a19]
DEBUG [http-8090-Processor20] impl.InstantiatingNullHandler.[] Apr/15 14:58:17 
- Entering nullPropertyValue 
[target=[edu.ku.it.sdd.si.parking.permits.action.permitsh...@7f2a19, 
com.opensymphony.xwork2.defaulttextprovi...@178991], property=id]
DEBUG [http-8090-Processor20] PermitBaseAction.[] Apr/15 14:58:17 - session = 
{isPortletApp=true, parkingID=100080, 
struts.portlet.valuestackfromeventphase=com.opensymphony.xwork2.ognl.ognlvaluest...@ba168e,
 faculty=edu.ku.it.sdd.si.parking.model.facultyrec...@1aac3f8}
DEBUG [http-8090-Processor20] PermitBaseAction.[] Apr/15 14:58:17 - Session 
(A48726E2C673AA84704CB021D1017827): retrieveFromSession() called, retriving 
key: student
DEBUG [http-8090-Processor20] PermitBaseAction.[] Apr/15 14:58:17 - Session 
(A48726E2C673AA84704CB021D1017827): retrieveFromSession() called, retriving 
key: faculty
DEBUG [http-8090-Processor20] PermitBaseAction.[] Apr/15 14:58:17 - Session 
(A48726E2C673AA84704CB021D1017827): retrieveFromSession() called, retriving 
key: permitOrder
DEBUG [http-8090-Processor20] PermitBaseAction.[] Apr/15 14:58:17 - Session 
(A48726E2C673AA84704CB021D1017827): retrieveFromSession() called, retriving 
key: isPortletApp
DEBUG [http-8090-Processor20] impl.InstantiatingNullHandler.[] Apr/15 14:58:17 
- Entering nullPropertyValue 
[target=[edu.ku.it.sdd.si.parking.permits.action.permitsh...@7f2a19, 
com.opensymphony.xwork2.defaulttextprovi...@178991], property=struts]
DEBUG [http-8090-Processor20] interceptor.FileUploadInterceptor.[] Apr/15 
14:58:17 - Bypassing /permits/permitHomeIdBox
DEBUG [http-8090-Processor20] interceptor.StaticParametersInterceptor.[] Apr/15 
14:58:17 - Setting static parameters {}
DEBUG [http-8090-Processor20] interceptor.ParametersInterceptor.[] Apr/15 
14:58:17 - Setting params NONE
DEBUG [http-8090-Processor20] interceptor.ParametersInterceptor.[] Apr/15 
14:58:17 - Setting params employeeid => [ 1359156 ] struts.portlet.action => [ 
/permits/permits/permitHomeIdBox ] struts.portlet.mode => [ view ] studentid => 
[  ] 
DEBUG [http-8090-Processor20] impl.XWorkConverter.[] Apr/15 14:58:17 - 
Property: employeeid
DEBUG [http-8090-Processor20] impl.XWorkConverter.[] Apr/15 14:58:17 - Class: 
edu.ku.it.sdd.si.parking.permits.action.PermitsHome
DEBUG [http-8090-Processor20] impl.XWorkConverter.[] Apr/15 14:58:17 - 
field-level type converter for property [employeeid] = none found
DEBUG [http-8090-Processor20] impl.XWorkConverter.[] Apr/15 14:58:17 - 
global-level type converter for property [employeeid] = none found
DEBUG [http-8090-Processor20] impl.XWorkConverter.[] Apr/15 14:58:17 - falling 
back to default type converter 
[com.opensymphony.xwork2.conversion.impl.xworkbasicconver...@2083d]
DEBUG [http-8090-Processor20] impl.XWorkConverter.[] Apr/15 14:58:17 - 
Property: studentid
DEBUG [http-8090-Processor20] impl.XWorkConverter.[] Apr/15 14:58:17 - Class: 
edu.ku.it.sdd.si.parking.permits.action.PermitsHome
DEBUG [http-8090-Processor20] impl.XWorkConverter.[] Apr/15 14:58:17 - 
field-level type converter for property [studentid] = none found
DEBUG [http-8090-Processor20] impl.XWorkConverter.[] Apr/15 14:58:17 - 
global-level type converter for property [studentid] = none found
DEBUG [http-8090-Processor20] impl.XWorkConverter.[] Apr/15 14:58:17 - falling 
back to default type converter 
[com.opensymphony.xwork2.conversion.impl.xworkbasicconver...@2083d]
DEBUG [http-8090-Processor20] validation.AnnotationValidationInterceptor.[] 
Apr/15 14:58:17 - Validating /permits/permitHomeIdBox with method idBox.
DEBUG [http-8090-Processor20] interceptor.DefaultWorkflowInterceptor.[] Apr/15 
14:58:17 - Invoking validate() on action 
edu.ku.it.sdd.si.parking.permits.action.permitsh...@7f2a19
DEBUG [http-8090-Processor20] xwork2.DefaultActionInvocation.[] Apr/15 14:58:17 
- Executing action method = idBox
DEBUG [http-8090-Processor20] PermitBaseAction.[] Apr/15 14:58:17 - Session 
(A48726E2C673AA84704CB021D1017827): resetSession() called
DEBUG [http-8090-Processor20] PermitBaseAction.[] Apr/15 14:58:17 - Session 
(A48726E2C673AA84704CB021D1017827): removeFromSession() called, removing key: 
faculty
DEBUG [http-8090-Processor20] PermitBaseAction.[] Apr/15 14:58:17 - Session 
(A48726E2C673AA84704CB021D1017827): saveToSession() called, saving key: faculty
DEBUG [http-8090-Processor20] result.PortletResult.[] Apr/15 14:58:17 - 
Executing result in Event phase
DEBUG [http-8090-Processor20] result.PortletResult.[] Apr/15 14:58:17 - Setting 
event render parameter: /permits/selectPermitInput.action
DEBUG [http-8090-Processor20] interceptor.I18nInterceptor.[] Apr/15 14:58:17 - 
after Locale=en_US
DEBUG [http-8090-Processor20] interceptor.I18nInterceptor.[] Apr/15 14:58:17 - 
intercept } 
DEBUG [http-8090-Processor20] dispatcher.Jsr168Dispatcher.[] Apr/15 14:58:17 - 
Leaving processAction
DEBUG [Thread-62] [localhost].[/Parking].[] Apr/15 14:58:18 - 
servletPath=/Permits, pathInfo=null, queryString=null, name=null
DEBUG [Thread-62] [localhost].[/Parking].[] Apr/15 14:58:18 -  Path Based 
Include
DEBUG [Thread-62] dispatcher.Jsr168Dispatcher.[] Apr/15 14:58:18 - Entering 
render
DEBUG [Thread-62] dispatcher.Jsr168Dispatcher.[] Apr/15 14:58:18 - serviceAction
DEBUG [Thread-62] dispatcher.Jsr168Dispatcher.[] Apr/15 14:58:18 - Creating 
action proxy for name = selectPermitInput, namespace = /permits
DEBUG [Thread-62] xwork2.DefaultActionProxy.[] Apr/15 14:58:18 - Creating an 
DefaultActionProxy for namespace /permits and action name selectPermitInput
DEBUG [Thread-62] interceptor.PortletStateInterceptor.[] Apr/15 14:58:18 - 
Won't restore stack from event phase since it's a proper PRG request
DEBUG [Thread-62] interceptor.I18nInterceptor.[] Apr/15 14:58:18 - intercept 
'/permits/selectPermitInput' { 
DEBUG [Thread-62] interceptor.I18nInterceptor.[] Apr/15 14:58:18 - before 
Locale=en_US
DEBUG [Thread-62] interceptor.PrefixMethodInvocationUtil.[] Apr/15 14:58:18 - 
cannot find method [prepareInput] in action 
[edu.ku.it.sdd.si.parking.permits.action.selectperm...@a4ffc6]
DEBUG [Thread-62] interceptor.PrefixMethodInvocationUtil.[] Apr/15 14:58:18 - 
cannot find method [prepareDoInput] in action 
[edu.ku.it.sdd.si.parking.permits.action.selectperm...@a4ffc6]
DEBUG [Thread-62] PermitBaseAction.[] Apr/15 14:58:18 - session = {}
DEBUG [Thread-62] PermitBaseAction.[] Apr/15 14:58:18 - Session 
(A48726E2C673AA84704CB021D1017827): retrieveFromSession() called, retriving 
key: student
DEBUG [Thread-62] PermitBaseAction.[] Apr/15 14:58:18 - Session 
(A48726E2C673AA84704CB021D1017827): retrieveFromSession() called, retriving 
key: faculty
DEBUG [Thread-62] PermitBaseAction.[] Apr/15 14:58:18 - Session 
(A48726E2C673AA84704CB021D1017827): retrieveFromSession() called, retriving 
key: permitOrder
DEBUG [Thread-62] PermitBaseAction.[] Apr/15 14:58:18 - Session 
(A48726E2C673AA84704CB021D1017827): retrieveFromSession() called, retriving 
key: isPortletApp
ERROR [Thread-62] PermitBaseAction.[] Apr/15 14:58:18 - PARKING PERMITS
ERROR [Thread-62] PermitBaseAction.[] Apr/15 14:58:18 - Parking id: 0
ERROR [Thread-62] PermitBaseAction.[] Apr/15 14:58:18 - Date/time: 2009-04-15 
14:58:18
ERROR [Thread-62] PermitBaseAction.[] Apr/15 14:58:18 - 
ERROR [Thread-62] PermitBaseAction.[] Apr/15 14:58:18 - 
java.lang.NullPointerException
        at 
edu.ku.it.sdd.si.parking.permits.service.PermitSelectionServiceImpl.getAllowedPermitsEmployee(PermitSelectionServiceImpl.java:73)
        at 
edu.ku.it.sdd.si.parking.permits.action.SelectPermits.prepare(SelectPermits.java:86)
        at 
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:134)
...



-----Original Message-----
From: Kofford, C Todd [mailto:tkoff...@ku.edu] 
Sent: Wednesday, April 15, 2009 8:57 AM
To: Struts Users Mailing List
Subject: RE: Struts 2 Portlet - Intermittent Session Problems

I've been trying to reproduce the problem, but can't do it consistently. I've 
never seen it when running on localhost only on our test server. I've also been 
cleaning up a lot of code, and I'm still not ruling out a logic (code) error.

No I'm not calling session.clear(), when I remove objects from session, I 
specifically remove the object that I put there in the first place, 
session.remove(key); Curious though, if I did call session.clear(), would a new 
session be created on the next request, or would the invalidated session 
persist?

I've put more thorough logging into the application in all areas that concern 
session and have also added a session listener (HttpSessionListener) to log 
when sessions are created and destroyed.

Todd Kofford
tkoff...@ku.edu
University of Kansas - IT


-----Original Message-----
From: Nils-Helge Garli Hegvik [mailto:nil...@gmail.com] 
Sent: Wednesday, April 15, 2009 8:46 AM
To: Struts Users Mailing List
Subject: Re: Struts 2 Portlet - Intermittent Session Problems

It would be helpful if you tried it in a different container and
report your findings, and/or create a JIRA issue with a small sameple
application that can be used to reproduce the error.

Are you by any chance calling "clear()" on the session map? That would
invalidate the session.

Nils-H

On Wed, Apr 15, 2009 at 3:40 PM, Kofford, C Todd <tkoff...@ku.edu> wrote:
> I'm using session scope (implements SessionAware).
>
> No, I haven't deployed to a different portlet container.
>
> Todd Kofford
> tkoff...@ku.edu
> University of Kansas - IT
>
>
> -----Original Message-----
> From: Nils-Helge Garli Hegvik [mailto:nil...@gmail.com]
> Sent: Wednesday, April 15, 2009 4:05 AM
> To: Struts Users Mailing List
> Subject: Re: Struts 2 Portlet - Intermittent Session Problems
>
> As long as you're using the portlet session, and not the
> APPLICATION_SCOPE session, the sessions shouldn't interfere. Which
> container are you running in? Have you tried deploying to a different
> portlet container?
>
> Nils-H
>
> On Tue, Apr 14, 2009 at 8:01 PM, Kofford, C Todd <tkoff...@ku.edu> wrote:
>> Hi Nils,
>>
>> Well this issue cannot be reproduced on a consistent basis. I can do the 
>> same operation 4 times and 3 of the 4 times it works properly, but one time 
>> it doesn't and the session disappears. It's very random.
>>
>> One thing that might be noteworthy is that I have 2 portlets defined for the 
>> same web application. To clarify, I have one parking web application that 
>> handles both citations and permit purchases. Citations and Permits are 
>> defined as two individual portlets in the our portal, and both point to the 
>> same parking webapp.
>>
>> I don't know if this is an issue or not. As random as this error is, I'm 
>> wondering if the some jars are getting loaded up twice by tomcat and 
>> randomly switching between two copies (of the same jar) as the requests are 
>> processed.
>>
>> Also to note is that this problem does not happen when the application(s) 
>> are run outside the portal (i.e. as standalone webapps).
>>
>> Todd Kofford
>> tkoff...@ku.edu
>> University of Kansas - IT
>>
>>
>> -----Original Message-----
>> From: Nils-Helge Garli Hegvik [mailto:nil...@gmail.com]
>> Sent: Friday, April 10, 2009 5:20 PM
>> To: Struts Users Mailing List
>> Subject: Re: Struts 2 Portlet - Intermittent Session Problems
>>
>> Hi!
>>
>> The PortletStateInterceptor does nothing special with the Session. It
>> certainly does not invalidate it or remove stuff that's already there.
>> The debug statement that you see is an indication that the portlet has
>> been executed in the event phase, and the result has been properly
>> configured with a redirectAction result. As a matter of fact, that log
>> statement indicates that the interceptor is bypassing it's normal
>> executing and does essentially nothing.
>>
>> Is this something you can reproduce consistently? In that case, do you
>> have a sample that you could attach to a JIRA issue? Without more
>> information, it's impossible to say what the problem could be (besides
>> a regular session timeout or something...)
>>
>> Nils-H
>>
>> On Fri, Apr 10, 2009 at 10:13 PM, Kofford, C Todd <tkoff...@ku.edu> wrote:
>>> I have a struts 2 (version 2.1.6) portlet that I keep seeing
>>> intermittent problems with the session being wiped out. Each time this
>>> happens I see the following messages in the log:
>>>
>>> DEBUG [Thread-57] interceptor.PortletStateInterceptor.[] Apr/10 14:26:57
>>> - Won't restore stack from event phase since it's a proper PRG request
>>> ...
>>> DEBUG [Thread-57] PermitBaseAction.[] Apr/10 14:26:57 - session = {}
>>>
>>> I'm not sure what is going on here. In the event phase just prior to
>>> this render phase, my session is populated but then the "...proper RPG
>>> request"  happens and my session is gone. I'm assuming that the portlet
>>> plugin gets into an invalid/mixed up state. But what would cause this?
>>>
>>> Any help would be appreciated.
>>>
>>> Todd Kofford
>>> tkoff...@ku.edu
>>> University of Kansas - IT
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>>> For additional commands, e-mail: user-h...@struts.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>> For additional commands, e-mail: user-h...@struts.apache.org
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>> For additional commands, e-mail: user-h...@struts.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to