JerseyWebServer.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package hello;
  2. import hello.undertow.*;
  3. import io.undertow.*;
  4. import io.undertow.server.handlers.*;
  5. import org.apache.commons.cli.*;
  6. import org.glassfish.hk2.utilities.binding.AbstractBinder;
  7. import org.glassfish.jersey.server.*;
  8. import org.hibernate.*;
  9. import javax.inject.*;
  10. import java.util.*;
  11. public class JerseyWebServer
  12. {
  13. private final int port;
  14. private final String dbHost;
  15. private final int dbPort;
  16. public JerseyWebServer(final int port, final String dbHost,
  17. final int dbPort)
  18. {
  19. this.port = port;
  20. this.dbHost = dbHost;
  21. this.dbPort = dbPort;
  22. }
  23. public static void main(final String[] args) throws Exception
  24. {
  25. CommandLineParser parser = new BasicParser();
  26. CommandLine cmd = parser.parse(options(), args);
  27. final int port = Integer.parseInt(cmd.getOptionValue("port", "8080"));
  28. final String dbHost = cmd.getOptionValue("dbhost", "tfb-database");
  29. final int dbPort = Integer.parseInt(cmd.getOptionValue("dbport", "3306"));
  30. ResourceConfig config = new ResourceConfig(DbResource.class,
  31. FortunesResource.class, JsonResource.class, PlaintextResource.class,
  32. JsonMessageBodyWriter.class, ServerResponseFilter.class, RequestExceptionMapper.class);
  33. config.setProperties(new HashMap<String, Object>()
  34. {{
  35. put("dbhost", dbHost);
  36. put("dbport", dbPort);
  37. }});
  38. config.register(org.glassfish.jersey.server.mvc.MvcFeature.class);
  39. config.register(
  40. org.glassfish.jersey.server.mvc.mustache.MustacheMvcFeature.class);
  41. config.property("jersey.config.server.mvc.caching.mustache", "true");
  42. config.register(new AbstractBinder() {
  43. @Override
  44. protected void configure() {
  45. bindFactory(SessionFactoryFactory.class).to(SessionFactory.class).in(
  46. Singleton.class);
  47. }
  48. });
  49. UndertowJerseyContainer container = new UndertowJerseyContainer(config);
  50. BlockingHandler bh = new BlockingHandler(container);
  51. Undertow server = Undertow.builder().addHttpListener(port,
  52. "0.0.0.0").setHandler(bh).build();
  53. server.start();
  54. }
  55. private static Options options()
  56. {
  57. Options options = new Options();
  58. options.addOption("port", true, "server port");
  59. options.addOption("dbhost", true, "database host");
  60. options.addOption("dbport", true, "database port");
  61. return options;
  62. }
  63. }