MinaServer類:
[java] view plain copy print ?
- 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("服務端啟動異常....");
- }
- }
- }
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配置監聽器:
[html] view plain copy print ?
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <listener>
- <listener-class>com.telek.mina.server.MinaServer</listener-class>
- </listener>