Great!

Thanks for reporting back.

Nils-H

On Wed, Apr 22, 2009 at 3:54 PM, Kofford, C Todd <tkoff...@ku.edu> wrote:
> Good news! I resolved this issue.
>
> Even though it was NOT a struts problem, I still wanted to post back to this 
> forum the issue and resolution.
>
> It was being caused by a uportal (2.5.x, 2.6.x) & pluto 1.0.1 bug.
>
> I found the following uportal patch UP-1816 "Objects attached to a 
> PortletSession randomly disappear". 
> http://www.ja-sig.org/issues/browse/UP-1816
>
> Since applying that patch, the issue has disappeared.
>
> Thanks for all the suggestions!
>
> Todd Kofford
> tkoff...@ku.edu
> University of Kansas - IT
>
>
> -----Original Message-----
> From: Nils-Helge Garli Hegvik [mailto:nil...@gmail.com]
> Sent: Thursday, April 16, 2009 6:02 AM
> To: Struts Users Mailing List
> Subject: Re: Struts 2 Portlet - Intermittent Session Problems
>
> Great. Please post back with your findings.
>
> Nils-H
>
> On Thu, Apr 16, 2009 at 4:29 AM, Kofford, C Todd <tkoff...@ku.edu> wrote:
>> 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
>>
>>
>
> ---------------------------------------------------------------------
> 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