`
yuyee
  • 浏览: 57468 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

mina一些理解

    博客分类:
  • mina
阅读更多
男人总是寂寞的,尤其是周末的晚上!
今夜寂寞难耐下了mina源码,写了写mina的小程序,顺便把源码也设置进去,写完后就开始ctrl+t,ctrl+左机,看看这个mina是怎么回事


5个接口:
1.IoConnector  理解成客户端好了
2.IoAcceptor   服务器端
3.IoSession    链接实例
4.IoHandler    业务处理
5.IoFilter     过滤器,悬接通讯层与业务层


先说服务端NioSocketAcceptor,声明为final,继承自AbstractPollingIoAccptor,并实现SocketAcceptor,是mina实现通信的实现类之一,还有DatagramAccepter,VmPipeAccepter.

mina2.0的线程池,我只看了NioSocketAccptor这块,
public NioSocketAcceptor(int processorCount) {
    super(new DefaultSocketSessionConfig(), NioProcessor.class, processorCount);
    ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
    }


调用父类的构造方法,将要设置的容量传近去

AbstractPollingIoAccptor再调用自己的私有构造方法
protected AbstractPollingIoAcceptor(IoSessionConfig sessionConfig,
            Class<? extends IoProcessor<T>> processorClass, int processorCount) {
        this(sessionConfig, null, new SimpleIoProcessorPool<T>(processorClass,
                processorCount), true);
    }

//调用父类的构造方法

private AbstractPollingIoAcceptor(IoSessionConfig sessionConfig,
            Executor executor, IoProcessor<T> processor,
            boolean createdProcessor) {
        super(sessionConfig, executor);

        if (processor == null) {
            throw new NullPointerException("processor");
        }

        this.processor = processor;
        this.createdProcessor = createdProcessor;

        try {
            // Initialize the selector
            init();
            
            // The selector is now ready, we can switch the
            // flag to true so that incoming connection can be accepted
            selectable = true;
        } catch (RuntimeException e) {
            throw e;
        } catch (Exception e) {
            throw new RuntimeIoException("Failed to initialize.", e);
        } finally {
            if (!selectable) {
                try {
                    destroy();
                } catch (Exception e) {
                    ExceptionMonitor.getInstance().exceptionCaught(e);
                }
            }
        }
    }


//AbstractIoAcceptor

    protected AbstractIoAcceptor(IoSessionConfig sessionConfig, Executor executor) {
        super(sessionConfig, executor);
        defaultLocalAddresses.add(null);
    }


//AbstractIoService
    protected AbstractIoService(IoSessionConfig sessionConfig, Executor executor) {
        if (sessionConfig == null) {
            throw new NullPointerException("sessionConfig");
        }

        if (getTransportMetadata() == null) {
            throw new NullPointerException("TransportMetadata");
        }

        if (!getTransportMetadata().getSessionConfigType().isAssignableFrom(
                sessionConfig.getClass())) {
            throw new IllegalArgumentException("sessionConfig type: "
                    + sessionConfig.getClass() + " (expected: "
                    + getTransportMetadata().getSessionConfigType() + ")");
        }

        // Create the listeners, and add a first listener : a activation listener
        // for this service, which will give information on the service state.
        listeners = new IoServiceListenerSupport(this);
        listeners.add(serviceActivationListener);

        // Stores the given session configuration
        this.sessionConfig = sessionConfig;

        // Make JVM load the exception monitor before some transports
        // change the thread context class loader.
        ExceptionMonitor.getInstance();

        if (executor == null) {
            this.executor = Executors.newCachedThreadPool();
            createdExecutor = true;
        } else {
            this.executor = executor;
            createdExecutor = false;
        }

        threadName = getClass().getSimpleName() + '-' + id.incrementAndGet();
    }


终于明白2.0说的线程池不需要设置的原因。。。。
分享到:
评论

相关推荐

    深入理解 Apache Mina

    最近一直在看 Mina 的源码,用了 Mina 这么长时间,说实话,现在才开始对 Mina 有了一 些 深刻的理解,关于 Mina ...都对 Mina 做了较深刻的剖析,现在就是想从 Mina 的最根本的地方来对 Mina 做一些深层 次 上的探讨。

    深入理解Apache_Mina

    总的来说,深入理解Apache Mina框架是一项系统性的工程,涉及到网络编程的方方面面,包括对Java NIO的深入理解、对框架核心组件的认识,以及对高性能网络通信实现原理的把握。对于想要开发稳定、高效的网络应用的IT...

    MINA_API+MINA_DOC+mina

    这个压缩包包含了MINA API文档、自学手册以及开发指南,对于学习和理解MINA框架有极大的帮助。 首先,`MINA-2.0.0-API.chm` 文件是MINA 2.0版本的API帮助文档,它是以CHM(Compiled Help Manual)格式编译的Windows...

    apache-mina-2.0.4.rar_apache mina_mina

    这个"apache-mina-2.0.4.rar"压缩包包含的是Apache Mina 2.0.4版本的源代码,是深入理解和定制Mina的理想资源。 Apache Mina的核心理念是提供一个简洁的API,使得开发者能够专注于业务逻辑,而不是网络通信的底层...

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

    Apache Mina是一个开源的网络通信应用框架,主要应用于Java平台,它为高性能、高可用性的网络应用程序提供了基础架构。...通过深入理解并熟练运用Mina的高级特性,我们可以构建出高效、可靠的网络应用。

    mina连接 mina心跳连接 mina断线重连

    首先,让我们理解"Mina连接"。在Mina中,连接是指客户端与服务端之间建立的通信链路。它支持多种传输协议,如TCP/IP(Socket)、UDP(Datagram)等。Mina提供了一种事件驱动的模型,通过IoSession接口来管理连接,...

    深入理解Mina类

    1.深入介绍了Mina的主要的类,对理解Mina的框架,和Mina的功能划分有所帮助2.开始时可以跳过状态机的介绍。

    深入理解Mina

    首先,了解Mina的几个核心类和接口是理解Mina框架的基础。在Mina中,所有的I/O操作都通过特定的类和接口来完成,其中最重要的几个包括: 1. IoService:这个接口是所有I/O通信的入口点。它定义了一系列的方法,比如...

    关于apache Mina Server

    深入理解Apache_Mina_(1)----_Mina的几个类 深入理解Apache_Mina_(2)----_与IoFilter相关的几个类 深入理解Apache_Mina_(3)----_与IoHandler相关的几个类 深入理解Apache_Mina_(4)----_IoFilter和IoHandler的区别和...

    Mina+Socket通信

    通过阅读和理解这些代码,你可以更好地掌握Mina与Socket通信的实现方法,并应用于自己的项目中。 总的来说,Mina与Socket结合使用,可以构建出高效、灵活的网络通信解决方案。Mina的高级抽象简化了网络编程的复杂性...

    mina

    5. **NIO_TEST**:这可能是一些与Java NIO(非阻塞I/O)相关的测试代码或实验,MINA是基于Java NIO构建的,因此理解NIO对于使用MINA至关重要。 6. **MINA使用手记[1] _files**:这可能是一个文件夹,包含与第一篇...

    Java springboot 整合mina 框架,nio通讯基础教程,mina框架基础教程.zip

    总结来说,本教程将引导你从理论到实践,掌握Java NIO的基本原理,理解Mina框架的使用,以及如何在SpringBoot环境中整合Mina实现高效的网络通信。通过这些知识的学习,你将具备开发高并发、高性能网络应用的能力。

    mina开发手册与mina完全自学手册.rar

    8. **案例实践**:通过书中提供的案例,动手实践,加深对Mina的理解,并将其应用到实际项目中。 通过这两份手册的学习,你将能够熟练掌握Apache Mina框架,从而在开发网络应用时更加得心应手,提高开发效率,构建出...

    mina demo mina jar包

    总的来说,"Mina demo mina jar包"是一个学习和理解Apache Mina如何工作的良好起点。通过这个示例,开发者可以深入了解如何构建网络应用,如何处理并发连接,以及如何优化I/O操作,这些都是构建高性能网络服务的关键...

    深入理解Apache Mina

    这个压缩包文件包含了关于Apache Mina的深入讲解,从基本组件到高级特性的运用,对学习和理解Mina框架有极大的帮助。通过对这些内容的学习,开发者能够更好地掌握如何利用Mina构建高效、稳定、易扩展的网络应用。

    apache-mina源码

    - **示例应用**:MINA通常会附带一些示例程序,帮助开发者理解如何使用框架构建实际应用。 - **测试用例**:源码中包含了大量的单元测试,用于验证MINA的功能和性能。 通过阅读和分析`apache-mina-2.0.16`的源码,...

    mina自定义编解码器详解

    对于初学者来说,理解和编写自定义的编解码器可能会遇到一些挑战。本文将深入探讨mina编解码器的工作原理,提供一个典型编解码器的示例,并解析其代码。 1. **mina框架基础** - Mina提供了一个高效的、事件驱动的...

    mina.zip内涵所有mina所需jar包

    Apache Mina是一个高度可扩展的Java网络通信框架,它提供了简单而强大的开发接口,用于创建高性能、高效率的网络应用...通过理解和利用这些库,开发者可以高效地构建面向网络的服务,实现复杂的数据交换和通信功能。

Global site tag (gtag.js) - Google Analytics