package microservices.sample.persistence.ratpack; import com.beust.jcommander.JCommander; import com.beust.jcommander.Parameter; import microservices.sample.base.AvailablePortProvider; import microservices.sample.base.NetUtils; import microservices.sample.base.ratpack.BaseModule; import microservices.sample.base.ratpack.BaseServer; import microservices.sample.base.ratpack.ServerException; import microservices.sample.persistence.PersistenceModule; import ratpack.server.ServerEnvironment; import ratpack.server.internal.DefaultServerConfigBuilder; import java.net.InetAddress; import java.net.UnknownHostException; /** * @author mamad * @since 17/03/15. */ public class PersistenceServer extends BaseServer { public static final String VERSION = "v1"; public PersistenceServer(int port, String ip) throws ServerException, UnknownHostException { super(chain -> chain.prefix(VERSION, PersistenceHandlerFactory.class) .handler(ctx -> ctx.render("Persistence Service - " + VERSION)), //create ratpack config DefaultServerConfigBuilder.noBaseDir(ServerEnvironment.env()).port(port).address(InetAddress.getByName(ip)).build(), //add Guice modules spec -> spec.add(new BaseModule()).add(new PersistenceModule(ip, port, VERSION))); } public static void main(String[] args) { Params params = new Params(); JCommander commander = new JCommander(params); try { commander.parse(args); if (params.isHelp()) { commander.usage(); return; } } catch (Exception e) { commander.usage(); return; } try { PersistenceServer server = new PersistenceServer(params.getPort(), params.getIp()); System.out.println("Listening on port:" + params.getPort()); server.start(); } catch (Exception e) { e.printStackTrace(); } } private static class Params { public static final int MIN_PORT = 4100; public static final int MAX_PORT = 4800; @Parameter(names = {"-h", "--help"}, description = "Display help message", help = true) private boolean help; @Parameter(names = {"-p", "--port"}, description = "Server listen port. Default value is in " + "range [" + MIN_PORT + "," + MAX_PORT + "]") private int port = AvailablePortProvider.between(MIN_PORT, MAX_PORT).nextPort(); @Parameter(names = {"-i", "--ip"}, description = "Listen ip address") private String ip = NetUtils.guessIPAddress(); public boolean isHelp() { return help; } public int getPort() { return port; } public String getIp() { return ip; } } }