When I try to configure Vaadin to work with Guice like this wiki: http://vaadin.com/wiki/-/wiki/Main/Integrating%20Vaadin%20with%20Guice%202.0?p_r_p_185834411_title=Integrating%20Vaadin%20with%20Guice%202.0
I get
java.lang.InstantiationException: pl.koziolekweb.vaadin.guice.servlet.GuiceApplicationServlet
at java.lang.Class.newInstance0(Class.java:340)
at java.lang.Class.newInstance(Class.java:308)
at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153)
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:428)
My Guice servlet:
@SuppressWarnings("serial")
@Singleton
public class GuiceApplicationServlet extends AbstractApplicationServlet {
protected Provider<Application> applicationProvider;
@Inject
public GuiceApplicationServlet(Provider<Application> applicationProvider) {
super();
this.applicationProvider = applicationProvider;
}
@Override
protected Class<? extends Application> getApplicationClass()
throws ClassNotFoundException {
return Application.class;
}
@Override
protected Application getNewApplication(HttpServletRequest request)
throws ServletException {
return applicationProvider.get();
}
}
Configuration:
public class VaadinGuiceConfiguration extends GuiceServletContextListener {
@Override
protected Injector getInjector() {
return Guice.createInjector(new MyServletModule());
}
}
module:
public class MyServletModule extends ServletModule {
@Override
protected void configureServlets() {
serve("/*").with(GuiceApplicationServlet.class);
bind(ListBookView.class).to(ListBookViewImpl.class);
bind(BookDao.class).to(SimpleBookDao.class);
bind(ListBookPresenter.class).to(ListBookPresenterImpl.class);
bind(Application.class).toProvider(ApplicationProvider.class).in(
ServletScopes.SESSION);
}
}
and web.xml
<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>pl.koziolekweb.vaadin.guice.servlet.VaadinGuiceConfiguration</listener-class>
</listener>
<servlet>
<servlet-name>VAS</servlet-name>
<servlet-class>pl.koziolekweb.vaadin.guice.servlet.GuiceApplicationServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>VAS</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
What is wrong? Why tutorial doesn’t work? Please help.