2010-08-06 59 views
5

我正在Eclipse中编写Web应用程序。将ServiceLoader配置文件放在Web应用程序中的位置

我想使用ServiceLoader类来加载一些插件。

ServiceLoader的文档说我需要在META-INF/services中放置一个文件。

我已经将文件放在WebContent/META-INF/service文件夹中,但是当我通过Eclipse运行JUnit测试时,它找不到任何插件。

这是文件的正确位置吗?

另外,如何从ServiceLoader中获取更多的调试信息,如正在搜索文件的文件夹?

回答

7

的META-INF /服务应该是在用于定位插件的类加载器的类路径的jar文件或资源目录的根目录。

如果你有一个Web应用程序,那么你可以有这样的目录结构:

<webappname>/WEB-INF/classes/META-INF/services 

但理想的方法是有它在你的插件的jar文件。例如,如果你有一个插件捆绑为WEB-INF/lib/myplugin.jar,和你的插件类是com.example.plugin.MyPlugin然后罐子应该有一个结构:

myplugin.jar!/META-INF/services/com.example.plugin.MyPlugin 

已经做到这一点,你可以用你的web应用程序的类加载器获取的服务加载

+0

好的,我现在已经开始工作了! 永远不会猜到它会出现在WEB-INF文件夹中! 我会用你的想法为我稍后创建一个JAR文件,当我得到一个Ant脚本。 – ljbade 2010-08-09 05:58:26

+0

@Leith酷,但更快地做出改变(关于jar文件):) – naikus 2010-08-09 06:55:30

相关问题