Re: Invalidating all portlet sessions

Anders Olsson <[email protected]> Tue, 15 Jul 2008 16:15:01 +0200
Newsgroups gmane.comp.jakarta.pluto.user
Message-ID <[email protected]>
Thanks!

I ended up using a filter that stores the portal session (if there is 
one) as a request attribute, I couldn't quite get the wrapper thing to 
work, I haven't investigated it further.

Now everything works perfectly though!

/ Anders

Eric Dalquist skrev:
> Sorry, I hit send too soon.
>
> In our portal we add a request wrapper to the request before 
> proceeding with any processing. This wrapper provides access to the 
> original request via a specified request attribute. The code that goes 
> along with the PortalRequestUtilsImpl is here:
>
> https://www.ja-sig.org/svn/uPortal/trunk/uportal-impl/src/main/java/org/jasig/portal/url/PortalHttpServletRequest.java 
>
>
> That adds more functionality than you need to worry about for this 
> usage but you can see how the original portal request is accessed. If 
> you did something like that in a filter in front of Pluto you should 
> be fine.
>
> -Eric
>
> Eric Dalquist wrote:
>> Here is our request utils class. Since you're doing this from withing 
>> Pluto I believe these are all safe operations:
>>
>> https://www.ja-sig.org/svn/uPortal/trunk/uportal-impl/src/main/java/org/jasig/portal/url/PortalRequestUtilsImpl.java 
>>
>>
>> -Eric
>>
>> Anders Olsson wrote:
>>> Thanks, this is exactly what I'm looking for! There is one thing 
>>> left for me to solve though: I can't figure out how I can retrieve 
>>> the portal session from the onEnd()-method of my 
>>> PortletInvocationListener. In uPortal the portal request can be 
>>> retrieved using IPortalRequestUtils.getOriginalPortalRequest() but I 
>>> can't find a way to do that within the pluto portal.
>>>
>>> I tried using the PortalRequestContext that is stored as the request 
>>> attribute PortalRequestContext.REQUEST_KEY but that gives me the 
>>> request after it has already been dispatched to the pluto 
>>> PortletServlet.
>>>
>>> / Anders
>>>
>>>
>>> Eric Dalquist skrev:
>>>> We do this in uPortal by using a PortletInvocationListener to track 
>>>> all of the sessions that have been created for portlets and then a 
>>>> HttpSessionListener which generates Spring ApplicationContext 
>>>> events for session created/destroyed events.
>>>>
>>>> Our custom listener: 
>>>> https://www.ja-sig.org/svn/uPortal/trunk/uportal-impl/src/main/java/org/jasig/portal/portlet/session/PortletSessionExpirationManager.java 
>>>>
>>>> Our session listener: 
>>>> https://www.ja-sig.org/svn/uPortal/trunk/uportal-impl/src/main/java/org/jasig/portal/spring/web/context/support/ApplicationContextDelagatingSessionListener.java 
>>>>
>>>>
>>>> -Eric
>>>>
>>>> Anders Olsson wrote:
>>>>> Hi!
>>>>>
>>>>> I have created a simple custom portal based on pluto-portal. From 
>>>>> a servlet in my custom portal I want to invalidate all related 
>>>>> sessions in my deployed portlet applications, is there an easy way 
>>>>> to do this, using the portal-driver?
>>>>>
>>>>> I suppose one possibility would be to iterate through all 
>>>>> configured portlets and trigger an ActionRequest and in each of 
>>>>> the portlets make sure that they respond to that request by 
>>>>> invalidating the session. But I would just want to know if there's 
>>>>> a better/easier way?
>>>>>
>>>>> All portlets are separate web applications.
>>>>>
>>>>> Regards
>>>>> Anders
>>>>>
>>>>>
>>>