https://git.oschina.net/sirius/jfinal-amaakerpc-plugin
jfinal-amaakerpc-plugin
这是一个jfinal的插件,但是也可以单独使用,是我基于eric_1989大神的jfire-simplerpc的一个扩展,主要增加对jfinal的支持,增加扫描包功能等等,详细如下:
jfire-simplerpc是一个简单快速的java间rpc调用 同时支持公网安全调用,采用rsa1024位握手加密,aes128位通讯加密
server端rpc服务开启:
AmaakeServerRpcPlugin amaakeServerRpcPlugin = new AmaakeServerRpcPlugin(); amaakeServerRpcPlugin.setPort(1688);//端口 amaakeServerRpcPlugin.setActiveAuth(true);//是否开启加密传输,可空 amaakeServerRpcPlugin.setPrivatekey(privatekey);//私钥,如果activeauth为false或者不赋值,可不用 RpcServiceLists rpcServiceLists = new RpcServiceLists();//Service列表实例 rpcServiceLists.setIsIfsearch(false);//是否开启class扫描 rpcServiceLists.addIncludePaths("com.amaake.service"); //添加扫描路径,可多路径 rpcServiceLists.addService(IndexServiceImp.class);//手动添加 amaakeServerRpcPlugin.setRpcServiceLists(rpcServiceLists);//将Service列表添加到服务里 ###以下例子是连接注册中心时需要的### //向注册中心注册 amaakeServerRpcPlugin.setIfRegistry(true);//开启注册 amaakeServerRpcPlugin.setPublickey(publickey);//客户端用的公钥 amaakeServerRpcPlugin.setRegistryBm("serverdemo");//该服务端的别名 Proxy proxy = new Proxy();//注册中心的服务端 beanproxy.setIp("127.0.0.1");//注册中心的 ipproxy.setPort(1888);//注册中心的端口 proxy.setPublickey(publickey);//连接注册中心需要的公钥 amaakeServerRpcPlugin.setRegistryProxy(proxy); me.add(amaakeServerRpcPlugin);//启动,这是jfinal里插件的安装,你也可以 amaakeServerRpcPlugin.start();直接启动
client端:
AmaakeClientRpcPlugin amaakeClientRpcPlugin = new AmaakeClientRpcPlugin(); Proxy proxy = new Proxy();//这是一个服务端连接实体,也可以是注册中心的连接 proxy.setIp("127.0.0.1");//服务端ip地址 proxy.setPort(1688);//ip地址 proxy.setPublickey(publickey);//公钥 amaakeClientRpcPlugin.addProxyMap("demoserver",proxy,true);////最后一个参数是是否开启链接注册中心 //添加到client连接池里,这里需要一个别名来区分服务端连接,如果是注册中心别名为注册中心中的服务端别名 me.add(amaakeClientRpcPlugin);//启动,jfinal方式,可用start()方法启动 ###下面是在业务中使用的例子### IndexService indexService = AmaakeClientRpc.getAesService(IndexService.class,"demoserver"); //AmaakeClientPpc是Service调用类,IndexService.class是Service的接口, //"demoserver"是启动时的服务端别名,用来区分这个service是属于哪个服务端的, //这里强调一个点getAesService方法是用来使用调用加密传输的service, //getService方法是调用非加密传输
Service写法
主要为了藕解,使用service别名和服务端别名,一个客户端可以连接多个服务端
服务端###接口### public interface IndexService { public void showaa(); public void setaa(String aa); public String getaa(); } ###接口实现### @RpcService("index")//Service别名 public class IndexServiceImp implements IndexService { private static String aa=""; public void showaa() { System.out.println("调用showaa成功"); } public void setaa(String aa) { this.aa = aa; } public String getaa() { return aa; } }客户端的接口
@RpcService("index")//服务端service别名 public interface IndexService { public void showaa(); public void setaa(String aa); public String getaa(); }
注册中心写法
注册中心
###注意只支持jfinal### private Routes routes = null; public void configConstant(Constants me) {} public void configRoute(Routes me) { this.routes = me;获取Routes } public void configPlugin(Plugins me) { AmaakerpcRegistryplugin amaakerpcRegistryplugin = new AmaakerpcRegistryplugin(); amaakerpcRegistryplugin.setPort(1888);注册中心的端口 //注册中心的秘钥 amaakerpcRegistryplugin.setPrivatekey(private); amaakerpcRegistryplugin.setPath("/rpc");//访问注册中心的path amaakerpcRegistryplugin.setRoutes(routes);//添加Routes RpcRegLoginBean rpcRegLoginBean = new RpcRegLoginBean();//登陆账号密码,不添加时打开不需要输入账号密码 rpcRegLoginBean.setUsername("amaake"); rpcRegLoginBean.setPassword("123456"); amaakerpcRegistryplugin.setRpcRegLoginBean(rpcRegLoginBean); me.add(amaakerpcRegistryplugin); }
最后关于公钥密钥的生成,专门提供了方法
生成秘钥对,输出到控制台上
public static void main(String[] args){ new RpcKeyGet().buildkey();//获取秘钥和公钥 }其他的可以见例子