使用dubbo过滤器实现值得传递
首先看一下报错的内容和项目结构
yml的配置文件为
yml dubbo: scan: base-packages: com.len.pdms.service.provider.Impl protocol: name: dubbo port: 20880 default: false registry: address: zookeeper://127.0.0.1:${embedded.zookeeper.port} application: logger: slf4j provider: filter: dubboProviderContextFilter
它说的是绑定失败,我点到了prviderConfig的类中取看看了一下,没有找到setFilter这个方法,所以我以为是这个问题,于是把这个filter给注释了,重新启动发现不报错了,但是服务端和消费端的RPC调用也失效了。
h2 因为使用的dubboSPi加载,使用的是扩展类加载器,颠倒扩展类加载器中看了一下,傻眼了
``java
public class ExtensionLoader {
private static final Logger logger = LoggerFactory.getLogger(ExtensionLoader.class);
private static final String SERVICES_DIRECTORY = "META-INF/services/";
private static final String DUBBO_DIRECTORY = "META-INF/dubbo/";
``
原来是我SPI文件的路径写错了,因该是META-INF/dubbo,于是改了一下路径,发现终于正常了
其实也有其他问题,例如yml文件中的空格没加,过滤器的名字和yml中的配置不一致,大小写不一致之类。