# jfinal-amaakerpc-plugin **Repository Path**: rucky2013/jfinal-amaakerpc-plugin ## Basic Information - **Project Name**: jfinal-amaakerpc-plugin - **Description**: jfinal下的一个rpc的插件 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 6 - **Created**: 2016-11-22 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #jfinal-amaakerpc-plugin >这是一个jfinal的插件,但是也可以单独使用,是我基于[eric_1989](https://git.oschina.net/eric_ds)大神的[jfire-simplerpc](https://git.oschina.net/eric_ds/jfire-simplerpc)的一个扩展,主要增加对jfinal的支持,增加扫描包功能等等,详细如下: >[jfire-simplerpc](https://git.oschina.net/eric_ds/jfire-simplerpc)是一个简单快速的java间rpc调用 同时支持公网安全调用,采用rsa1024位握手加密,aes128位通讯加密 ####server端rpc服务开启: > ```java 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"); //添加扫描路径,可多路径 try { rpcServiceLists.addService(IndexServiceImp.class);//手动添加 } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } amaakeServerRpcPlugin.setRpcServiceLists(rpcServiceLists);//将Service列表添加到服务里 me.add(amaakeServerRpcPlugin);//启动,这是jfinal里插件的安装,你也可以amaakeServerRpcPlugin.start();直接启动 ``` ####client端: > ```java 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);//添加到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别名和服务端别名,一个客户端可以连接多个服务端 >服务端 ```java ###接口### 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; } } ``` >客户端的接口 ```java @RpcService("index")//服务端service别名 public interface IndexService { public void showaa(); public void setaa(String aa); public String getaa(); } ``` ####最后关于公钥密钥的生成,专门提供了方法 >生成秘钥对,输出到控制台上 ```java public static void main(String[] args){ new RpcKeyGet().buildkey();//获取秘钥和公钥 } ``` >其他的可以见例子 >这是我心中的微服务架构,剩下的功能,我会围绕这个图,来做 ![](rpc.png)