I don't have a complete example of working code at the moment that I
can share but I was able to try out yours. Turns out I forgot a line.
Jetty wants to know that theres *something* to send a request to, and
apparently a filter doesn't cut it. So I've been able to fix that with
this line:
servletContextHandler.addServlet(org.eclipse.jetty.servlet.DefaultServlet.class.getCanonicalName(),
"/");
-Jared
On Thu 28 Jun 2012 01:40:39 PM CDT, Maxim Veksler wrote:
> Jared,
>
> Thanks for your response but even after switching to using the
> injector to create the filter it still does not seem to intercept the
> calls.
> If you could share a complete configuration of your working code it
> would be wonderful.
>
> My integration currently looks as following:
>
> Injector injector = Guice.createInjector(
> new MadServingModule(),
> new MadMockModule(),
> new MadTrackModule(),
> new MadMiscModule());
>
> HandlerCollection handlerCollection = new HandlerCollection();
> ContextHandlerCollection contexts = new
> ContextHandlerCollection();
> handlerCollection.addHandler(contexts);
> //ContextHandler contextHandler = new ContextHandler();
>
> ServletContextHandler servletContextHandler = new
> ServletContextHandler(contexts, "/");
> servletContextHandler.addFilter(new
> FilterHolder(injector.getInstance(GuiceFilter.class)), "/*",
> FilterMapping.ALL);
> servletContextHandler.addFilter(GzipFilter.class, "/*",
> FilterMapping.ALL);
>
> server.setHandler(handlerCollection);
> server.start();
>
>
> Maxim.
>
> On Wednesday, June 27, 2012 3:15:55 PM UTC+3, Jared Bunting wrote:
>
> You don't seem to do anything with your injector. I'm doing something
> similar for a couple of apps, but my approach would look more like
> this:
>
> === Launcher class:
>
> public static void main(String[] args) throws Exception {
> Injector injector = Guice.createInjector(
> new MadServingModule(),
> new MadMockModule(),
> new MadTrackModule(),
> new MadMiscModule());
>
> ServletContextHandler servletContextHandler = new
> ServletContextHandler();
> servletContextHandler.addFilter(new
> FilterHolder(injector.getInstance(GuiceFilter.class)), "/",
> FilterMapping.ALL);
>
> Server server = new Server(PORT_NUMBER);
> server.setHandler(servletContextHandler);
>
> // Init the application itself
> MADServiceMgr.init();
>
> // ### Launching the application...
> server.start();
> System.out.println(server.dump());
> server.join();
> }
>
> The two main differences are that I am saving the injector after
> creating it (otherwise, how would anything use it?) and that I
> allow the
> injector to instantiate the GuiceFilter (thus giving the GuiceFilter
> access to all of my Guice-configured servlets).
>
> Hope that helps,
> Jared
>
> On Wed 27 Jun 2012 04:08:34 AM CDT, Maxim Veksler wrote:
> >
> > Hello,
> >
> > Our app launches from void main() with embedded Jetty.
> > We try to keep it light weight, and don't have full WebAppContext,
> > instead with start with HandlerCollection and simply map the
> servlets
> > to paths.
> >
> > I would like to integrate Guice into the mix, I've
> > followed
> http://code.google.com/p/google-guice/wiki/ServletModule
> <http://code.google.com/p/google-guice/wiki/ServletModule> and
> > re-factored the
> > code to replace Jetty mapping with guiced based approach. I'm
> not sure
> > if my problem is with Jetty or Guice but after switch to Guice
> serve()
> > mapping I can't seem to be able to have any GET requested to be
> > redirected into the appropriate servlets, which makes Jetty always
> > return a 404.
> >
> >
> > My relevant code code snippets:
> >
> > === Launcher class:
> >
> > public static void main(String[] args) throws Exception {
> > Guice.createInjector(
> > new MadServingModule(),
> > new MadMockModule(),
> > new MadTrackModule(),
> > new MadMiscModule());
> >
> > ServletContextHandler servletContextHandler = new
> > ServletContextHandler();
> > servletContextHandler.addFilter(new
> > FilterHolder(GuiceFilter.class), "/", FilterMapping.ALL);
> >
> > Server server = new Server(PORT_NUMBER);
> > server.setHandler(servletContextHandler);
> >
> > // Init the application itself
> > MADServiceMgr.init();
> >
> > // ### Launching the application...
> > server.start();
> > System.out.println(server.dump());
> > server.join();
> > }
> >
> > === MadMiscModule class
> >
> > public class MadMiscModule extends ServletModule {
> > @Override
> > protected void configureServlets() {
> > // ### STATUS ###
> > serve("/status").with(StatusServlet.class);
> >
> > // ### STATIC STUFF ###
> > serve("/crossdomain.xml").with(CrossdomainServlet.class);
> > serve("/robots.txt").with(RobotsTxtServlet.class);
> > }
> > }
> >
> >
> > I've verified that both GuiceFilter.init()
> > and MadMiscModule.configureServlets() methods are called on server
> > startup.
> > But sending GET requests does not seem to be intercepted and always
> > result in 404.
> >
> > Seeking integration examples, one mostly finds tips about using
> > Context but this interface seems to be deprecated in jetty 7.5 so
> > before I dig deeper I would be happy to know if someone here has
> > already integrated Guice with Embedded Jetty and would be
> willing to
> > share his thoughts.
> >
> > My motivation for having Guice right at the servlet entry point
> level
> > is simplicity, I love the framework and among other great
> features the
> > small "quick wins", for example the @Singleton.
> >
> >
> > Prior to Guice, our mapping code looked like this:
> >
> > __addServlet(ServletContextHandler servletContextHandler, String
> > path, Class<? extends Servlet> servletClazz) {
> > try {
> > servletContextHandler.addServlet(new
> > ServletHolder(servletClazz.newInstance()), path);
> > } catch (Throwable e) {
> > throw new RuntimeException(e);
> > }
> > }
> >
> >
> >
> > Thank you,
> > Maxim.
> >
> > --
> > You received this message because you are subscribed to the Google
> > Groups "google-guice" group.
> > To view this discussion on the web visit
> > https://groups.google.com/d/msg/google-guice/-/hJNBXVtWUF4J
> <https://groups.google.com/d/msg/google-guice/-/hJNBXVtWUF4J>.
> > To post to this group, send email to
> [email protected] <mailto:[email protected]>.
> > To unsubscribe from this group, send email to
> > [email protected]
> <mailto:google-guice%[email protected]>.
> > For more options, visit this group at
> > http://groups.google.com/group/google-guice?hl=en
> <http://groups.google.com/group/google-guice?hl=en>.
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "google-guice" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/google-guice/-/mMs5yinsNQYJ.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/google-guice?hl=en.
--
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-guice?hl=en.