接上一篇: 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);
- }
分享到:
相关推荐
本资源包含两个 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 - ...
默认的网络支持基于高性能异步IO库Apache MINA。 使用MINA,FtpServer可以扩展到大量并发用户。 特性 1、100%纯Java,免费的开源可恢复FTP服务器 2、多平台支持和多线程设计。 3、用户虚拟目录,写入权限,空闲...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...
5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...