Hi,

I've just started using SpiFly with Jetty in order to support the
Servlet Spec requirement to find ServletContainerInitializer impls via
the ServiceLoader mechanism.

I've configured the manifest of the jetty-annotations bundle that
calls the ServiceLoader as suggested in the SpiFly doco:

 <Require-Capability>osgi.
serviceloader;
filter:="(osgi.serviceloader=javax.servlet.ServletContainerInitializer)";cardinality:=multiple,
osgi.extender; 
filter:="(osgi.extender=osgi.serviceloader.processor)"</Require-Capability>

Everything works as expected if there is indeed another bundle that
has the correct <Provide-Capability> header to advertise the presence
of a ServletContainerInitializer.

However, if there are no such bundles, the jetty-annotations bundle
does not deploy fully, complaining that there is a missing
requirement:

Missing required capability Require-Capability: osgi.serviceloader;
filter = "(osgi.serviceloader =
javax.servlet.ServletContainerInitializer)".

It is NOT a requirement of Jetty nor the Servlet Spec that there are
any ServletContainerInitializers - the jetty-annotations module when
running outside of osgi runs happily if the ServiceLoader reports no
instances.

My question is:  is there a way to achieve the same behaviour
(optionality of any ServletContainerIntializers) in osgi?  I was
hoping that the "cardinality:=multiple" attribute would have the
effect I want, but apparently not.

thanks for any advice,
Jan


Jan Bartel <[email protected]>
www.webtide.com
'Expert Jetty/CometD developer,production,operations advice'

Reply via email to