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

瞎碰终于找到原因了

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

    


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)即可;

欢迎批评指正!谢谢
  











你可能感兴趣的:(#,实战:Hadoop)