2010-08-06 58 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

相關問題