Mina构件maven配置
第一步创建maven项目
1.maven项目的创建过程简单可以在网上参考
第二步引入Mina相关依赖构件
打开编辑maven项目中的pom.xml文件,位置如图
添加如下代码到pom.xml中
<dependencies></dependencies>
标签内
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.6</version>
<type>jar.sha256</type>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>org.rxtx</groupId>
<artifactId>rxtx</artifactId>
<version>2.1.7</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.apache.mina</groupId>
<artifactId>mina-core</artifactId>
<version>2.0.7</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
- 右键项目名->maven->update Project.. 如图
这一步使得maven自动的帮你下载你配置的mina构件到你的项目中
第三步添加Log4j的日志输出配置文件
mina 依赖于log4j的日志输出功能,所以必须要配置好日志输出方式才能够正常的使用。配置步骤如下。
- 创建项目配置文件夹, 右键项目->New->Folder。为文件夹设置名字为config。如图
- 将config文件夹设置为项目资源文件夹,右键文件config文件夹(use as Source Folder) 如图
- 在config文件夹中创建一个文本文件,命名为log4j.properties,然后打开log4j.properties粘贴上代码到其中。
###set log levels -for more verbose logging change 'info' to 'debug'###
log4j.rootLogger=info,stdout,file
###direct log messages to stdout###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
###direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=d:\mylog.log
log4j.appender.file.MaxFileSize=100KB
# Keep one backup file
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%p %t %c - %m%n
以上内容时将日志级别设置为了info级别,也就是大于info级别的日志才会输出。同时设置了两个日志输出的渠道,一个就是在控制台上打印日志,二个就是将日志文件打印到d盘的mylog.log文件中,读者可以自己再修改路径。
配置完成
到此配置完成,你就可以开始编写一个mina项目了,就不需要担心引入那些mina依赖jar构件了。下面提供一个测试是否配置成功的方法。
用例测试
1.创建一个类命名为MyServer ,当做作为mina服务器,创建消息处理类MyHandler 处理来之客户端的消息,代码如下。
public class MyServer {
public static void main(String[] args) throws IOException {
IoAcceptor acceptor = new NioSocketAcceptor();
acceptor.getSessionConfig().setReadBufferSize(2048);
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
acceptor.setHandler(new MyHandler());
acceptor.getFilterChain().addLast("codec",
new ProtocolCodecFilter(
new TextLineCodecFactory(Charset.forName("UTF-8")
,LineDelimiter.WINDOWS.getValue(),LineDelimiter.WINDOWS.getValue())));
acceptor.bind(new InetSocketAddress(9123));
}
}
class MyHandler extends IoHandlerAdapter{
private final static Logger log = LoggerFactory.getLogger(MyHandler.class);
private final static String QUIT = "quit";
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
String str = message.toString();
log.info("this message received is [" + str + "]");
if(QUIT.equals(str)) {
session.close(true);
return;
}
}
}
2.然后我们运行 MyServer 中的 main 方法,你可以看到控制台一直处于阻塞状态,此时,我们使用window控制台作为客户端测试mina服务器,用 telnet 127.0.0.1 9123 访问,然后输入一些内容,当按下回车键,你会发现数据在
Server 端被输出,但要注意不要输入中文,因为 Windows 的命令行窗口不会对传输的数据
进行 UTF-8 编码。当输入 quit 结尾的字符串时,连接被断开。