1. 程式人生 > >netty5.0 HTTPServer服務例項

netty5.0 HTTPServer服務例項

package com.lv.httpServer;

import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.EventLoopGroup;
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.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class HTTPServer {
public static Logger LOG = LogManager.getLogger(HTTPServer.class);
public void run(final int port) throws Exception {
EventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch)
throws Exception {
ch.pipeline().addLast("http-decoder",
new HttpRequestDecoder());
ch.pipeline().addLast("http-aggregator",
new HttpObjectAggregator(65536));
ch.pipeline().addLast("http-encoder",
new HttpResponseEncoder());
ch.pipeline().addLast("http-chunked",
new ChunkedWriteHandler());
ch.pipeline().addLast("httpServerHandler",
new HttpServerInboundHandler());
}
});
ChannelFuture future = b.bind("127.0.0.1", port).sync();
System.out.println("HTTPServer伺服器啟動,網址是 : " + "http://127.0.0.1:"
+ port );
future.channel().closeFuture().sync();
} finally {
bossGroup.shutdownGracefully();
workerGroup.shutdownGracefully();
}
}
public static void main(String[] args) throws Exception {
int port = 8084;
if (args.length > 0) {
try {
port = Integer.parseInt(args[0]);
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
new HTTPServer().run(port);
}
}

相關推薦

netty5.0 HTTPServer服務例項

package com.lv.httpServer;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import

Python httpServer服務器(初級)

prot link 相關 esp 表達式 title 處理 版本 web服務器 使用原生的python開發的web服務器,入門級! #!/usr/bin/python # -*- coding: UTF-8 -*- import os #Python的標準

一步步搭建最簡單author2.0認證服務

web api ref pen pass 比較 mar prim uri part oauth2.0 最早接觸這個概念是在做微信訂閱號開發。當時還被深深的繞進去,關於oauth2.0的解釋網上有好多,而且都講解的比較詳細,下面給大家價格參考資料。 http://owin.o

Netty5.0架構剖析和源碼解讀》【PDF】下載

推薦 作者 服務 inux 推廣 內容 關註 bootstra 中間件 《Netty5.0架構剖析和源碼解讀》【PDF】下載鏈接: https://u253469.pipipan.com/fs/253469-230062545 內容簡介 Netty 是個異步的事件

nodejs實現OAuth2.0授權服務

type syn alt 地理 http important 有效 路由 後者 OAuth是一種開發授權的網絡標準,全拼為open authorization,即開放式授權,最新的協議版本是2.0。 舉個栗子: 有一個"雲沖印"的網站,可以將用戶儲存在G

Docker Compose 1.18.0服務編排詳解

ubun 它的 snapshot rep har container cdb 單獨 lib 一個使用Docker容器的應用,通常由多個容器組成。使用Docker Compose,不再需要使用shell腳本來啟動容器。在配置文件中,所有的容器通過services來定義,然後使

[日常填坑]centos7.0+版本服務器安裝jdk9或者jdk10

window 接下來 oot x64 系統 tar root system OS 首先,因為自從更新到jdk9版本以後,jdk路徑配置就不再跟以前的一樣 比如:jre文件夾不在jdk文件夾裏面,而是單獨出來 所以,需要到Oracle官網下載jdk文件和jre文件到本地

zbb20180930 java,nio,netty Netty5.0用法

端口 方法 shu under 創建客戶端 ride 接收數據 sock scope Netty5.0用法 Maven坐標 <dependencies> <!-- https://mvnrepository.co

0服務啟動前之日誌欄位和格式

1、日誌聚合體的欄位和格式,日誌上報策略 公有欄位 createAtMs:日誌建立時間 appId :應用唯一標識,如微信、qq、微博 tenantId :租戶唯一標識,企業使用者 deviceid :收集裝置唯一標識 appVersion:應用版本 aPPChannel:應

記錄阿里雲ECS(Centos7.4)安裝mysql 8.0.X服務

#*.rpm介紹 大多數二進位制rpm包都包含在名稱中倒數第二個欄位中編譯rpm的體系結構。.rpm軟體包有那麼幾種 *.src.rpm 源程式包,要先通過編譯才能安裝 *.noarch.rpm 該包適用於任何架構 *.i*86.rpm 該包適用於intel cpu的電腦上執行 *.amd

SpringCloud2.0服務提供者搭建

    pom檔案: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation

CAS4.0.3服務的搭建實戰三【編寫shiro-cas客戶端】

shiro與cas可以實現無縫的整合,只需要加入幾個依賴的jar包,修改部分shiro的配置檔案,定義一個自己的casRealm 專案結構 一、在pom中加入cas相關依賴 <dependency> <groupId>org

CAS4.0.3服務的搭建實戰二【自定義登陸介面、登陸驗證、返回使用者資訊】

一切技術框架都會有一個使用者自定義的入口檔案,cas中自定義配置檔案在deployerConfigContext.xml中。 一、自定義登陸驗證 Tips:本專案使用mysql資料庫,因此已經在pom中匯入mysql的驅動。 開啟deployerConfigCo

CAS4.0.3服務的搭建實戰一【基於普通web專案】

一、從官網下載對應的war包 1.地址一:https://github.com/apereo/cas/releases/tag/v4.0.3 2.地址二:http://central.maven.org/maven2/org/jasig/cas/cas-server-webapp/4.0

springcloud微服務例項

SOA 框架優缺點 打車系統微服務 微服務結構圖 例項 依賴 <parent> <groupId>org.springframework.boot</groupId>

基於Netty5.0中級案例五之Netty與C#Socket收發字串進行通訊

package com.itstack.netty; import java.nio.charset.Charset; import io.netty.channel.ChannelInitializer; import io.netty.channel.socket.SocketChannel

服務部署之單個主機多個服務例項

背景 您已應用微服務架構模式並將系統架構為一組服務。每個服務都部署為一組服務例項,以實現吞吐量和可用性。 問題 如何打包和部署服務? 訴求 服務使用各種語言,框架和框架版本編寫 每個服務由多個服務例項組成,用於吞吐量和可用性 服務必須可獨立部署和擴充套件 服務

SpringBoot整合CXF完成webservice服務例項(包括使用者驗證)

最近接到了一個對外發布介面的需求,所以找到CXF寫了一個簡單例子僅供參考。考慮到方便呼叫,服務端資料採用Map封裝,這樣不需要客戶端建立相關實體類就可以拿到目標資料。 一、專案目錄 二、pom.xml依賴引入 注意: 依賴版本不同,程式碼也會有不同之處:spr

docker1:拉取mysql映象,啟動刪除服務例項,操作mysql

拉取映象$ docker pull daocloud.io/library/mysql:latestdaocloud.io/library/mysql:latest :1.從這個網址https://hub.daocloud.io/repos/fa51c1d6-9dc2-49d

《連載 | 物聯網框架ServerSuperIO教程》2.服務例項的配置引數說明

#region 全域性 [Category("1.全域性"), DisplayName("ServerSession"), Description("標識服務的唯ID,一般為Guid"), DefaultValue(""),