diff options
author | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-02-28 17:24:27 +0100 |
---|---|---|
committer | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-02-28 17:24:27 +0100 |
commit | b0569609d29217887d55803368abeb9a1f71a70c (patch) | |
tree | ecfbb6531a0e44703046d6ea20661c75cdb7f40f /same/src/main/java/com/orbekk/same/http/JettyServerBuilder.java | |
parent | bf8e87bec12e6ec53ec2150d7a6f6d0e493c79ce (diff) |
Begin support for TJWS.
Add TjwsServerContainer.
Rename Jetty specific containers.
Diffstat (limited to 'same/src/main/java/com/orbekk/same/http/JettyServerBuilder.java')
-rw-r--r-- | same/src/main/java/com/orbekk/same/http/JettyServerBuilder.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/same/src/main/java/com/orbekk/same/http/JettyServerBuilder.java b/same/src/main/java/com/orbekk/same/http/JettyServerBuilder.java new file mode 100644 index 0000000..91d2725 --- /dev/null +++ b/same/src/main/java/com/orbekk/same/http/JettyServerBuilder.java @@ -0,0 +1,48 @@ +package com.orbekk.same.http; + +import javax.servlet.http.HttpServlet; + +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.servlet.ServletHolder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.googlecode.jsonrpc4j.JsonRpcServer; + +public class JettyServerBuilder { + Logger logger = LoggerFactory.getLogger(getClass()); + int port; + ServletContextHandler context = null; + + public JettyServerBuilder(int port) { + this.port = port; + } + + public JettyServerBuilder withServlet(HttpServlet servlet, String pathSpec) { + logger.info("Servlet binding: {} → {}", pathSpec, servlet); + getServletContextHandler().addServlet(new ServletHolder(servlet), + pathSpec); + return this; + } + + public <T> JettyServerBuilder withService(T service, Class<T> clazz) { + JsonRpcServer server = new JsonRpcServer(service, clazz); + String pathSpec = "/" + clazz.getSimpleName() + ".json"; + return withServlet(new RpcServlet(server), pathSpec); + } + + public JettyServerContainer build() { + JettyServerContainer server = JettyServerContainer.create(port); + server.setReuseAddress(true); + server.setContext(getServletContextHandler()); + return server; + } + + private ServletContextHandler getServletContextHandler() { + if (context == null) { + context = new ServletContextHandler(); + context.setContextPath("/"); + } + return context; + } +} |