应用程序结构
我们将要构造一个如下内容的工程
一个Handler
两个Filter - Logging Filter 和 ProtocolCodec Filter
NioDatagram Socket
初始化代码
让我们先看看代码,我们省略了部分代码
public void initialize() throws IOException {
// 创建一个 Acceptor
NioDatagramAcceptor acceptor = new NioDatagramAcceptor();
// 加入 Handler
acceptor.setHandler(new ServerHandler());
acceptor.getFilterChain().addLast("logging",
new LoggingFilter());
acceptor.getFilterChain().addLast("codec",
new ProtocolCodecFilter(new SNMPCodecFactory()));
// 创建 Session Configuration
DatagramSessionConfig dcfg = acceptor.getSessionConfig();
dcfg.setReuseAddress(true);
logger.debug("Starting Server......");
// 绑定并监听
acceptor.bind(new InetSocketAddress(DEFAULT_PORT));
logger.debug("Server listening on "+DEFAULT_PORT);
}
整合处理
与Spring整合我们需要以下步骤
设置IO handler
创建Filter并加入chain中
创建并设置Socket
注意:最新版本的Mina并不像早起版本一样包含Spring连接的包。 The package is now named Integration Beans, to make the implementation work for all DI frameworks.
让我们看看Spring的配置文件。请注意观察我从配置文件中摘取的部分
这个例子源于mina发行版中的Chat example ,请参考例子中的XML文件。
让我们在Spring的上下文(Context)中设置IO Handler
让我们创建Filter Chain
在这里我们创建了一个Filter实例。在ProtocolCodec factory中我们使用了构造器注入,在后面是loggingFilter。我们定义完成了将要使用的Filter,然后我们接着定义执行这些Filter的Filter Chain,定义一个ID为“FilterChainBuidler”的Bean,然后将Filter注入其中。我们即将完成我们的整合,现在只需要创建一个Socket并绑定它。
让我们完成最后一部分
现在我们创建一个ioAcceptor并设置IO handler 和 Filter Chain。在Spring里写一个函数来读取配置文件。
public void initializeViaSpring() throws Exception {
new ClassPathXmlApplicationContext("trapReceiverContext.xml");
}
我们只需要写一个main函数来调用这个方法就可以初始化mina了。
这是我的第一篇译作,水平有限大家多包涵。
分享到:
2009-04-16 23:31
浏览 10722
论坛回复 / 浏览 (1 / 7391)
评论
1 楼
bonny
2009-04-16
GOOD,抽空把XSOCKET你也弄一下。这样就全了。