PicoContainer Web composition is abstracted via the WebappComposer interface, which defines how components are registered at the different webapp scopes - application, session and request. Typically, request-scoped components are 'actions'.
public class ExampleWebappComposer implements WebappComposer {
public void composeApplication(MutablePicoContainer appContainer) {
appContainer.addComponent(CheeseDao.class, InMemoryCheeseDao.class);
}
public void composeSession(MutablePicoContainer sessionContainer) {
sessionContainer.addComponent(CheeseService.class, DefaultCheeseService.class);
}
public void composeRequest(MutablePicoContainer requestContainer) {
// for Struts1 & 2 and Webwork 1 & 2 the request level components are added lazily
// as they have their own XML for defining action mappings.
}
}