clan gets portalised
Fri, Mar 24, 2006
I’ve been playing around with Jetspeed to see if I can turn Bodington into a portal thingy. Well, turns out it’s possible and Bodington is now running as a portlet application under jetspeed.
It has a MyModules portlet associated with it. Although it’s called MyModules, the modules won’t work just now so it just displays the groups for a user - in a portlet. More about that in a mo.
You can display this portlet in uPortal via WSRP presumably. In effect, each portlet associated with bod will expose a chunk of bod functionality in whatever portal container supports WSRP.
It’s the same concept as the Guanxi IdP. Bod is wrapped in portlets as well now. Where bod was IdPed without touching a line of code, it’s now portalised without touching a line of code.
Now, for the interesting news. MyModules doesn’t work in a portlet as it has the concept of current user. Portlets don’t have that - they’re “remote” from the application although they can access the bod context.
It could be fixed by changing Minerva to accept a user id instead of finding it from the context. Then the portlet could call Minerva directly and get the modules for a specific user. i.e, LDAP uPortal and use the novell ID of the user to get their modules direct from the CLAN portlet.
Most of the stuff in bod uses the context to get the current user so bod really isn’t ready for portalisation but it can be done. It actually works!
There’s another gotcha. Most of the stuff in bod writes directly to the HttpServletResponse but portlets use RenderResponse so it’s not just a case of sharing responses. There has to be some sort of munging.
No doubt there’s a way round the issues but it should be possible to take each tool in turn and change how it initialises. Abstract it away from the bod context and User objects and all that and make it almost standalone, like a plugin. That allows portlets to access it and it in effect becomes a gateway for portlets into the bodington system.
Questionnaire tool springs to mind. Abstract it out a bit, give it a portlet and import into uPortal and consume via WSRP.
So, on that news, I’m off to read up on portals, portlets and other such exotica :)
Well, I’ve read some more and here’s the result:
I had to make one change to the Bodington source though. org.bodington.server.realm.LDAPAuthenticator. Normally, it relies on BuildingServlet.getBodingtonRoot() to find it’s ldap-authenticator.xml but when running as a portlet application, it doesn’t work and the LDAP module can’t config itself. The solution was to change it to load it’s config file from the CLASSPATH and put ldap-authenticator.xml in WEB-INF/classes.
So, what can I do next?
Well, I added a profile portlet as well as portlet to display currently logged in users.