Good point - In Sakai we will have two kinds of portlets.

(a) Completely portable portlets that have no Sakai dependencies

(b) Portlets that only run in Sakai or when the Sakai APIs are present.

Even in case (a) I need access to the Sakai APIs when portlets are running in Sakai because implementations of things like Preferences, Userinfo (Portlet Run-time) which feed these interfaces accessing Sakai APIs. While I could provision the thread in each of these places, it would be much simpler and more reliable to simply provision the thread once and then simply use the APIs - either in the Portlet directly (non-portable) or in the Portlet-Run-Time Environment.

So my use case about WAR portability was misguided - I still think this is useful in general as it gives yet another access point through optional services making the container more flexible.

/Chuck

On Mar 4, 2007, at 2:06 PM, Elliot Metsger wrote:

> In Sakai's case the use case is that we need to put a few items
> (context) into thread local on every request so that the entire suite
> of Sakai APIs works in portlets.

When you say "entire suite of Sakai APIs work in portlets" do you mean that the portlet will be able to invoke a Sakai API directly in the body of a doView() or processAction()?

If that is the case then you have already lost compatibility right? In that I can't take the same war file and deploy it in Jetspeed or uPortal.


Elliot

Reply via email to