use of org.apache.flink.shaded.netty4.io.netty.bootstrap.ServerBootstrap in project jersey by jersey.
the class NettyHttpContainerProvider method createServer.
/**
* Create and start Netty server.
*
* @param baseUri base uri.
* @param configuration Jersey configuration.
* @param sslContext Netty SSL context (can be null).
* @param block when {@code true}, this method will block until the server is stopped. When {@code false}, the
* execution will
* end immediately after the server is started.
* @return Netty channel instance.
* @throws ProcessingException when there is an issue with creating new container.
*/
public static Channel createServer(final URI baseUri, final ResourceConfig configuration, SslContext sslContext, final boolean block) throws ProcessingException {
// Configure the server.
final EventLoopGroup bossGroup = new NioEventLoopGroup(1);
final EventLoopGroup workerGroup = new NioEventLoopGroup();
final NettyHttpContainer container = new NettyHttpContainer(configuration);
try {
ServerBootstrap b = new ServerBootstrap();
b.option(ChannelOption.SO_BACKLOG, 1024);
b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).childHandler(new JerseyServerInitializer(baseUri, sslContext, container));
int port = getPort(baseUri);
Channel ch = b.bind(port).sync().channel();
ch.closeFuture().addListener(new GenericFutureListener<Future<? super Void>>() {
@Override
public void operationComplete(Future<? super Void> future) throws Exception {
container.getApplicationHandler().onShutdown(container);
bossGroup.shutdownGracefully();
workerGroup.shutdownGracefully();
}
});
if (block) {
ch.closeFuture().sync();
return ch;
} else {
return ch;
}
} catch (InterruptedException e) {
throw new ProcessingException(e);
}
}
use of org.apache.flink.shaded.netty4.io.netty.bootstrap.ServerBootstrap in project android by JetBrains.
the class LocalTestServer method start.
public void start() throws Exception {
ServerBootstrap b = new ServerBootstrap();
myEventLoopGroup = new OioEventLoopGroup();
b.group(myEventLoopGroup).channel(OioServerSocketChannel.class).childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline p = ch.pipeline();
p.addLast(new HttpServerCodec());
// Note: Netty's decompressor uses jcraft jzlib, which is not exported as a library
// p.addLast(new HttpContentDecompressor());
// big enough to collect a full thread dump
p.addLast(new HttpObjectAggregator(32 * 1024));
p.addLast(new ChannelInboundHandlerAdapter() {
@Override
public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
ctx.flush();
}
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
if (!(msg instanceof FullHttpRequest)) {
return;
}
FullHttpResponse response = myResponseSupplier.apply((FullHttpRequest) msg);
response.headers().set(HttpHeaderNames.CONTENT_TYPE, "text/plain");
response.headers().set(HttpHeaderNames.CONTENT_LENGTH, response.content().readableBytes());
ctx.write(response).addListener(ChannelFutureListener.CLOSE);
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
ctx.write(cause.toString()).addListener(ChannelFutureListener.CLOSE);
}
});
}
});
myChannel = b.bind(myPort).sync().channel();
}
use of org.apache.flink.shaded.netty4.io.netty.bootstrap.ServerBootstrap in project carbondata by apache.
the class DictionaryServer method bindToPort.
/**
* Binds dictionary server to an available port.
*
* @param port
*/
private void bindToPort(int port) {
long start = System.currentTimeMillis();
// Configure the server.
int i = 0;
while (i < 10) {
int newPort = port + i;
try {
ServerBootstrap bootstrap = new ServerBootstrap();
bootstrap.group(boss, worker);
bootstrap.channel(NioServerSocketChannel.class);
bootstrap.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast("LengthDecoder", new LengthFieldBasedFrameDecoder(1048576, 0, 2, 0, 2));
pipeline.addLast("DictionaryServerHandler", dictionaryServerHandler);
}
});
bootstrap.childOption(ChannelOption.SO_KEEPALIVE, true);
bootstrap.bind(newPort).sync();
LOGGER.audit("Dictionary Server started, Time spent " + (System.currentTimeMillis() - start) + " Listening on port " + newPort);
this.port = newPort;
break;
} catch (Exception e) {
LOGGER.error(e, "Dictionary Server Failed to bind to port:");
if (i == 9) {
throw new RuntimeException("Dictionary Server Could not bind to any port");
}
}
i++;
}
}
use of org.apache.flink.shaded.netty4.io.netty.bootstrap.ServerBootstrap in project asterixdb by apache.
the class HttpServer method doStart.
protected void doStart() throws InterruptedException {
/*
* This is a hacky way to ensure that IServlets with more specific paths are checked first.
* For example:
* "/path/to/resource/"
* is checked before
* "/path/to/"
* which in turn is checked before
* "/path/"
* Note that it doesn't work for the case where multiple paths map to a single IServlet
*/
Collections.sort(servlets, (l1, l2) -> l2.getPaths()[0].length() - l1.getPaths()[0].length());
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).childOption(ChannelOption.WRITE_BUFFER_WATER_MARK, WRITE_BUFFER_WATER_MARK).handler(new LoggingHandler(LogLevel.DEBUG)).childHandler(new HttpServerInitializer(this));
channel = b.bind(port).sync().channel();
}
use of org.apache.flink.shaded.netty4.io.netty.bootstrap.ServerBootstrap in project jackrabbit-oak by apache.
the class NetworkErrorProxy method connect.
public void connect() throws Exception {
log.info("Starting proxy with flip={}, skip={},{}", flipPosition, skipPosition, skipLength);
ServerBootstrap b = new ServerBootstrap().group(boss, worker).channel(NioServerSocketChannel.class).childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) throws Exception {
ch.pipeline().addLast(new ForwardHandler(host, outboundPort, flipPosition, skipPosition, skipLength));
}
});
ChannelFuture f = b.bind(this.inboundPort);
if (f.awaitUninterruptibly(1, TimeUnit.SECONDS)) {
log.debug("Bound on port {}", inboundPort);
} else {
log.debug("Binding on port {} timed out", inboundPort);
}
server = f.channel();
}
Aggregations