@Override public void start() throws SmppChannelException { if (isDestroyed()) { throw new SmppChannelException("Unable to start: server is destroyed"); } try { ChannelFuture f = this.serverBootstrap.bind(new InetSocketAddress(configuration.getPort())); // wait until the connection is made successfully boolean timeout = !f.await(configuration.getBindTimeout()); if (timeout || !f.isSuccess()) throw new SmppChannelException( "Can't bind to port " + configuration.getPort() + " after " + configuration.getBindTimeout() + " milliseconds"); logger.info("{} started on SMPP port [{}]", configuration.getName(), configuration.getPort()); serverChannel = f.channel(); } catch (ChannelException e) { throw new SmppChannelException(e.getMessage(), e); } catch (InterruptedException e) { throw new SmppChannelException(e.getMessage(), e); } }
public static HotRodServer startHotRodServer( EmbeddedCacheManager cacheManager, HotRodServerConfigurationBuilder builder) { // TODO: This is very rudimentary!! HotRodTestingUtil needs a more robust solution where ports // are generated randomly and retries if already bound HotRodServer server = null; int maxTries = 10; int currentTries = 0; ChannelException lastException = null; while (server == null && currentTries < maxTries) { try { server = HotRodTestingUtil.startHotRodServer( cacheManager, uniquePort.incrementAndGet(), builder); } catch (ChannelException e) { if (!(e.getCause() instanceof BindException)) { throw e; } else { log.debug("Address already in use: [" + e.getMessage() + "], so let's try next port"); currentTries++; lastException = e; } } } if (server == null && lastException != null) throw lastException; return server; }
@Override public void listen(String host, int port, int backlog, TLSParams tls) { SSLContext ssl = null; if (tls != null) { try { ssl = makeSSLContext(tls); } catch (NoSuchAlgorithmException e) { throw new EvaluatorException(e.toString()); } catch (KeyManagementException e) { throw new EvaluatorException(e.toString()); } } log.debug("About to listen for HTTP on {}:{}", host, port); if (ssl != null) { log.debug("Using SSLContext " + ssl); } try { server = NettyFactory.get().createServer(port, host, backlog, makePipeline(tls, ssl)); log.debug("Listening on port {}", port); } catch (ChannelException ce) { stub.onError(ce.getMessage()); stub.onClose(null, null); } }