Netty is an asynchronous event-driven network application framework
for rapid development of maintainable high performance protocol servers & clients.
这里通过实现一个简单的Echo服务器和客户端来演示Netty的使用。参考《Netty实战》。
环境
java version “1.8.0_121”
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
Maven: 3.5.0
Netty: 4.1.11.Final
文件结构
|
|
首先主目录中有一个pom.xml文件,同时有两个子模块Server和Client,每个子模块又有自己的pom.xml文件。
根pom.xml
|
|
注意根pom.xml是一个pom项目,并且定义了两个module:Client,Server。根目录下只有一个pom文件和两个子模块项目,没有具体的代码。
这里先声明了整个项目的所需的依赖netty-all
,同时声明了一下后续需要使用的插件。
Server
|
|
Server的pom继承了上一根项目echo的pom,所以echo中pom的内容也会应用于Server。同时这里还定义了执行方法,指定的主函数入口,并且设置了需要传入的参数。
EchoServerHandler.java:
创建一个handler来处理网络链接中的事务。
EchoServer:
启动Server。
Client
pom.xml:
EchoClientHandler.java:
EchoClient.java:
运行
构建
到两个模块的目录下,分别运行:
遇到的坑
创建子模块。手动创建子目录和pom是可行的,但是比较麻烦。在eclipse中,可以右键点击echo项目,然后新建一个module类型的maven工程即可,这样会自动构建相应的文件目录和基本的pom文件。
Netty库解析失败。虽然Netty已经通过maven构建添加入classpath,但是import时会出现错误,当你点击开Maven Dependences会发现,里面的class文件是打不开的。这是因为maven仓库出现的问题,里面有内容错误。我通过删除Home下的.m
下的仓库,然后右键项目>Maven>Update Project。