@Override public void run() { try { LOG.trace("Re-connecting to {} if needed", configuration.getAddress()); doReconnectIfNeeded(); } catch (Exception e) { LOG.warn("Error during re-connect to " + configuration.getAddress() + ". Will attempt again in " + configuration.getReconnectInterval() + " millis. This exception is ignored.", e); } } }, configuration.getReconnectInterval(), TimeUnit.MILLISECONDS);
public void init(ThreadFactory threadFactory, NettyServerBootstrapConfiguration configuration, ChannelInitializer<Channel> pipelineFactory) { this.threadFactory = threadFactory; this.configuration = configuration; this.pipelineFactory = pipelineFactory; this.allChannels = configuration.getChannelGroup() != null ? configuration.getChannelGroup() : new DefaultChannelGroup(SingleTCPNettyServerBootstrapFactory.class.getName(), ImmediateEventExecutor.INSTANCE); }
EventLoopGroup wg = configuration.getWorkerGroup(); if (wg == null) { .withNativeTransport(configuration.isNativeTransport()) .withWorkerCount(configuration.getWorkerCount()) .withName("NettyServerTCPWorker") .build(); if (configuration.isNativeTransport()) { bootstrap.group(wg).channel(EpollDatagramChannel.class); } else { bootstrap.option(ChannelOption.SO_REUSEADDR, configuration.isReuseAddress()); bootstrap.option(ChannelOption.SO_SNDBUF, configuration.getSendBufferSize()); bootstrap.option(ChannelOption.SO_RCVBUF, configuration.getReceiveBufferSize()); bootstrap.option(ChannelOption.SO_BROADCAST, configuration.isBroadcast()); bootstrap.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, configuration.getConnectTimeout()); if (configuration.getReceiveBufferSizePredictor() > 0) { bootstrap.option(ChannelOption.RCVBUF_ALLOCATOR, new FixedRecvByteBufAllocator(configuration.getReceiveBufferSizePredictor())); if (configuration.getBacklog() > 0) { bootstrap.option(ChannelOption.SO_BACKLOG, configuration.getBacklog()); Map<String, Object> options = configuration.getOptions(); if (options != null) { for (Map.Entry<String, Object> entry : options.entrySet()) {
EventLoopGroup bg = configuration.getBossGroup(); EventLoopGroup wg = configuration.getWorkerGroup(); .withNativeTransport(configuration.isNativeTransport()) .withBossCount(configuration.getBossCount()) .withName("NettyServerTCPBoss") .build(); .withNativeTransport(configuration.isNativeTransport()) .withWorkerCount(configuration.getWorkerCount()) .withName("NettyServerTCPWorker") .build(); if (configuration.isNativeTransport()) { serverBootstrap.group(bg, wg).channel(EpollServerSocketChannel.class); } else { serverBootstrap.group(bg, wg).channel(NioServerSocketChannel.class); serverBootstrap.childOption(ChannelOption.SO_KEEPALIVE, configuration.isKeepAlive()); serverBootstrap.childOption(ChannelOption.TCP_NODELAY, configuration.isTcpNoDelay()); serverBootstrap.option(ChannelOption.SO_REUSEADDR, configuration.isReuseAddress()); serverBootstrap.childOption(ChannelOption.SO_REUSEADDR, configuration.isReuseAddress()); serverBootstrap.childOption(ChannelOption.CONNECT_TIMEOUT_MILLIS, configuration.getConnectTimeout()); if (configuration.getBacklog() > 0) { serverBootstrap.option(ChannelOption.SO_BACKLOG, configuration.getBacklog()); Map<String, Object> options = configuration.getOptions(); if (options != null) { for (Map.Entry<String, Object> entry : options.entrySet()) {
private SSLContext createSSLContext(CamelContext camelContext, NettyServerBootstrapConfiguration configuration) throws Exception { if (!configuration.isSsl()) { return null; if (configuration.getSslContextParameters() != null) { answer = configuration.getSslContextParameters().createSSLContext(camelContext); } else { if (configuration.getKeyStoreFile() == null && configuration.getKeyStoreResource() == null) { LOG.debug("keystorefile is null"); if (configuration.getTrustStoreFile() == null && configuration.getTrustStoreResource() == null) { LOG.debug("truststorefile is null"); if (configuration.getPassphrase().toCharArray() == null) { LOG.debug("passphrase is null"); if (configuration.getKeyStoreFile() != null || configuration.getTrustStoreFile() != null) { sslEngineFactory = new SSLEngineFactory(); answer = sslEngineFactory.createSSLContext(camelContext.getClassResolver(), configuration.getKeyStoreFormat(), configuration.getSecurityProvider(), "file:" + configuration.getKeyStoreFile().getPath(), "file:" + configuration.getTrustStoreFile().getPath(), configuration.getPassphrase().toCharArray()); } else { sslEngineFactory = new SSLEngineFactory(); answer = sslEngineFactory.createSSLContext(camelContext.getClassResolver(), configuration.getKeyStoreFormat(), configuration.getSecurityProvider(), configuration.getKeyStoreResource(),
protected void startServerBootstrap() throws Exception { EventLoopGroup wg = configuration.getWorkerGroup(); .withNativeTransport(configuration.isNativeTransport()) .withWorkerCount(configuration.getWorkerCount()) .withName("NettyServerTCPWorker") .build(); if (configuration.isNativeTransport()) { clientBootstrap.channel(EpollSocketChannel.class); } else { clientBootstrap.option(ChannelOption.SO_KEEPALIVE, configuration.isKeepAlive()); clientBootstrap.option(ChannelOption.TCP_NODELAY, configuration.isTcpNoDelay()); clientBootstrap.option(ChannelOption.SO_REUSEADDR, configuration.isReuseAddress()); clientBootstrap.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, configuration.getConnectTimeout()); ChannelFuture channelFuture = clientBootstrap.connect(new InetSocketAddress(configuration.getHost(), configuration.getPort())); if (LOG.isDebugEnabled()) { LOG.debug("Created new TCP client bootstrap connecting to {}:{} with options: {}", new Object[]{configuration.getHost(), configuration.getPort(), clientBootstrap}); LOG.info("ClientModeServerBootstrap binding to {}:{}", configuration.getHost(), configuration.getPort()); channel = openChannel(channelFuture);
protected Channel openChannel(final ChannelFuture channelFuture) throws Exception { LOG.trace("Waiting for operation to complete {} for {} millis", channelFuture, configuration.getConnectTimeout()); if (configuration.isReconnect()) { scheduleReconnect(channelFuture); return null; } else { ConnectException cause = new ConnectException("Cannot connect to " + configuration.getAddress()); if (channelFuture.cause() != null) { cause.initCause(channelFuture.cause()); LOG.debug("Creating connector to address: {}", configuration.getAddress()); if (configuration.isReconnect()) { answer.closeFuture().addListener(new ChannelFutureListener() { @Override
protected void doReconnectIfNeeded() throws Exception { if (channel == null || !channel.isActive()) { LOG.debug("ClientModeServerBootstrap re-connect to {}:{}", configuration.getHost(), configuration.getPort()); ChannelFuture connectFuture = clientBootstrap.connect(new InetSocketAddress(configuration.getHost(), configuration.getPort())); channel = openChannel(connectFuture); } }
public void init(CamelContext camelContext, NettyServerBootstrapConfiguration configuration, ChannelInitializer<Channel> pipelineFactory) { this.camelContext = camelContext; this.configuration = configuration; this.pipelineFactory = pipelineFactory; this.allChannels = configuration.getChannelGroup() != null ? configuration.getChannelGroup() : new DefaultChannelGroup(SingleTCPNettyServerBootstrapFactory.class.getName(), ImmediateEventExecutor.INSTANCE); }
protected void stopServerBootstrap() { // close all channels LOG.info("ConnectionlessBootstrap disconnecting from {}:{}", configuration.getHost(), configuration.getPort()); LOG.trace("Closing {} channels", allChannels.size()); allChannels.close().awaitUninterruptibly(); // and then shutdown the thread pools if (workerGroup != null) { workerGroup.shutdownGracefully(); workerGroup = null; } }
protected void stopServerBootstrap() { // close all channels LOG.info("ServerBootstrap unbinding from {}:{}", configuration.getHost(), configuration.getPort()); LOG.trace("Closing {} channels", allChannels.size()); allChannels.close().awaitUninterruptibly(); // and then shutdown the thread pools if (bossGroup != null) { bossGroup.shutdownGracefully(); bossGroup = null; } if (workerGroup != null) { workerGroup.shutdownGracefully(); workerGroup = null; } }