Я довольно новичок в 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>