Bennett, Timothy (JIS - Applications) wrote:
If you wanted a WAR distro in OSGi, then you'd probaby need a custom Jetty
service implementation to expose Jetty API's for loading WAR distros, but that
method defeated the goal of the exercise that Niclas undertook, and that was to
strictly use the OSGi HttpService interface.
I think it is best to use the HttpService interface, as two very
different classloaders don't mix too well. Using an all out OSGi
classloading strategy makes sure everything runs smoothly, or using only
the classloader of the application server.
My experience with web container based classloading combined with OSGi
classloading is that it is workable, but not perfect:
- application server restarts will not restore saved sessions with
serialized classes coming from OSGi bundles (will give class not found
exceptions)
- serialization of classes coming from OSGi bundles across a cluster
will give similar problems. This will hinder scalability. I haven't
tried this, but I expect it to be a problem.
The best part though is that it is possible to switch bundles at
runtime, without bringing the application and the server down. I also
like the fact that the contents of a bundle are really seperate from
other bundles.
When you use an all out OSGi solution, you won't have the serialization
problems, or at least the OSGi container should solve that problem for
you. It helps to have only one captain on the bridge ;-)
Martijn
I'll mod the wiki to clear up this confusion.
-tbennett