You're right! When using OSGi, all the needed dependencies must now be present within the OSGi container as components. You can convert classic jar files into bundles (i.e. adding OSGi manifest headers) with tools like Bnd or Bundlor but this task can be tricky. That's why SpringSource provides a repository (http://www.springsource.com/repository
) containing a huge set of bundles for enterprise application development with OSGi. When getting all you need, you have to provision your OSGi container with these components. After this first stage done, you can begin to develop your component... with Spring DM or not ;-)
Regarding Tomcat, the approach is similar. As a matter of fact, corresponding components must be added within the container. SpringSource provides such components which simply wrap the standard tool and start/stop it programmatically. Same features of Tomcat are usable! In addition, Spring DM provides a mechanism to manage components containing Web application based on component lifecycle. When a Web component is started, Spring DM deploys it within the Web container (Tomcat or Jetty) and undeploys it when stopped. You can notice that the standization of this mechanim is in progress through the RFC 66 (OSGi Web container).
Whereas it's possible to embed an OSGi container within a Web app, it's recommanded to embed the Web container within an OSGi container...
PS: See also the following thread in this forum - https://coderanch.com/t/482120/Spring/Application-Frameworks/Spring-DM-Web-Applications