最近在研究dubbo的權限驗證功能,這裏要用到dubbo的filter,於是在網上查詢有關資料,但各種版本的都有,遇到很多坑,
比如通過註解@Activate的方式來實現激活條件和時機(下面這段表示如果方法是服務提供者,就會先激活filter,等執行完filter以後才執行後面被調用的服務方法)
@Activate(group = "provider")
public class TestDubboFilter implements Filter {
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
System.out.println("TestDubboFilter1111111");
Result result = null;
result = invoker.invoke(invocation);
return result;
}
}
或者通過配置xml的方式
<dubbo:provider filter="testDubboFilter"></dubbo:provider>
其實這2中方式只要配一種就行了,不需要2種都配,有些文章不知道哪裏抄來的,竟然同時用了註解和xml配置的方式,把我帶進了坑裏。
最後,我總結一下dubbo用filter的幾個關鍵步驟
1.寫一個實現類繼承Filter接口
2.在這個類上面寫上註解@Activate(參數可以根據業務來自己定義)
3.在src/main/resources/METE-INF/dubbo/目錄下添加一個文件,文件名是com.alibaba.dubbo.rpc.Filter,這個是固定寫法,dubbo框架會到這個目錄裏查找這個文件的,這個文件裏把剛纔那個實現類的包名加類名寫進去,比如
testDubboFilter=com.test.filter.TestDubboFilter
4.在啓動類裏面別忘記掃描這個類的目錄@EnableDubbo(scanBasePackages = "com.test.filter")