接上一篇: http://618119.com/archives/2007/12/06/39.html
为 DefaultIoFilterChainBuilder 增加filter:
- import org.apache.mina.filter.LoggingFilter;
- import javax.net.ssl.SSLContext;
- import org.apache.mina.filter.SSLFilter;
- import org.apache.mina.common.DefaultIoFilterChainBuilder;
- import org.apache.mina.filter.codec.ProtocolCodecFilter;
- import org.apache.commons.ssl.*;
- import java.io.*;
- import java.security.*;
- import com.lizongbo.ssl.SMPPSSLContextFactory;
- import com.lizongbo.smpp.server.codec.SMPPProtocolCodecFactory;
- public static final int PORT = 5432;
- public static final int CONNECT_TIMEOUT = 3;
- private static final boolean USE_SSL = true;
- private static final boolean USE_LOG = false;
- private static final boolean USE_COMPRESS = false;
- private static final boolean USE_THREADPOOL = false;
-
-
-
- public static void addServerSSLSupport(DefaultIoFilterChainBuilder chain) throws
- Exception {
- if (USE_SSL) {
- SSLContext sslc = SMPPSSLContextFactory.getInstance(true);
- SSLFilter sslFilter = new SSLFilter(sslc);
- sslFilter.setNeedClientAuth(true);
-
- sslFilter.setEnabledCipherSuites(new String[] {
- “TLS_RSA_WITH_AES_256_CBC_SHA”
- “SSL_RSA_WITH_RC4_128_MD5″
- “TLS_RSA_WITH_AES_128_CBC_SHA”,
- “TLS_DHE_RSA_WITH_AES_128_CBC_SHA”,
- “TLS_DHE_DSS_WITH_AES_128_CBC_SHA”,
- “TLS_RSA_WITH_AES_256_CBC_SHA”,
- “TLS_DHE_RSA_WITH_AES_256_CBC_SHA”,
- “SSL_RSA_WITH_RC4_128_SHA”,
- “TLS_DHE_DSS_WITH_AES_256_CBC_SHA”
- });
- chain.addLast(”sslFilter”, sslFilter);
- System.out.println(”Server SSL ON”);
- }
- }
-
-
-
- public static void addCilentSSLSupport(DefaultIoFilterChainBuilder chain) throws
- Exception {
- if (USE_SSL) {
- SSLContext sslc = SMPPSSLContextFactory.getInstance(false);
- SSLFilter sslFilter = new SSLFilter(sslc);
- sslFilter.setUseClientMode(true);
- chain.addLast(”sslFilter”, sslFilter);
- System.out.println(”Client SSL ON”);
- }
- }
-
-
-
- public static void addLogger(DefaultIoFilterChainBuilder chain) throws
- Exception {
- if (USE_LOG) {
- chain.addLast(”logger”, new LoggingFilter());
- System.out.println(”Logging ON”);
- }
- }
-
-
-
- public static void addCompress(DefaultIoFilterChainBuilder chain) throws
- Exception {
- if (USE_COMPRESS) {
- chain.addLast(”compress”, new org.apache.mina.filter.CompressionFilter());
- System.out.println(”Compress ON”);
- }
- }
-
-
-
- public static void addCodec(DefaultIoFilterChainBuilder chain) throws
- Exception {
- chain.addLast(”codec”,
- new ProtocolCodecFilter(new SMPPProtocolCodecFactory()));
- }
-
-
-
- public static void addThreadPool(DefaultIoFilterChainBuilder chain) throws
- Exception {
- if (USE_THREADPOOL) {
- chain.addLast(”threadpool”,
- new org.apache.mina.filter.executor.ExecutorFilter());
- System.out.println(”Threadpool ON”);
- }
- }
- public static void main(String[] args) throws IOException, Exception {
- IoAcceptor acceptor = new SocketAcceptor();
- IoAcceptorConfig config = new SocketAcceptorConfig();
- DefaultIoFilterChainBuilder chain = config.getFilterChain();
-
- Utils.addThreadPool(chain);
- Utils.addCompress(chain);
- Utils.addCodec(chain);
- Utils.addLogger(chain);
- SMPPServerSessionHandler handlers = new SMPPServerSessionHandler();
- handlers.getHandles().put(Integer.valueOf(0×00000001),
- new com.lizongbo.smpp.server.handlers.
- BindReceiverHandler());
- handlers.getHandles().put(Integer.valueOf(0×00000002),
- new com.lizongbo.smpp.server.handlers.
- BindTransmitterHandler());
- handlers.getHandles().put(Integer.valueOf(0×00000004),
- new com.lizongbo.smpp.server.handlers.
- SubmitSMHandler());
- handlers.getHandles().put(Integer.valueOf(0×00000006),
- new com.lizongbo.smpp.server.handlers.
- UnbindHandler());
- InetSocketAddress serverAddr = new InetSocketAddress(Utils.PORT);
- acceptor.bind(
- serverAddr, handlers,
- config);
-
- IoServiceManager serviceManager = new IoServiceManager(acceptor);
- serviceManager.startCollectingStats(1000);
- MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
- ObjectName name = new ObjectName(
- “com.lizongbo.smpp.server:type=IoServiceManager”);
- mbs.registerMBean(serviceManager, name);
- System.out.println(”Listening on port ” + Utils.PORT);
- }
分享到:
相关推荐
Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"apache-mina-2.0.4.rar"压缩包包含的是Apache Mina 2.0.4版本的源代码,是深入理解和定制Mina的...
6. **工具集成**:作为标签中的"工具",Apache Mina可以与其他开源工具如Spring、Hibernate等良好集成,为开发者提供更强大的功能和更便捷的开发环境。 7. **源码分析**:由于标签中提到了“源码”,因此,对于有志...
在Java开发领域,Apache Mina和Spring框架的结合使用能够构建高效、可扩展的网络应用。Mina2作为一个轻量级的网络通信框架,提供了高度抽象的API,使得开发者可以方便地处理网络I/O操作。而Spring框架以其强大的依赖...
本资源包含两个 pdf 文档,一本根据官方最新文档 (http://mina.apache.org/mina-project/userguide/user-guide-toc.html) 整理的 mina_2.0_user_guide_en.pdf,一个中文翻译的 mina_2.0_user_guide_cn.pdf。...
Apache MINA 2 是一个基于 Java 语言的网络应用框架,旨在帮助开发者快速构建高性能、可靠、可扩展的网络应用程序。该框架提供了一个灵活的架构,使得开发者可以轻松地构建各种类型的网络应用程序。 Part I - ...
Apache Mina 提供了一个统一的接口来处理多种类型的网络协议,如TCP/IP、UDP、SSL/TLS等。它允许开发者用相同的代码逻辑处理不同的传输协议,大大简化了网络编程的复杂性。Mina 的核心设计原则是事件驱动和非阻塞I/O...
5. **易用性**:Mina提供清晰的API和丰富的文档,使得开发者能够快速上手并进行开发。中文参考手册更是为国内开发者提供了语言上的便利,使得理解Mina的原理和用法更为容易。 6. **社区支持**:作为Apache软件基金...
讨论在Mina中如何处理网络异常,以及实现SSL/TLS加密,保证通信的安全性。 10. **持续学习与社区资源** 探索Apache Mina的官方文档、社区论坛、示例代码库等资源,以便持续学习和解决问题。 通过这个深入教程,...
Apache Mina是一个强大的Java框架,专门用于构建高性能的异步并发网络通信应用。它支持多种通信协议,如TCP/IP、UDP/IP、串口通讯、VM间的管道通讯,以及SSL/TLS和JXM集成。此外,Mina也能够与IoC容器(如Spring和...
3. **mina-integration-spring.jar**:对于使用Spring框架的开发者,此jar包允许将Mina组件无缝集成到Spring应用上下文中,实现依赖注入和管理。 4. **mina-filter-ssl.jar**:提供了SSL/TLS安全套接层支持,允许...
5. **丰富的协议支持**:Mina内建了对多种网络协议的支持,如HTTP、FTP、SSL/TLS等,同时也方便添加新的协议实现。 **mina-integration-beans-2.0.9.jar** 是Mina与JavaBeans集成的库,它使得Mina可以与Spring框架...
9. **MINA与Spring集成**:MINA可以与Spring框架无缝集成,利用Spring的依赖注入和配置管理特性,简化MINA应用的开发和维护。 10. **最佳实践**:学习MINA的过程中,了解最佳实践至关重要,例如如何优化性能,如何...
5. **运行脚本**:启动和停止服务的脚本,如`start.sh`或`stop.sh`,可能用Java的`java -jar`命令或使用Spring Boot的嵌入式服务器来运行。 6. **文档**:可能包含README文件或其他形式的文档,解释如何构建、部署...
- **安全传输**:介绍了Mina支持的SSL过滤器,用于实现加密通信的安全保障。 #### Chapter 12 - 日志过滤器 - **日志管理**:讲解了如何使用Mina的日志过滤器记录应用程序运行时的各种日志信息。 ### Part III - ...
Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发协议服务器和客户端的复杂性。在“Mina 2.0.0包”中,我们可以期待一系列的改进和新特性,使得开发人员能够更高效地构建网络通信应用。 ...
9. **mina-integration**模块:这些是与Mina整合的其他技术,如Spring框架的整合,便于在Spring应用中使用Mina。 10. **mina-example**模块:包含了一些示例代码,可以帮助初学者快速理解如何使用Mina构建实际应用...
3. **协议栈支持**:MINA支持多种网络协议,如TCP/IP、UDP、SSL/TLS等,开发者可以通过简单的API实现自定义协议。 4. **Filter链**:MINA的核心设计之一是Filter(过滤器)机制,它允许开发者创建一系列处理数据的...
默认的网络支持基于高性能异步IO库Apache MINA。 使用MINA,FtpServer可以扩展到大量并发用户。 特性 1、100%纯Java,免费的开源可恢复FTP服务器 2、多平台支持和多线程设计。 3、用户虚拟目录,写入权限,空闲...
Mina提供了异步的I/O操作,支持多种传输协议,如TCP、UDP和SSL/TLS,这使得它在处理高并发、低延迟的网络服务时表现出色。 在"MinaTest"这个压缩包文件中,很可能是包含了一些关于如何使用Mina进行应用开发的示例...
3. **mina-protocol-XXX**:MINA提供了多种协议实现,如TCP、UDP、SSL/TLS等,这些协议的实现库可能包含在压缩包中。 4. **mina-handler-XXX**:这些可能是MINA提供的各种处理器,如协议编解码处理器、日志处理器、...