BOF is a deployment mechanism we use for a number of different component types, like TBOs, SBOs, modules, aspects. This is how it works from a 20,000 ft view.
BOF modules are packaged using Composer into DARs (or docapps in the old days). They are deployed to a docbase. In general, with the exception of SBOs, they have docbase affinity (you might get a different implementation from a different docbase). SBOs are deployed to a global registry docbase and so have a single implementation.
Once deployed to the docbase, any DFC instance that communicates to that docbase will be sensitive to any changes made to the BOF module. If it detects a change (via an optimized polling strategy) it will download the new/updated module definition to its file system cache. You can find these caches in $DOCUMENTUM/cache/<release>/bof/<docbase>. In these directories you will find downloaded jars and other downloadable resources (the jar names are the object ids). You will also find a content.xml file which is a manifest. These caches can be deleted at will and will be automatically reconstructed as necessary by a running DFC instance. Zipping up this cache can be very useful collateral in debugging a BOF problem.
The BOF runtime (within DFC) runs entirely from the file system. Class loaders are constructed which point to the jar files on the file system, so there is no performance penalty in deploying to the docbase (except for the initial reference).
BOF supports hot deployment. If a DFC instance recognizes an updated BOF module it will download it and build a new class loader for that module which points to the updated jars. The next request for that module will use the new implementation. Any preexisting objects remain using the old implementation and will be aged out as they are garbage collected. This is great for updating an implementation, but you must never update a public interface or you will cause havoc (you would need to reload the web app and ensure application compatibility first).
The class loader and packaging implications of BOF will be addressed in a subsequent post.
2 responses so far ↓
Lucy // June 25, 2009 at 5:40 am
Hi, I’m trying to deploy a SBO module. Is it enough deploying it from Composer or do I have to modify dbor.properties file?
donr7n // June 25, 2009 at 7:30 am
Lucy. It is sufficient to deploy from Composer. dbor.properties is a backward compatibility file for BOF 1 usage which we no longer recommend.