GWT Guice / Gin на стороне сервера проблема - PullRequest
1 голос
/ 03 июня 2011

Привет, ребята, с моим вопросом. Проект GWT, так как я прочитал Gin, который можно использовать только на стороне клиента, а Guice - на стороне сервера. Вот мой вопрос.

Позвольте сначала опубликовать пример кода.

Серверная сторона.

public class WebchargeServiceImpl extends RemoteServiceServlet implements WebchargeService
{
@Inject
private Injector injector;
@Inject
private ExecuteOperations executeOperations;

.....
executeOperations.do(); ....

Вот внедренный класс ExecuteOperations

@Singleton
public class ExecuteOperations
{
.........
}

Также у меня есть класс модуля сервлета

public class SampleWebGuiceServletConfig extends GuiceServletContextListener
{
@Override
protected Injector getInjector()
{
  return Guice.createInjector(Stage.DEVELOPMENT, new SampleWebModule());
}

} // class

.....

public class SampleWebModule extends ServletModule
{

    @Override
    protected void configureServlets()
    {
       bind(WebchargeServiceImpl.class);  //is it correct to bind a class like that?
    } // class

web.xml

  <servlet>
        <servlet-name>.......WebchargeService</servlet-name>
        <servlet-class>.....WebchargeServiceImpl</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>.........WebchargeService</servlet-name>
        <url-pattern>/Webcharge/WebchargeService</url-pattern>
    </servlet-mapping>
    <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>......SampleWebGuiceServletConfig</listener-class>
    </listener>
</web-app>

Я что-то упускаю, потому что каждый раз получаю значение null, этот код работает нормально в servlet / jsp env, но здесь ... Консультационное место.

Спасибо.

Ответы [ 2 ]

5 голосов
/ 03 июня 2011

Вы должны отобразить свой WebchargeServiceImpl сервлет в SampleWebModule, , а не в web.xml;в противном случае он будет создан вашим контейнером сервлетов, а не Guice, поэтому он не будет «введен».

1 голос
/ 03 июня 2011

Как создаются ваши сервлеты? Вы установили Guice Servlet Filter ?

...