首页 > OOP语言 > 其它 > 正文

使用 Apache MINA 2 开发网络应用
2012-03-28 00:00:00   来源:www.bianceng.cn   评论:0 点击:

暂时无描述信息

在 清单 1 中,messageReceived 由 IoHandler 接口声明。当接收到新的消息的时候,该方法就会被调用。此处的逻辑是如果传入了“quit”,则通过 session.close关闭当前连接;如果不是的话,就执行该表达式并把结果通过 session.write发送回去。此处执行表达式用的是 JDK 6 中提供的 JavaScript 脚本引擎。此处使用到了 I/O 会话相关的方法,会在下面进行说明。

接下来只需要把 I/O 处理器和 I/O 过滤器配置到 I/O 服务上就可以了。具体的实现如 清单 2 所示。

清单 2. 计算器服务主程序 CalculatorServer

public class CalculatorServer {
  private static final int PORT = 10010;

  private static final Logger LOGGER = LoggerFactory
    .getLogger(CalculatorServer.class);

  public static void main(String[] args) throws IOException {
    IoAcceptor acceptor = new NioSocketAcceptor();

    acceptor.getFilterChain().addLast("logger", new LoggingFilter());
    acceptor.getFilterChain().addLast(
      "codec",
      new ProtocolCodecFilter(new TextLineCodecFactory(Charset
        .forName("UTF-8"))));

    acceptor.setHandler(new CalculatorHandler());
    acceptor.bind(new InetSocketAddress(PORT));

    LOGGER.info("计算器服务已启动,端口是" + PORT);
  }
}

清单 2 中,首先创建一个 org.apache.mina.transport.socket.nio.NioSocketAcceptor 的实例,由它提供 I/O 服务;接着获得该 I/O 服务的过滤器链,并添加两个新的过滤器,一个用来记录相关日志,另外一个用来在字节流和文本之间进行转换;最后配置 I/O 处理器。完成这些之后,通过 bind 方法来在特定的端口进行监听,接收连接。服务器启动之后,可以通过操作系统自带的 Telnet 工具来进行测试,如 图 2 所示。在输入表达式之后,计算结果会出现在下面一行。

图 2. 使用 Telnet 工具测试计算器服务

\

在介绍了简单的计算器服务这个应用之后,下面说明本文中会使用的复杂的联机游戏应用。

相关热词搜索:

上一篇:使用Blueprint Container规范构建OSGi应用程序
下一篇:结合使用 Apache Geronimo 和 Lift

分享到: 收藏