Служба GWT RPC не найдена - PullRequest
       24

Служба GWT RPC не найдена

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

Я почти часами искал в Интернете, но не нашел ответа.Проблема в том, что я хочу проверить RPC GWT.Поэтому я с помощью Eclipse Plugin создаю удаленную службу GWT.Но каждый раз я получаю следующее сообщение об ошибке: «[WARN] Файл не найден для: / kuss_projekt / SpeicherService»

Я много пробовал, но не знаю, в чем проблема.Вот мой код:

web.xml:
<web-app>

<servlet>
    <servlet-name>SpeicherService</servlet-name>
    <servlet-class>de.fhdo.kuss.server.SpeicherServiceImpl</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>SpeicherService</servlet-name>
    <url-pattern>/kuss_projekt/SpeicherService</url-pattern>
</servlet-mapping>

<!-- Default page to serve -->
<welcome-file-list>
    <welcome-file>Kuss_Projekt.html</welcome-file>
</welcome-file-list>


</web-app>

-

Speicherservice:
@RemoteServiceRelativePath("SpeicherService")
public interface SpeicherService extends RemoteService {

String getName(String name);


public static class Util {
    private static SpeicherServiceAsync instance;
    public static SpeicherServiceAsync getInstance(){
        if (instance == null) {
            instance = GWT.create(SpeicherService.class);
        }
        return instance;
    }
}
}

-

SpeicherServiceAsync:
public interface SpeicherServiceAsync {

void getName(String name, AsyncCallback<String> callback);

}

-

SpeicherServiceImpl
public class SpeicherServiceImpl extends RemoteServiceServlet implements SpeicherService {

@Override
public String getName(String name) {
    return("Server meldet sich " + name);
}
}

-

Test():
    public void test() {
    AsyncCallback<String> callback = new AsyncCallback<String>() {

        @Override
        public void onFailure(Throwable caught) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onSuccess(String result) {
            Window.alert(result);
        }
    };

    SpeicherService.Util.getInstance().getName("test",callback);
}

Ответы [ 2 ]

3 голосов
/ 21 июля 2011

Вы пытались удалить /kuss_projekt из отображения сервлета, чтобы сделать это:

<servlet-mapping>
    <servlet-name>SpeicherService</servlet-name>
    <url-pattern>/SpeicherService</url-pattern>
</servlet-mapping>

Клиент GWT ожидает, что служба будет доступна по URL-адресу, указанному в @ RemoteServiceRelativePath . Когда вы работаете в браузере, путь определяется относительно базового URL вашего модуля. Как вы дали:

@RemoteServiceRelativePath("SpeicherService")

клиент отправит запрос на URL, созданный путем объединения

GWT.getModuleBaseURL() + "SpeicherService"

Если ваш сервлет не сопоставлен с этим URL, запрос не будет выполнен. Попробуйте напечатать GWT.getModuleBaseURL()+ "SpeicherService" на консоли, чтобы увидеть базовый URL в вашем тестовом примере. Получив это, откройте браузер и перейдите по этому адресу. Если в ответе указано что-то вроде «Метод Get не поддерживается», все отображается правильно. С другой стороны, если вы получаете 404, вам нужно исправить отображение сервлета

2 голосов
/ 21 июля 2011

Содержит ли xml-файл вашего приложения

<module rename-to='kuss_projekt'>
...