GWT / Java - Можно ли выполнять вызовы RPC при выполнении «Запустить как веб-приложение» в Eclipse (с плагином GWT)? - PullRequest
0 голосов
/ 11 февраля 2011

Я довольно новичок в GWT и, похоже, добился большого прогресса, но теперь вызов RPC делает меня совершенно тупым. Я выполнил несколько уроков и, насколько я могу судить, все делаю правильно. Однако мой метод обратного вызова Asynch всегда вызывает тот, который я установил для случая сбоя. Мне интересно, должны ли RPC-вызовы работать в Eclipse «запускать как веб-приложение» (с плагином GWT). Кроме того, для подтверждения, мое приложение работает нормально, за исключением этого, поэтому нет ошибок сборки.

Это довольно много для публикации здесь, но я включаю различные части того, что я использую, чтобы сделать вызов RPC на случай, если это может помочь мне решить эту проблему.

Это вызывается в методе контроллера:

    RPCService rpc = GWT.create(RPCService.class);
        //new RPCService();

    rpc.testRPC("Hello", callback);

с методом Asynch:

AsyncCallback callback = new AsyncCallback()
{
public void onFailure(Throwable caught)
{
    display.setTestRPC("failed");
}

public void onSuccess(Object result)
{
    display.setTestRPC("success");
}
};

Тогда фактические классы / интерфейсы RPC:

RPCInterfaceAsync

package org.ediscovery.gwt.client.rpc;

import com.google.gwt.user.client.rpc.RemoteService;
public interface RPCInterface extends RemoteService
{
    public String testRPC(String message);
}

RPCService

package org.ediscovery.gwt.client.rpc;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface RPCInterfaceAsync
{
    public void testRPC(String message, AsyncCallback callback);
}

SERVERSIDE: RPCImpl:

package org.ediscovery.gwt.server.service;

import java.text.DateFormat;
import java.util.Date;

import org.ediscovery.gwt.client.rpc.RPCInterface;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

public class RPCImpl extends RemoteServiceServlet implements RPCInterface
{
    private static final long serialVersionUID = 1L;

    public String testRPC(String message)
    {
        Date now = new Date();
        String dtm = DateFormat.getTimeInstance(DateFormat.MEDIUM).format(now);
        return "Got the message '" + message +"' at " + dtm;
    }
}

Соответствующая часть web.xml:

  <servlet>
    <servlet-name>RPCImpl</servlet-name>
    <servlet-class>org.ediscovery.gwt.server.service.RPCImpl</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>RPCImpl</servlet-name>
    <url-pattern>/HelloGoodByeMVP.html/rpc</url-pattern>
  </servlet-mapping>

1 Ответ

0 голосов
/ 11 февраля 2011

Вы забыли добавить аннотацию RemoteServiceRelativePath к вашему RPCInterface ..

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