dm Server follows standard OSGi class loading semantics (except for the way Thread Context Class Loaders are set up - see the Virgo wiki).
Please see the modularity chapter of the OSGi 4.2 core spec from http://www.osgi.org.
Essentially there is one class loader per bundle. Certain packages, including java.*, are "boot" delegated to the application class loader. Imported packages are delegated to their exporting bundle. For require-bundle, things are more complicated and there's a search across "required" bundles and the bundle doing the load. Otherwise, the local bundle class path is used, which may incorporate the contents of any fragments attached to the bundle doing the load.
All this is explained in quite a bit of detail in the OSGi core spec.
Glyn Normington
SpringSource