Getting web frameworks like Wicket running fully functional in a Portlet 1.0 container is very difficult to realize without some way for direct access to the portlet.
Features like Ajax (which might need generate new Portlet URLs) or even dynamic resource generation (like a JCapta image) really need to be served through the portlet itself.
The soon available Portlet API 2.0 will change all this and make life much easier for web framework developers.
One feature the Portlet API 2.0 is likely to add is a new ResourceURL, which will support invoking a portlet directly ...
But, as Portlet API 2.0 isn't available yet, and I need direct portlet access now, the only option available is using portal specific extensions.
For Jetspeed-2, I know how to do this, and AFAIK other (open-source) portals provide similar extensions.
As I don't want to bind for instance Wicket portlet support hard coded to the Jetspeed-2 portal, I'm going to define a new interface, PortletResourceURLFactory, which portals can implement to allow direct portlet access in a more generic way, just as what we did with the ServletContextProvider interface.
Note: this interface will be defined obsolete as soon as Portlet API 2.0 is available and this functionality then is provided natively.