Hi,

I have an issue when trying to use Google Guice 2.0 (and the Guice-
Servlet 2.0 extension) with Jetty 7.0.0M4. Basically, I want to let
Guice handle the servlet injection, but for some reason, it doesn't
seem to work.

I tried using a WebApp instead (along with a web.xml descriptor file),
with the same setup and it works as expected. I would prefer to avoid
depending on an external file to setup my Jetty Server.

Upon startup, the message console shows:

GuiceServletConfig.contextInitialized
GuiceServlet.init

So it appears to set everything up as it should. Although, when I
browse to http://localhost:8080/index.html, I am shown a 404 - Not
Found error.

I would really appreciate if you could give me a hint or two on how to
properly set things up. What I want to achieve, in a nutshell, is the
same result as with the web.xml descriptor file, without it.
(Everything done programmatically...)


Best regards,

Jean-Philippe Couture, [email protected]






Here is a listing of the classes I use. And the web.xml descriptor
file I used when it worked.


GuiceServletConfig.java:
------------------------
public class GuiceServletConfig extends GuiceServletContextListener {
        @Override
        public void contextInitialized(ServletContextEvent
servletContextEvent) {
                super.contextInitialized(servletContextEvent);
                System.out.println("GuiceServletConfig.contextInitialized");
        }

        @Override
        public void contextDestroyed(ServletContextEvent servletContextEvent)
{
                super.contextDestroyed(servletContextEvent);
                System.out.println("GuiceServletConfig.contextDestroyed");
        }

        @Override
        protected Injector getInjector() {
                return Guice.createInjector(new ServletModule() {
                        @Override
                        protected void configureServlets() {
                                super.configureServlets();
                                this.serve("*.html").with(GuiceServlet.class);
                        }
                });
        }
}



GuiceServlet.java:
------------------
@Singleton
public class GuiceServlet extends HttpServlet {
        @Override
        public void init() throws ServletException {
                super.init();
                System.out.println("GuiceServlet.init");
        }

        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
                System.out.println("GuiceServlet.doGet");
        }
}


Main.java:
----------
public class Main {
        public static void main(String... args) {
                Server server = new Server();
                Connector connector = new SelectChannelConnector();
                connector.setHost("0.0.0.0");
                connector.setPort(8080);
                server.setConnectors(new Connector[]{connector});

                ServletContextHandler context = new 
ServletContextHandler(server,
"/", ServletContextHandler.SESSIONS);
                context.addEventListener(new GuiceServletConfig());
                context.addFilter(GuiceFilter.class, "/*", 0);

                try {
                        server.start();
                        server.join();
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
}


web.xml:
--------
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"; xmlns:xsi="http://
www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://
java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
version="2.5">
        <filter>
           <filter-name>guiceFilter</filter-name>
           <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
        </filter>

        <filter-mapping>
           <filter-name>guiceFilter</filter-name>
           <url-pattern>/*</url-pattern>
        </filter-mapping>

        <listener>
           <listener-class>jettyguice.GuiceServletConfig</listener-class>
        </listener>
</web-app>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to