本文章转载自:http://www.itstack.org/?post=14
前言介绍:
本案例主要介绍如何把Netty服务端的启动交给Spring,让web启动的时候把Netty服务端也随之启动起来。
如果有对Spring的不理解,可以自行补充学习。
环境需求:
1、jdk1.7
2、MyEclipse8.5【jdk配置到1.7】
3、tomcat1.7
4、Netty5.0
5、网络调试助手
6、Spring需要Jar包;
commons-logging-1.1.1.jar
servlet-api-3.0-alpha-1.jar
spring-aop-3.2.0.RELEASE.jar
spring-beans-3.2.0.RELEASE.jar
spring-context-3.2.0.RELEASE.jar
spring-core-3.2.0.RELEASE.jar
spring-expression-3.2.0.RELEASE.jar
spring-tx-3.1.1.RELEASE.jar
spring-web-3.2.0.RELEASE.jar
工程截图:
代码部分:
*代码部分比较简单,而且工程可以在下面下载
Spring后直接实例化NettyExecutorService
- package com.itstack.service;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import org.springframework.stereotype.Service;
- import com.itstack.netty.NettyServer;
- @Service
- public class NettyExecutorService {
- public NettyExecutorService() {
- //为了颜色一致,我们用管理Err输出
- System.err.println("---------- Spring自动加载 ---------- ");
- System.err.println("---------- 启动Netty线程池 ---------- ");
- /* 说明
- * 如果此处不用线程池,直接用server.run()启动【直接调用方法而已】
- * 那么你会看到tomcat启动过程中,在启动了Netty后就会一直等待连接
- */
- NettyServer server = new NettyServer();
- //线程池
- ExecutorService es = Executors.newCachedThreadPool();
- //启动线程池
- es.execute(server);
- }
- }
配置文件:
spring.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd
- ">
- <!-- 自动扫描(自动注入) -->
- <context:component-scan base-package="com.itstack" />
- </beans>
web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <display-name></display-name>
- <!-- 加载配置信息 -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring.xml
- </param-value>
- </context-param>
- <!-- 字符集过滤 -->
- <filter>
- <description>字符集过滤器</description>
- <filter-name>encodingFilter</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <description>字符集编码</description>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <!-- 加载spring -->
- <listener>
- <description>spring监听器</description>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <listener>
- <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
- </listener>
- <!-- 设置session -->
- <session-config>
- <session-timeout>15</session-timeout>
- </session-config>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
测试运行:
1、启动tomcat
2、控制台输出:【重要部分】
3、开启网络调试助手,连接服务端7397
4、控制台输出:
/192.168.2.103:7397 channelActive
ee8ed924Thu Jan 01 10:06:29 CST 2015 http://www.itstack.org
ee8ed924Thu Jan 01 10:06:29 CST 2015 http://www.itstack.org
ee8ed924Thu Jan 01 10:06:30 CST 2015 http://www.itstack.org
ee8ed924Thu Jan 01 10:06:31 CST 2015 http://www.itstack.org
ee8ed924Thu Jan 01 10:06:31 CST 2015 http://www.itstack.org
ee8ed924Thu Jan 01 10:06:32 CST 2015 http://www.itstack.org
ee8ed924Thu Jan 01 10:06:32 CST 2015 http://www.itstack.org
ee8ed924Thu Jan 01 10:06:32 CST 2015 http://www.itstack.org
/192.168.2.103:7397 channelInactive
源码下载: