...
Running portlet servant from another portlet
The typical client-servant interaction from the client's point of view is shown below. Every time when the portlet's processAction() or render()" is called the client has to get the reference to the IPortletServantLocator instance and then call _locate() to return the instance of the IPortletServant:
Code Block | ||||
---|---|---|---|---|
| ||||
public class TestServantPortlet extends GenericPortlet {
/**
* The internal method that returns the IPortletServant instance.
*/
private IPortletServant getPortletServant(String servantFname, PortletRequest request) {
IPortletServantLocator servantLocator = ServantLocatorAccessor.getPortletServantLocator(getPortletContext());
IPortletServant servant = servantLocator.locate(servantFname,request);
return servant;
}
/**
* The implemenation of GenericPortlet's processAction() with delegating the request processing to the servant.
*/
public void processAction(ActionRequest req, ActionResponse res) throws PortletException, IOException {
// Get the servant functional name
String servantFname = ...
if ( servantFname != null ) {
IPortletServant servant = getPortletServant(servantFname,req);
servant.processAction(req,res);
if ( servant.isComplete(req) ) {
// Get result when the servant is done
Object result = servant.getServantData(req);
...
}
}
}
...
}
|
Portlet servant API
Servant interfaces
...