Сгенерированный Maven сервлет GWT не отвечает - PullRequest
1 голос
/ 21 июля 2011

Я использовал плагин GWT Maven (версия 2.3.0) для генерации проекта GWT. Приятно то, что подключаемый модуль Maven заботится о создании асинхронной части службы. Кажется, что все работает, но сервлет не отвечает как при работе в размещенном режиме (запущенном в Jetty), так и при развертывании полученной WAR в Tomcat.

Моя проблема в том, что сервлет просто не отвечает. Обратный вызов onSuccess() вызывается, но я получаю только значения null. Я в значительной степени скопировал учебник с домашней страницы GWT, поэтому мой сервис создан следующим образом:

final StatusServiceAsync statusService = GWT.create(StatusService.class);

Вот мой сервисный интерфейс:

@RemoteServiceRelativePath("status")
public interface StatusService extends RemoteService
{
    String getStatus(String someInput);
}

Как уже упоминалось, асинхронный аналог создается плагином Maven. Файл web.xml выглядит следующим образом:

<servlet>
   <servlet-name>statusServlet</servlet-name>
   <servlet-class>my.package.StatusServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>statusServlet</servlet-name>
  <url-pattern>/StatusBoard/status</url-pattern>
</servlet-mapping>
<welcome-file-list>
  <welcome-file>StatusBoard.html</welcome-file>
</welcome-file-list>

Сначала я подумал, что конфигурация совершенно неправильная, поэтому немного поиграл с ней. Когда я изменил значение <servlet-class>, контейнер сервлетов записал ClassNotFoundException. Затем я изменил @RemoteServiceRelativePath Я также получил ошибку. Таким образом, конфигурация не может быть полностью неправильной.

Вот код на стороне сервера (я сократил его, чтобы убедиться, что больше ничего не может пойти не так):

public class StatusServiceImpl extends RemoteServiceServlet implements StatusService
{
    private static final long serialVersionUID = 3317511632727461036L;

    @Override
    public String getStatus(final String someInput)
    {
        return someInput;
    }
}

Извините, что я забыл эту деталь, но иногда отладчик не распознает точку останова в сервлете. Но даже если это так, возвращаемое значение все равно null.

Любые идеи очень ценятся!

1 Ответ

1 голос
/ 25 июля 2011

По умолчанию ваше приложение GWT имеет базовый URL из имени модуля. Если вы использовали атрибут «rename-to» в своем файле gwt.xml, то этим значением будет ваш базовый URL. В этом случае, просматривая ваши записи web.xml, ваш модуль должен называться «StatusBoard». Или измените свой URL на значение «переименовать».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...