JerseyWebServer.java 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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.*;
  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", "localhost");
  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.register(new AbstractBinder()
  42. {
  43. @Override
  44. protected void configure()
  45. {
  46. bindFactory(SessionFactoryProvider.class).to(SessionFactory.class).in(
  47. Singleton.class);
  48. }
  49. });
  50. UndertowJerseyContainer container = new UndertowJerseyContainer(config);
  51. BlockingHandler bh = new BlockingHandler(container);
  52. Undertow server = Undertow.builder().addHttpListener(port,
  53. "0.0.0.0").setHandler(bh).build();
  54. server.start();
  55. }
  56. private static Options options()
  57. {
  58. Options options = new Options();
  59. options.addOption("port", true, "server port");
  60. options.addOption("dbhost", true, "database host");
  61. options.addOption("dbport", true, "database port");
  62. return options;
  63. }
  64. }