dubbofilter的spi文件路徑問題

自定義dubbofilter

在使用dubbo框架的時候可以使用filter去實現一些攔截功能和調整攔截順序,在每次調用的過程中,Filter的攔截都會被執行。當然除了Dubbo默認的filter,用戶也可以自定義dubbo filter來實現對應的功能。這裏記錄一個遇到的spi文件路徑問題。

問題現象

在測試自定義一個dubbo filter之後,發現並沒有生效。

對應的filter代碼:

@Activate(group = Constants.PROVIDER, order = Integer.MIN_VALUE)
public class HelloFilter implements Filter {

    /**
     * @param invoker
     * @param invocation
     * @return
     * @throws RpcException
     */
    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
        System.out.println("filter調用了");
        return invoker.invoke(invocation);
    }
}

對應的spi文件內容:

dubboLoggerFilter=com.xxx.demo.xxx.filter.HelloFilter

經過排查之後發現代碼寫的沒啥問題,但dubbo並沒有加載這個自定義filter的spi。隱約感覺是路徑問題。

問題解決

因爲是對應一個已生效的filter去設置的,所以當時看到已有項目中的文件是這樣的:

image-20200520204641035

所以在建立spi文件的文件目錄時直接new了一個目錄名字叫做META-INF.dubbo。但其實看官方blog中的介紹是要在maven資源文件下建立如下的結果的spi文件:

image-20200520204834979

這裏恍然大悟才發現自己的目錄路徑建立錯誤了。

這裏其實是idea展示的一個坑,比如我在現在改對的基礎上去建立META-INF.dubbo目錄,其實是和正確目錄展示是一樣的:

image-20200520205113150

但是在你提交git文件的時候,其實是能明顯看到對應的差別的:

image-20200520205152514

這裏記錄下踩到的這個坑。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章