Invoking the Assembler from within a page, using a servlet bean, allows the call to the Assembler to occur on a just-in-time basis for the portion of the page that requires Assembler-served content. This approach is desirable when only a small portion of the page requires Assembler content. This guide refers to these pages as “Nucleus-driven pages.”
The request-handling architecture for an Nucleus-driven JSP page looks like this:

In this diagram, the following happens:
The JSP page code calls the
InvokeAssemblerservlet bean and passes it either theincludePathparameter, for a page request, or thecontentCollectionparameter, for a content folder request.The
InvokeAssemblerservlet bean parses theincludePathorcontentCollectionparameter into a request object, in the form of aRedirectAwareContentIncludeobject (for a page) or aContentSlotConfigobject (for a content folder). Then, theInvokeAssemblerservlet bean calls theinvokeAssembler()method on the/atg/endeca/assembler/AssemblerToolscomponent and passes it the request object it created.The
AssemblerToolscomponent invokes thecreateAssembler()method on the/atg/endeca/assembler/NucleusAssemblerFactorycomponent.The
NucleusAssemblerFactorycomponent returns anatg.endeca.assembler.NucleusAssemblerinstance.The
AssemblerToolscomponent invokes theassemble()method on theNucleusAssemblerinstance and passes it the request object. The handler for the request object (which may be theRedirectAwareContentIncludeHandlerorContentSlotConfigHandler, depending on the type of request object passed in) resolves a connection to the Workbench and/or the MDEX. For page requests, the handler also invokes a series of other components that transform the request URL into a URI that contains the path to the page in Experience Manager.The
NucleusAssemblerinstance assembles the correct content for the request URI. Content, in this case, corresponds to a hierarchical set of cartridges and their associated data. For each cartridge, the content starts with any default data that was specified in the Experience Manager cartridge configuration files when the cartridge was added to the page. That data is further modified and augmented with any data stored in the Oracle Commerce Configuration Repository (that is, changes made and saved via the Experience Manager UI).Next, the
NucleusAssemblerinstance calls theNucleusAssembler.getCartridgehandler()method, passing in the cartridge’sContentItemtype, to retrieve the correct handler for the cartridge. The handler gets resolved and executed and the results are stored in the cartridge’s associatedContentItem. This process happens recursively so that the assembled content takes the form of a responseContentItemthat consists of a rootContentItemwhich may have sub-ContentItemobjects as attributes.Note: If a cartridge handler does not exist for a
ContentItem, the initial version of the item, created in step 6, is returned.The
NucleusAssemblerinstance returns the rootContentItemto theAssemblerToolscomponent.The
AssemblerToolscomponent returns the rootContentItemto theInvokeAssemblerservlet bean.When the
ContentItemis not empty, theInvokeAssemblerservlet bean’soutputoparam is rendered. In this example, we assume that theoutputoparam uses adsp:renderContentItemtag to call the/atg/endeca/assembler/cartridge/renderer/ContentItemToRendererPathcomponent to get the path to the JSP renderer for the rootContentItem. However, choosing when and how many times to invokedsp:renderContentItemdepends on what the application needs to do. It may make sense to invokedsp:renderContentItemfor the rootContentItem, and then recursively invokedsp:renderContentItemfor all the sub-ContentItemsvia additionaldsp:renderContentItemtags. Alternatively, you could take a more targeted approach where you invokedsp:renderContentItemfor individual sub-ContentItemsas needed.Note that the
dsp:renderContentItemtag also sets thecontentItemattribute on theHttpServletRequest, thereby making theContentItemavailable to the renderers. This value lasts for the duration of theincludeonly.The
ContentItemToRendererPathcomponent returns the correct renderer for theContentItem.The JSP returned by
ContentItemToRendererPathis included in the response.The response is returned to the browser.

