男人总是寂寞的,尤其是周末的晚上!
今夜寂寞难耐下了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说的线程池不需要设置的原因。。。。
分享到:
相关推荐
最近一直在看 Mina 的源码,用了 Mina 这么长时间,说实话,现在才开始对 Mina 有了一 些 深刻的理解,关于 Mina ...都对 Mina 做了较深刻的剖析,现在就是想从 Mina 的最根本的地方来对 Mina 做一些深层 次 上的探讨。
总的来说,深入理解Apache Mina框架是一项系统性的工程,涉及到网络编程的方方面面,包括对Java NIO的深入理解、对框架核心组件的认识,以及对高性能网络通信实现原理的把握。对于想要开发稳定、高效的网络应用的IT...
这个压缩包包含了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 2.0.4版本的源代码,是深入理解和定制Mina的理想资源。 Apache Mina的核心理念是提供一个简洁的API,使得开发者能够专注于业务逻辑,而不是网络通信的底层...
Apache Mina是一个开源的网络通信应用框架,主要应用于Java平台,它为高性能、高可用性的网络应用程序提供了基础架构。...通过深入理解并熟练运用Mina的高级特性,我们可以构建出高效、可靠的网络应用。
首先,让我们理解"Mina连接"。在Mina中,连接是指客户端与服务端之间建立的通信链路。它支持多种传输协议,如TCP/IP(Socket)、UDP(Datagram)等。Mina提供了一种事件驱动的模型,通过IoSession接口来管理连接,...
1.深入介绍了Mina的主要的类,对理解Mina的框架,和Mina的功能划分有所帮助2.开始时可以跳过状态机的介绍。
首先,了解Mina的几个核心类和接口是理解Mina框架的基础。在Mina中,所有的I/O操作都通过特定的类和接口来完成,其中最重要的几个包括: 1. IoService:这个接口是所有I/O通信的入口点。它定义了一系列的方法,比如...
深入理解Apache_Mina_(1)----_Mina的几个类 深入理解Apache_Mina_(2)----_与IoFilter相关的几个类 深入理解Apache_Mina_(3)----_与IoHandler相关的几个类 深入理解Apache_Mina_(4)----_IoFilter和IoHandler的区别和...
通过阅读和理解这些代码,你可以更好地掌握Mina与Socket通信的实现方法,并应用于自己的项目中。 总的来说,Mina与Socket结合使用,可以构建出高效、灵活的网络通信解决方案。Mina的高级抽象简化了网络编程的复杂性...
5. **NIO_TEST**:这可能是一些与Java NIO(非阻塞I/O)相关的测试代码或实验,MINA是基于Java NIO构建的,因此理解NIO对于使用MINA至关重要。 6. **MINA使用手记[1] _files**:这可能是一个文件夹,包含与第一篇...
总结来说,本教程将引导你从理论到实践,掌握Java NIO的基本原理,理解Mina框架的使用,以及如何在SpringBoot环境中整合Mina实现高效的网络通信。通过这些知识的学习,你将具备开发高并发、高性能网络应用的能力。
8. **案例实践**:通过书中提供的案例,动手实践,加深对Mina的理解,并将其应用到实际项目中。 通过这两份手册的学习,你将能够熟练掌握Apache Mina框架,从而在开发网络应用时更加得心应手,提高开发效率,构建出...
总的来说,"Mina demo mina jar包"是一个学习和理解Apache Mina如何工作的良好起点。通过这个示例,开发者可以深入了解如何构建网络应用,如何处理并发连接,以及如何优化I/O操作,这些都是构建高性能网络服务的关键...
这个压缩包文件包含了关于Apache Mina的深入讲解,从基本组件到高级特性的运用,对学习和理解Mina框架有极大的帮助。通过对这些内容的学习,开发者能够更好地掌握如何利用Mina构建高效、稳定、易扩展的网络应用。
- **示例应用**:MINA通常会附带一些示例程序,帮助开发者理解如何使用框架构建实际应用。 - **测试用例**:源码中包含了大量的单元测试,用于验证MINA的功能和性能。 通过阅读和分析`apache-mina-2.0.16`的源码,...
对于初学者来说,理解和编写自定义的编解码器可能会遇到一些挑战。本文将深入探讨mina编解码器的工作原理,提供一个典型编解码器的示例,并解析其代码。 1. **mina框架基础** - Mina提供了一个高效的、事件驱动的...
Apache Mina是一个高度可扩展的Java网络通信框架,它提供了简单而强大的开发接口,用于创建高性能、高效率的网络应用...通过理解和利用这些库,开发者可以高效地构建面向网络的服务,实现复杂的数据交换和通信功能。