MyFaces uses context class loader to lookup META-INF resources. This works fine in a regular Java environment but breaks in OSGi. One easy solution for this would be to first ask the CCL for the resource and if none is found ask the surrounding class class loader for that resource (assuming the resource we are looking for lives in the same jar as the class loading it), i.e.:
URL foo = getContextClassLoader().getResource("META-INF/foo");
if (foo == null)
There are a few places in MyFaces code that would need to be updated to use this fallback approach. For example in IncludeHandler.java and ErrorPageWriter.java.
I also noticed that for some reason the myfaces-dev-debug.xml and myfaces-dev-error.xml live in the api module. They seem to be only used the impl module so they shouldn't really be needed in the api module.