snrpc 是一个简单的 Netty RPC 框架,使用 protostuff 1.07 作为序列化工具,使用 Netty-3.2.1 作为 NIO。
使用方式:
比如:
1. server class;
interface and implementor // define an interface: public interface SnRpcInterface { public String getMessage(String param); }
// implement interface public class SnRpcImpl implements SnRpcInterface { public String getMessage(String param) { return "hi,it is message from server...param+" + param; } }
2, start server
SnRpcInterface inter = new SnRpcImpl(); SnRpcServer server = new SnNettyRpcServer(new Object[] { inter }); try { server.start(); } catch (Throwable e) { e.printStackTrace(); }
3,config file
#tcpNoDelay snrpc.tcp.nodelay=true #call the bind method as many times as you want snrpc.tcp.reuseAddress=true #ISDEBUG snrpc.dev=true #TCP timeout snrpc.read.timeout=25000 #server port snrpc.http.port=8080
<?xml version="1.0" encoding="UTF-8"?><application> <!-- rpc interface services --> <rpcServices> <rpcService name="SnRpcInterface" interface="org.stefan.snrpc.server.SnRpcInterface" overload="true"> <rpcImplementor class="org.stefan.snrpc.server.SnRpcImpl"/> </rpcService> </rpcServices></application>
4, client invoker
SnRpcConnectionFactory factory = new SnNettyRpcConnectionFactory( "localhost", 8080); factory = new PoolableRpcConnectionFactory(factory); SnRpcClient client = new CommonSnRpcClient(factory); try { SnRpcInterface clazz = client.proxy(SnRpcInterface.class); String message = clazz.getMessage("come on"); System.out.println("client receive message .... : " + message); } catch (Throwable e) { e.printStackTrace(); }
JDK6+
Maven 2
reflectasm-1.07.jar
asm-4.0.jar
log4j-1.2.16.jar
dom4j-1.6.1.jar
xml-apis-1.0.b2.jar
slf4j-api-1.6.6.jar
netty-3.2.1.Final.jar
jaxen-1.1.6.jar
protostuff-core-1.0.7.jar
protostuff-api-1.0.7.jar
protostuff-runtime-1.0.7.jar
protostuff-collectionschema-1.0.7.jar
commons-pool-1.6.jar
实现一个最最简单的数学计算:加、减、乘、除,给大家演示如何搭建简单的 API Server。按照前面几章的写法,先来看看加法、减法示例代码: worker_processes 1; #nginx worker 数量 error_log logs/error.log; #指定错误日志文件路径 events { worker_connections 1024; } http
问题内容: 谁能指出我一个简单的Java开源Map / Reduce框架/ API?似乎没有太多证据表明存在这种事物,但是其他人可能知道不同。 我所能找到的最好的当然是HadoopMapReduce,但这不符合“简单”标准。我不需要运行分布式作业的能力,仅需要让我使用标准Java5风格的并发性在单个JVM中的多核计算机上运行映射/简化样式的作业。 写自己不是一件难事,但我宁愿不必这样做。 问题
本文向大家介绍简单实现js浮动框,包括了简单实现js浮动框的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js浮动框的实现代码,供大家参考,具体内容如下 一.在需要加入浮动框的页面中加入如下css代码: 二.js代码(注意:该代码要添加整个页面最后,目的是页面加载完成时加载它) 三.html代码(注意:该代码要放置到body的最后) 以上就是本文的全部内容,希望对大家的学习有所帮助,
本文向大家介绍python爬虫框架talonspider简单介绍,包括了python爬虫框架talonspider简单介绍的使用技巧和注意事项,需要的朋友参考一下 1.为什么写这个? 一些简单的页面,无需用比较大的框架来进行爬取,自己纯手写又比较麻烦 因此针对这个需求写了talonspider: •1.针对单页面的item提取 - 具体介绍点这里 •2.spider模块 - 具体介绍点这里 2.介
本文向大家介绍简单解析Django框架中的表单验证,包括了简单解析Django框架中的表单验证的使用技巧和注意事项,需要的朋友参考一下 我们的搜索示例仍然相当地简单,特别从数据验证方面来讲;我们仅仅只验证搜索关键值是否为空。 然后许多HTML表单包含着比检测值是否为空更为复杂的验证。 我们都有在网站上见过类似以下的错误提示信息: 请输入一个有效的email地址, foo' 并不是一个有效的
我正在Java AWT学习GUI编程,有点卡住了。我不能在一个框架中添加几个复选框我正在尝试的代码是- 错误在checkbox1.setbounds()和checkbox2.setbounds()上计算- 未为“类型”复选框定义方法setBounds(int,int,int,int) 和mainframe.add()- 类型容器中的方法add(Component)不适用于参数(复选框) 有人能解释