package net.curisit.securis; import java.net.URI; import javax.inject.Inject; import javax.inject.Named; import net.curisit.securis.ioc.RequestsModule; import net.curisit.securis.ioc.SecurisModule; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener; import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Key; import com.google.inject.name.Names; public class MainApp { private static final Logger log = LoggerFactory.getLogger(MainApp.class); private static Server server; private static Injector injector = null; @Inject @Named("base-uri") private URI uri; public static void main(String[] args) throws Exception { log.info("SeCuris init..."); injector = Guice.createInjector(new SecurisModule(), new RequestsModule()); // createBiDirectionalGuiceBridge(ServiceLocatorFactory.getInstance().create("default"), new SecurisModule()); startServer(injector.getInstance(Key.get(URI.class, Names.named("base-uri")))); while (true) { Thread.currentThread().sleep(100); } } private static void startServer(URI uri) throws Exception { System.out.println("Starting jetty..."); // ResourceConfig rc = new PackagesResourceConfig("net.curisit.securis.services", "org.codehaus.jackson.jaxrs"); // IoCComponentProviderFactory ioc = new GuiceComponentProviderFactory(rc, injector); server = new Server(9997); ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); context.setContextPath("/"); context.addEventListener(injector.getInstance(GuiceResteasyBootstrapServletContextListener.class)); ServletHolder sh = new ServletHolder(HttpServletDispatcher.class); context.setInitParameter("resteasy.role.based.security", "true"); context.addFilter(new FilterHolder(injector.getInstance(AuthFilter.class)), "/*", null); // context.addServlet(DefaultServlet.class, "/*"); context.addServlet(sh, "/*"); server.setHandler(context); server.start(); server.join(); // rc.packages("net.curisit.securis.services", "org.codehaus.jackson.jaxrs"); // new CLStaticHttpHandler(new URLClassLoader(new URL[] {new URL("file:///home/username/staticfiles.jar")})), "/www") } }