简体   繁体   中英

What else can be used in Java as the ServiceLoader alternative?

I'm looking for something like the ServiceLoader, but which does not depend on SPI file, where all the service implementations should be enumerated and then added to the path of some class loader, in order to be found.

Let's say there is an application, that has the interface and some implementations of a service. What framework can be used, that allows you to add a new JAR to the application, which contains some new implementations and they can be automatically added to the class path of all the class loaders inside that application? All the class loaders is very important here, because if this is a NetBeans module application, the NetBeans platform does weird magic and you never know which class loader is used by which thread, with which class path etc... It would be also great, if the application does not need to be restarted to find the new JAR, but that's not an important requirement.

I already heard about OSGi, but this seems too big and I only need 1% of its features.

Thanks for any suggestions!

Simplest solution is to use JSPF .

More "enterprise" one could be to use OSGi ... but in that case, you'll have to take a look at iPOJO , as an example. Sorry, I finally re-read your message. I think that, contrary to what you say, OSGi is exactly scopped for your need, as it precisely allows service loading and dynamic wiring.

And IoC containers may provide, with some extensions, that kind of feature (I think it's at least possible using a Guice extension).

似乎您正在寻找Netbeans Lookup API - Link

A newer alternative (this is an old question) might be sezpoz .

Its very similar to the JDK ServiceLoader in that it uses a META-INF resource lookup except that the resources are automatically created by an annotation processor. Thus its very annotation heavy and generally more type safe at the cost of post processing. Its used by Hudson/Jenkins.

I believe Kohsuke was the first to come up with this annotation processing idea: http://metainf-services.kohsuke.org/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM