需求:
用過hive的都知道,可以自定義hive的一個udf jar,然後將這個jar add到hive服務端,就會加載這個jar實現用戶自定義邏輯。現在的需求就是實現這麼一個服務端所做的事情!
場景:
用戶自定義一些邏輯,主要是實現一個公共的接口,每個用戶自定義自己的實現。然後服務端加載這些jar包以實現服務端的定製化.
結構圖如下
pf4j開源工具說明
搜索了一大把,發現 pf4j 這個開源工具可以滿足需求,所以就決定用它了https://github.com/decebals/pf4j。但是這個工具使用起來有點繞,所以這裏記錄下,主要是參考這個工程的run-domo.sh
-
pf4j-demo-api
這裏定義了公用接口
-
pf4j-demo-plugins
這裏可以對接口自定義實現。這裏重點說明:如果定義了多個plugins,需要各個打包以後,將生成的jar包或者zip包放到一個 公共目錄 "/a/b",這個目錄會在下面的
主函數中使用這個公共目錄
PluginManager pluginManager = new DefaultPluginManager(new File("/a/b").toPath());
-
pf4j-demo-app
這裏就是主函數了