`
gzcj
  • 浏览: 289736 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MINA2.0简单使用

阅读更多

一直知道MINA是apache 开发的一个开发socket编程框架,但一直没弄清楚MINA2.0里的多线程该如何处理,根据apache提供的文档,使用MINA2.0开发多线程的程序变的非常简单,只用在其filter中加入线程池就可以了,感觉挺神奇,于是参考apache的其他项目,写了个小例子,下面是代码,作为自己以后学习使用。

public class MinaServerTest {
	
	 private SocketAcceptor acceptor;
	 
	 private ExecutorService filterExecutor = new OrderedThreadPoolExecutor();//apache 提供的线程池,有参数可以设置,但不知道设置什么时候比较好,就用了默认的,从参数的设置上看,(因为没看源码,我自己猜测)其应该是使用的jdk的线程池
	

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MinaServerTest mst=new MinaServerTest();
		mst.start();

	}
	
	 public synchronized void start(){
		 acceptor = new NioSocketAcceptor(Runtime.getRuntime()
                 .availableProcessors());
		 
		 acceptor.setReuseAddress(true);
         acceptor.getSessionConfig().setReadBufferSize(2048);
         acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE,
                 10);
         // Decrease the default receiver buffer size
         ((SocketSessionConfig) acceptor.getSessionConfig())
                 .setReceiveBufferSize(512);
 
         MdcInjectionFilter mdcFilter = new MdcInjectionFilter();
 
         acceptor.getFilterChain().addLast("mdcFilter", mdcFilter);
         acceptor.getFilterChain().addLast("threadPool",
                 new ExecutorFilter(filterExecutor));//设置线程池,以支持多线程
         acceptor.getFilterChain().addLast("codec",
        		 new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName("UTF-8"))));//协议
         acceptor.getFilterChain().addLast("mdcFilter2", mdcFilter);
         acceptor.getFilterChain().addLast("logger", new LoggingFilter());
         acceptor.setHandler(new YourHandler());//你自己的处理类
         try{
         acceptor.bind((new InetSocketAddress(8080)));
         }catch(IOException e){
        	 e.printStackTrace();
         }
		 
	 }

}

 handler我没有实现,这里只是举个小例子,handler需要根据业务自己编写相应的函数就好了

public class YourHandler implements IoHandler{
	public void sessionCreated(IoSession session) throws Exception
	{
		;//会话创建   
	}
    public void sessionOpened(IoSession session) throws Exception{
    	;//打开会话,与sessionCreated最大的区别是它是从另一个线程处调用的   
    }
    public void sessionClosed(IoSession session) throws Exception{
    	;//会话结束,当连接关闭时被调用   
    }
    public void sessionIdle(IoSession session, IdleStatus status) throws Exception{
    	;//会话空闲   
    }
   public void exceptionCaught(IoSession session, Throwable cause) throws Exception{
    	;//异常捕获,Mina会自动关闭此连接   
    }
   public  void messageReceived(IoSession session, Object message) throws Exception{
    	;//接收到消息   
    }
   public void messageSent(IoSession session, Object message) throws Exception{
    	;//发送消息 
    }
}

 

分享到:
评论
2 楼 braint8 2010-07-05  
wuwu8023 写道
楼主我想请问一下啊  要是你那个 YourHandler 里面的sessionClosed方法中
加入 System.out.println(session.getRemoteAddress().toString()+" closed");是不是肯定会报错


路过看到,发一句,你都close里session里还有东西吗?是不是报空指针- -
1 楼 wuwu8023 2010-03-12  
楼主我想请问一下啊  要是你那个 YourHandler 里面的sessionClosed方法中
加入 System.out.println(session.getRemoteAddress().toString()+" closed");是不是肯定会报错

相关推荐

    mina2.0案例

    综上所述,"mina2.0案例"涉及到的是使用Java语言通过Mina 2.0框架构建网络服务端和客户端的过程,展示了如何利用异步传输、事件驱动和过滤器链等技术实现高效、稳定的网络通信。通过学习和实践这个案例,开发者可以...

    Mina2.0框架源码剖析.pdf

    MinaTimeServer示例是一个简单的时间服务器程序,使用Mina2.0框架实现。下面是MinaTimeServer示例的相关知识点: * MinaTimeServer类:继承了IoHandlerAdapter类,实现了messageReceived方法,用于处理incoming数据...

    Mina2.0快速入门与源码剖析.docx

    Mina2.0 的快速入门主要包括了解 Mina2.0 的基本概念、安装和配置、简单的客户端和服务器端的实现。首先,需要了解 Mina2.0 的基本架构和设计原则,然后进行安装和配置,最后实现一个简单的客户端和服务器端。 知识...

    Mina2.0框架源码剖析

    这个简单的例子展示了Mina2.0如何通过过滤器链、处理器和I/O选择器来构建一个高效的网络服务器。Mina框架的优势在于其高度模块化的设计,允许开发者根据需求自由组合过滤器和处理器,实现复杂的应用逻辑。此外,Mina...

    Mina 2.0快速入门与源码解析

    为了帮助读者快速理解如何使用 Mina 2.0 开发简单的网络服务,下面提供了一个基于时间服务器的例子——`MinaTimeServer.java`。 ```java package com.vista; import java.io.IOException; import java.net....

    mina2.0源码svn地址

    - **社区活跃**:作为一个成熟的开源项目,Mina2.0拥有庞大的用户群体和技术支持团队,可以为使用者提供及时有效的帮助。 总之,“mina2.0源码svn地址”为开发者提供了一个直接获取Mina2.0源代码的有效途径。通过...

    Mina2.0学习笔记(修订版)

    ### Mina2.0学习笔记核心知识点概览 #### 一、Mina入门与环境搭建 **Mina简介** Mina是Apache旗下的一款强大的网络应用框架,专为高性能和高可扩展性网络应用设计,其核心是利用Java NIO技术提供事件驱动的异步API...

    Mina2.0完全剖析,完全自学手册

    ### Mina2.0完全剖析,完全自学手册 #### Apache Mina 概述 Apache Mina(Multipurpose Infrastructure Networked Applications)是一个强大的网络应用框架,主要用于帮助开发者构建高性能且易于扩展的网络应用程序...

    Mina2.0 example HttpServer

    以上代码展示了如何使用Mina2.0创建一个简单的HttpServer,MyHandler是我们自定义的事件处理器,负责处理接收到的HTTP请求和可能出现的异常。 通过阅读和分析Mina2.0的源码,我们可以更深入地理解其内部工作机制,...

    mina2.0相关jar包

    4. **使用MINA 2.0的实践** - **创建服务端**:使用ServerBootstrap类配置服务器参数,添加监听器和过滤器,然后启动服务器监听指定端口。 - **客户端连接**:通过SocketConnector连接到服务器,设置会话属性和...

    mina2.0用户指南

    Apache MINA 2.0是一个高性能的网络应用框架,主要用于简化网络编程,使开发者能夜快速构建可扩展、...开发者在深入学习本用户指南后,应能够熟练地使用mina2.0来构建自己的网络应用,并有效地优化和管理网络通信过程。

    Apache MINA 2.0 用户指南( 缺第一章节)

    Apache MINA 2.0 是一款高性能且易于使用的网络应用程序框架,它简化了开发人员在网络编程方面的负担,允许开发者专注于应用程序的核心功能,而不是底层的网络细节。MINA 2.0 支持多种网络协议,包括 TCP 和 UDP,...

    Mina 2.0 中文参考手册

    本文将聚焦于最新的Mina 2.0版本,深入探讨其架构与使用要点。Mina的核心价值在于其能够将底层的网络通信细节抽象出来,使得开发者能够更专注于业务逻辑的实现。它支持多种传输方式,不仅限于TCP/IP和UDP/IP,还包括...

    Mina2.0学习笔记

    Mina2.0是其一个重要的版本,提供了更多的特性和优化。 **一. Mina 入门** 1. **下载使用的 Jar 包** 在开始Mina项目之前,首先需要从Apache官方网站下载Mina的jar包,通常包括核心库和其他相关依赖。这些jar...

    Apache_Mina2.0学习笔记

    1. **下载使用的Jar包**:在开始使用Mina之前,你需要从Apache官方网站下载最新版本的Mina2.0库,它包含了所有必要的jar文件,包括核心库、依赖的IoBuffer和Netty组件等。 2. **工程创建配置**:创建Java项目后,将...

    Mina2.0入门

    **Mina2.0入门** Apache Mina是一个高度可扩展且功能强大的网络通信框架,它为Java应用程序提供了简单而统一的API来处理TCP/IP、UDP和SSL/TLS协议。Mina2.0作为其最新版本,引入了许多改进和优化,旨在提高性能、...

Global site tag (gtag.js) - Google Analytics