mina框架和spring的整合使用

MinaServer类:

  1. import java.net.InetSocketAddress;  
  2.   
  3. import javax.servlet.ServletContextEvent;  
  4. import javax.servlet.ServletContextListener;  
  5. import javax.servlet.http.HttpSessionEvent;  
  6. import javax.servlet.http.HttpSessionListener;  
  7.   
  8. import org.apache.mina.core.session.IdleStatus;  
  9. import org.apache.mina.filter.codec.ProtocolCodecFilter;  
  10. import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;  
  11. import org.apache.mina.filter.executor.ExecutorFilter;  
  12. import org.apache.mina.transport.socket.nio.NioSocketAcceptor;  
  13.   
  14. import com.utils.LogUtil;  
  15.   
  16. public class MinaServer implements ServletContextListener, HttpSessionListener {  
  17.     private static NioSocketAcceptor acceptor;  
  18.     private static final int port = 9999;  
  19.     private static final LogUtil logUtil = LogUtil.getLogUtil(MinaServer.class);  
  20.   
  21.     public void sessionCreated(HttpSessionEvent se) {  
  22.   
  23.     }  
  24.   
  25.     public void sessionDestroyed(HttpSessionEvent se) {  
  26.   
  27.     }  
  28.   
  29.     // 停止MINA服务  
  30.     public void contextDestroyed(ServletContextEvent sce) {  
  31.         try {  
  32.             MinaServer.acceptor.unbind();  
  33.             MinaServer.acceptor.dispose();  
  34.             logUtil.customLog("Mina服务停止...");  
  35.         } catch (Exception e) {  
  36.             logUtil.customLog(e);  
  37.         }  
  38.     }  
  39.   
  40.     // 启动MINA服务  
  41.     public void contextInitialized(ServletContextEvent sce) {  
  42.         try {  
  43.             // 创建一个非阻塞的server端的Socket  
  44.             acceptor = new NioSocketAcceptor();  
  45.             // 设置过滤器  
  46.             acceptor.getFilterChain().addLast(  
  47.                     "serverCodec",  
  48.                     new ProtocolCodecFilter(  
  49.                             new ObjectSerializationCodecFactory()));  
  50.             acceptor.getFilterChain().addLast("ServerFilter",  
  51.                     new ExecutorFilter());  
  52.             // 设置读取数据的缓冲区大小  
  53.             acceptor.getSessionConfig().setReadBufferSize(1024*102400);  
  54.             // 读写通道10秒内无操作进入空闲状态  
  55.             acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);  
  56.             // 添加逻辑处理器  
  57.             acceptor.setHandler(new MinaServerHandler());  
  58.             // 绑定端口  
  59.             try {  
  60.                 acceptor.bind(new InetSocketAddress(port));  
  61.             } catch (Exception e) {  
  62.             }  
  63.             logUtil.customLog("服务端启动成功...     端口号为:" + port);  
  64.         } catch (Exception e) {  
  65.             logUtil.customLog("服务端启动异常....");  
  66.         }  
  67.   
  68.     }  
  69.   
  70. }  
import java.net.InetSocketAddress;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
import org.apache.mina.filter.executor.ExecutorFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

import com.utils.LogUtil;

public class MinaServer implements ServletContextListener, HttpSessionListener {
	private static NioSocketAcceptor acceptor;
	private static final int port = 9999;
	private static final LogUtil logUtil = LogUtil.getLogUtil(MinaServer.class);

	public void sessionCreated(HttpSessionEvent se) {

	}

	public void sessionDestroyed(HttpSessionEvent se) {

	}

	// 停止MINA服务
	public void contextDestroyed(ServletContextEvent sce) {
		try {
			MinaServer.acceptor.unbind();
			MinaServer.acceptor.dispose();
			logUtil.customLog("Mina服务停止...");
		} catch (Exception e) {
			logUtil.customLog(e);
		}
	}

	// 启动MINA服务
	public void contextInitialized(ServletContextEvent sce) {
		try {
			// 创建一个非阻塞的server端的Socket
			acceptor = new NioSocketAcceptor();
			// 设置过滤器
			acceptor.getFilterChain().addLast(
					"serverCodec",
					new ProtocolCodecFilter(
							new ObjectSerializationCodecFactory()));
			acceptor.getFilterChain().addLast("ServerFilter",
					new ExecutorFilter());
			// 设置读取数据的缓冲区大小
			acceptor.getSessionConfig().setReadBufferSize(1024*102400);
			// 读写通道10秒内无操作进入空闲状态
			acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
			// 添加逻辑处理器
			acceptor.setHandler(new MinaServerHandler());
			// 绑定端口
			try {
				acceptor.bind(new InetSocketAddress(port));
			} catch (Exception e) {
			}
			logUtil.customLog("服务端启动成功...     端口号为:" + port);
		} catch (Exception e) {
			logUtil.customLog("服务端启动异常....");
		}

	}

}

web.xml配置监听器:

  1. <listener>  
  2.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  3. </listener>  
  4. <listener>  
  5.     <listener-class>com.telek.mina.server.MinaServer</listener-class>  
  6. </listener>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值