首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EventLoopGroup和BIO操作。

EventLoopGroup和BIO操作。
EN

Stack Overflow用户
提问于 2013-06-06 06:17:53
回答 1查看 161关注 0票数 0

我有Netty Web服务器,它应该使用Hibernate检索数据并向客户端返回响应。

所以我想知道我的实现是否正确

代码语言:javascript
复制
   ChannelPipeline pipeline = ch.pipeline();
        EventExecutorGroup ex = new DefaultEventExecutorGroup(64);

        pipeline.addLast("decoder", new HttpRequestDecoder());
        pipeline.addLast("aggregator", new HttpObjectAggregator(65536));
        pipeline.addLast("encoder", new HttpResponseEncoder());
        pipeline.addLast("chunkedWriter", new ChunkedWriteHandler());

        pipeline.addLast(ex,"handler", new HttpWebServerHandler());

然后在messageReceived方法内部:

代码语言:javascript
复制
    @Override
    public void messageReceived(ChannelHandlerContext ctx, FullHttpRequest request)
            throws Exception {
         if (!request.getDecoderResult().isSuccess()) {
                sendError(ctx, BAD_REQUEST);
                return;
            }
          ctx.executor().execute(new MyRunnable(ctx)); 
    }

在Runnable内部:

代码语言:javascript
复制
@Override
public void run() {

        SomeObejct so = HibernateTemplate.getSomeObject() ;
                    String serializedSo = serialize(so);
          FullHttpResponse res = new DefaultFullHttpResponse(
                    HTTP_1_1, OK, Unpooled.copiedBuffer(serializedSo, CharsetUtil.UTF_8));
            res.headers().set(CONTENT_TYPE, "text/plain; charset=UTF-8");                      ctx.write(res).addListener(ChannelFutureListener.CLOSE);     
}

我做得对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-06 14:21:43

是的,看起来是这样的。您可能需要考虑的是从ChannelPipeline中删除HttpObjectAggregator,从而节省一些内存开销。但请注意,您需要自己处理不同的HTTP消息部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16950846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档