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