- 授权协议: GPL
- 开发语言: Java
- 操作系统: 跨平台
- 软件首页: http://git.oschina.net/xmtom/share/tree/master/netty_springmvc
- 软件文档: http://bbs.ranko.cn/forum-5.htm
软件介绍
Netty 整合 SpringFramework 代码示例。
启动类代码:
package cn.ranko.api;
import cn.ranko.framework.core.RankoServer;
/**
* Created by zhujun on 2016/8/11.
*
* 测试地址:http://localhost:8200/api-demo/test.action
* 内容返回:{"demoId":1,"demoStr":"test1"}
*
*/
public class ApiServer {
private static RankoServer server;
public static void main(String[] args) throws Exception {
int serverPort = Integer.parseInt(args.length > 0 && args[0] != null ? args[0] : "8200");
server = new RankoServer(serverPort);
server.start();
}
}整合代码:
package cn.ranko.framework.core;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.codec.http.HttpObjectAggregator;
import io.netty.handler.codec.http.HttpRequestDecoder;
import io.netty.handler.codec.http.HttpResponseEncoder;
import io.netty.handler.stream.ChunkedWriteHandler;
import org.apache.log4j.Logger;
import org.springframework.mock.web.MockServletContext;
import javax.servlet.ServletException;
/**
* Created by zhujun on 2016/6/20.
*/
public class RankoServer {
private Logger logger = Logger.getLogger(getClass().getName());
private int serverPort;
private ServerBootstrap bootstrap;
public RankoServer(int serverPort) {
this.serverPort = serverPort;
}
public void start() throws InterruptedException, ServletException {
if (this.bootstrap != null) {
throw new IllegalStateException("Server is started, please do not repeat");
}
bootstrap = new ServerBootstrap();
ApplicationContextHolder.init();
bootstrap.group(new NioEventLoopGroup(), new NioEventLoopGroup()).channel(
NioServerSocketChannel.class).childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel socketChannel) throws Exception {
ChannelPipeline pipeline = socketChannel.pipeline();
pipeline.addLast("decoder", new HttpRequestDecoder());
pipeline.addLast("aggregator", new HttpObjectAggregator(65536)); // 上传限制3M
pipeline.addLast("encoder", new HttpResponseEncoder());
pipeline.addLast("chunkedWriter", new ChunkedWriteHandler());
pipeline.addLast("handler",new DispatcherServletHandler(ApplicationContextHolder.getDispatcherServlet()));
}
});
ChannelFuture f = bootstrap.bind(this.serverPort).sync();// 配置完成,开始绑定server,通过调用sync同步方法阻塞直到绑定成功
f.channel().closeFuture().sync();// 应用程序会一直等待,直到channel关闭
logger.info("server listens to port " + this.serverPort);
}
}
奥美的数字营销观点
[美] 肯特·沃泰姆、[美] 伊恩·芬威克 / 台湾奥美互动营销公司 / 中信出版社 / 2009-6 / 45.00元
目前,媒体的数字化给营销人带来了重大影响。新媒体世界具有多重特性,它赋予企业大量机会,同时也带来挑战。营销人有了数量空前的方式来与消费者互动。然而,许多人面对变革的速度感到压力巨大,而且不知道该如何完全发挥这些新选择所带来的优势。 本书为读者提供了如何运用主要数字媒体渠道的方法;随附了领先的营销人如何在工作中有效运用这些渠道的最佳案例;提供了数字营销的十二个基本原则;协助数字营销人了解什么是......一起来看看 《奥美的数字营销观点》 这本书的介绍吧!
