`
TJYCHYANGCHENHUI
  • 浏览: 12614 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

MINA的第一个小小的例子

    博客分类:
  • MINA
阅读更多
今天在别人的博客上看到过Apache的NIO框架MINA比较感兴趣,所以就参考别人的列子,自己动手配置运行了一下,感觉真是很爽。
1:首先下载MINA2的jar与其相关的jar包。
导入需要的jar包,如图。

2:构建CalculatorHandler类

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

import org.apache.log4j.Logger;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;



 public class CalculatorHandler extends IoHandlerAdapter { 
    private static final Logger LOGGER = Logger.getLogger(CalculatorHandler.class); 

    private ScriptEngine jsEngine = null; 

    public CalculatorHandler() { 
        ScriptEngineManager sfm = new ScriptEngineManager(); 
        jsEngine = sfm.getEngineByName("JavaScript"); 
        if (jsEngine == null) { 
            throw new RuntimeException("找不到 JavaScript 引擎。"); 
        } 
    } 

    public void exceptionCaught(IoSession session, Throwable cause) 
        throws Exception { 
        LOGGER.warn(cause.getMessage(), cause); 
    } 

    public void messageReceived(IoSession session, Object message) 
        throws Exception { 
        String expression = message.toString(); 
        if ("quit".equalsIgnoreCase(expression.trim())) { 
            session.close(true); 
            return; 
        } 
        try { 
            Object result = jsEngine.eval(expression); 
            session.write(result.toString()); 
        } catch (ScriptException e) { 
            LOGGER.warn(e.getMessage(), e); 
            session.write("Wrong expression, try again."); 
        } 
    } 
}



3:构建CalculatorServer类
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;

import org.apache.log4j.Logger;
import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;



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

    private static final Logger LOGGER = Logger.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); 
    } 
}




4: 使用 Telnet 工具测试计算器服务


运行后的界面



5:因为小弟刚学,这是第一个例子感觉比较新奇,希望大神们能够分享这方面的学习资料


  • 大小: 20.1 KB
  • 大小: 2.9 KB
  • 大小: 5.6 KB
分享到:
评论

相关推荐

    mina 第一原始版本的例子源码,可以供学习使用

    mina 第一原始版本的例子源码,可以供学习使用

    apache-mina例子

    这个例子是关于如何使用Apache Mina实现一个简单的服务端和客户端通信的示例。在这个案例中,`MinaTimeServer`是服务端程序,它负责监听客户端的连接请求,并发送时间信息;而`MinaClient`则是客户端程序,它连接到...

    mina权威性能测试例子

    这个"mina权威性能测试例子"是针对Apache Mina的一个实际性能测试案例,旨在展示在特定环境下Mina如何处理大量并发连接。在这个测试中,四台客户端机器同时对服务器进行压力测试,结果显示服务器可以轻松地处理一万...

    mina消息推送例子

    在“mina_spring”这个例子中,我们可能会看到如何将Mina的配置整合到Spring的配置文件中,利用Spring的Bean管理来实例化和管理Mina的ServerBootstrap、Acceptor、Handler等对象。 为了实现消息推送,我们需要定义...

    mina2.0下一个例子

    《MINA 2.0深度探索:从一个实例入手》 Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高度可扩展的、高性能的网络应用程序框架,主要用于开发服务器端的网络应用。MINA 提供了一种...

    Mina实现RPC的例子

    这个例子中的链接(http://blog.csdn.net/stevexk/archive/2008/07/23/2697907.aspx)提供了更详细的实现细节,包括具体的编码和解码逻辑,以及如何在Mina的过滤器和处理器中处理RPC请求。如果你需要深入学习,建议...

    MINA源码与例子

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发高质量的网络服务。MINA的目标是为开发者提供一个简单易用但功能强大的库,...

    Mina官网例子之时间服务器

    在这个例子中,我们将深入探讨Mina的"时间服务器",它是一个简单的应用,展示了如何使用Mina来创建一个能响应客户端查询当前系统时间的服务器。 **1. Mina基础概念** - **I/O模型**:Mina基于非阻塞I/O(NIO)模型...

    mina源码+例子mina-2.0.0-M6.zip

    3. **编写简单的应用**:从例子入手,创建一个简单的MINA服务器和客户端,理解它们之间的通信机制。 4. **实现自定义过滤器**:根据需求,编写自定义的过滤器,以实现特定的数据处理功能。 5. **性能调优**:了解...

    mina通讯例子

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个Java框架,用于构建高性能...通过学习这个例子,开发者可以了解MINA的基本工作原理,并进一步探索如何利用MINA构建更复杂的网络应用程序。

    mina使用例子

    Apache Mina是一个开源项目,它提供了一个高度可扩展和高性能的网络通信框架。...Mina的目标是简化网络编程,让开发者能够专注于业务逻辑,而不是底层的网络细节。...这个例子将为你提供实践Mina框架的第一手经验。

    mina即时聊天demo

    Mina(Java Multithreaded Application Network Architecture)是一个开源的网络通信框架,由Apache软件基金会开发并维护。它提供了一个高度可扩展的、高性能的、事件驱动的I/O服务架构,广泛应用于各种网络协议的...

    mina服务端例子

    Apache Mina是一个开源项目,它提供...这个例子是学习和理解Mina框架以及Socket NIO的一个很好的起点。通过深入研究源码,你可以更好地掌握网络编程中的异步处理和事件驱动模式,为构建高性能的网络应用打下坚实基础。

    Mina例子包含与spring整合

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个Java框架,专注于简化网络应用开发,特别是使用Non-blocking I/O(NIO)的方式。MINA提供了一种高效、可扩展且灵活的框架,使得开发者...

    mina框架实例

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发可扩展且高效的网络应用,如TCP/IP和UDP/IP服务器。MINA的目标是帮助开发者...

    mina入门例子

    在这个例子中,`MyProtocolCodecFactory`是你自定义的编码解码器,用于将应用数据转换为网络字节流。`MyBusinessHandler`则是你的业务处理器,它会接收到`Session`中的事件并进行相应处理。 客户端则使用`...

    Mina2.0.0_RC1 例子

    本例子是MyEclipse的JAVA工程,使用encoder和decoder对传输的数据对象编解码,接收和返回的数据头四个字节都表示后面数据的长度,源码中包含详细注释,理解后可修改为传输任意对象。 src源码包下的test.mina.server...

    mina 服务器开发例子

    在这个例子中,每当有新消息到达时,MyFilter会将数据转换为大写,然后再传递给下一个过滤器或最终的处理器。 在提供的压缩包文件"Mina2Demo"中,可能包含了完整的Mina服务器开发示例代码,包括项目的结构、配置...

    mina的高级使用,mina文件图片传送,mina发送文件,mina报文处理,mina发送xml和json

    Apache Mina是一个开源的网络通信应用框架,主要应用于Java平台,它为高性能、高可用性的网络应用程序提供了基础架构。在本文中,我们将深入探讨Mina的高级使用,特别是在文件图片传送、文件发送、XML和JSON报文处理...

    MINA 1.0 版本的源码以及相关的例子依赖包等

    MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序框架,用于构建服务器端应用程序,尤其在开发TCP和UDP协议的应用时非常有用。MINA 1.0 版本是该框架的一个...

Global site tag (gtag.js) - Google Analytics