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 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.
> > 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 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.