RPC 测试报错Unkown protocol(com.boco.hadoop.client.LoginServiceInterface)

本文介绍了一个关于远程过程调用(RPC)中客户端和服务端接口不一致的问题及解决方案。具体表现为客户端使用了带有特定包名的接口,而服务端注册的是另一个包名下的相同接口名称,导致RPC调用失败。文章给出了调整包名实现接口统一的方法。

瞎碰终于找到原因了

    下图为项目的目录结构(包含服务端与客户端)

    


LoginControllerer.java代码如下:


public class LoginController {
 public static void main(String[] args) throws Exception {
  LoginServiceInterface proxy = RPC.getProxy(LoginServiceInterface.class, 1L, new InetSocketAddress("localhost", 10003), new Configuration());
  
  String result = proxy.login("mijie", "123456");
  
  System.out.println(result);
 }
 
 
}


此时启动starter.java 后执行 LoginController报错Unkown protocol(com.boco.hadoop.client.LoginServiceInterface)

导致错误的原因是:

LoginController 执行时,创建的代理对象是用带包名的protocol(com.boco.hadoop.client.LoginServiceInterface)

然而发布的service中的protocl(com.boco.hadoop.server.LoginServiceInterface),故报错;

建议客户端与服务端分为两个项目(目录结构相同)

解决该问题的宗旨是:

      LoginServiceInterface proxy = RPC.getProxy(LoginServiceInterface.class, 1L, new InetSocketAddress("localhost", 10003), new Configuration());
      builder.setBindAddress("localhost").setPort(10003).setProtocol(LoginServiceInterface.class).setInstance(new LoginServiceImpl());

保持客户端与服务端中的protocol为同一个包下同一个接口(com.boco.hadoop.LoginServiceInterface)即可;

欢迎批评指正!谢谢
  











评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值