Depending on how much control you have over the bundles providing the types you could also look at providing your own extender capabiltiy/requirement model which would further restrict your search space, and potentially allow further optimisations. You should take a look at the OSGi CDI specification from the enterprise R7 release (currently in draft) which does something very much like this.
Tim > On 23 Jan 2019, at 16:48, Tim Ward <tim.w...@paremus.com> wrote: > > Hi, > > You can optimise this pretty heavily by using the bundle wirings to look for > bundles which are wired to the same API packages as you (the one(s) that > contain the relevant interface/supertype/annotation). This way you can avoid > scanning bundles which can’t possibly contain relevant types. > > Best Regards, > > Tim > >> On 23 Jan 2019, at 16:10, Thomas Driessen via osgi-dev >> <osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>> wrote: >> >> Hi, >> >> for a project of mine I need to mimic the behavior of a >> ServletContainerInitializer [1], but with the dynamism of OSGi in mind. >> >> Therefore, I need to be able to find all classes that implement/extend a >> specific class or are annotated with a specific annotation at runtime. >> >> Is there a better way to do so that I'm not aware of than to scan each class >> of every bundle? Are there maybe framework hooks that would help me >> accomplish this? >> >> I'm thankful for every hint you can provide. >> >> Kind regards, >> Thomas >> >> [1] >> https://docs.oracle.com/javaee/6/api/javax/servlet/ServletContainerInitializer.html >> >> <https://docs.oracle.com/javaee/6/api/javax/servlet/ServletContainerInitializer.html>_______________________________________________ >> OSGi Developer Mail List >> osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org> >> https://mail.osgi.org/mailman/listinfo/osgi-dev >> <https://mail.osgi.org/mailman/listinfo/osgi-dev>
_______________________________________________ OSGi Developer Mail List osgi-dev@mail.osgi.org https://mail.osgi.org/mailman/listinfo/osgi-dev