Последовательность клиента GWT RPC перед отправкой запроса

Я задал предыдущий вопрос, ища класс, который создает контент при вызове RPC (здесь ).

Теперь я не нахожу последовательность вызовов методов, которая приводит к вызову следующего метода в классе ClientSerializationStreamWriter(здесь):

@Override
public String toString() {
    StringBuffer buffer = new StringBuffer();
    writeHeader(buffer);
    writeStringTable(buffer);
    writePayload(buffer);
    return buffer.toString();
}

Я заметил, что ClientSerializationStreamWriter используется в RemoteServiceProxy и что этот класс расширен на RpcServiceProxy. То, что я пытаюсь найти, - это точная точка, в которой запрос создается перед отправкой. Метод doInvoke из RemoteServiceProxy, по-видимому, отвечает за отправку самого запроса, но как создается String requestData?

com.google.gwt.user.client.rpc.impl.RemoteServiceProxy.doInvoke

Я хочу понять обычный путь, который выполняет запрос RPC, прежде чем он покинет веб-браузер клиента. Пока я не уверен, что каждый RPC использует RpcServiceProxy.

У меня много предположений и ни одного утверждения.

Спасибо.

ЮДаК


person JuDaC    schedule 04.11.2010    source источник


Ответы (2)


Возможно, лучший способ узнать больше о стеке вызовов — использовать отладчик Java (это возможно в режиме разработки — даже для кода на стороне клиента!)

О другом вашем вопросе:

Пока я не уверен, что каждый RPC использует RpcServiceProxy.

/com/google/gwt/rpc/RPC.gwt.xml (gwt-user.jar) указывает отложенную привязку для ваших RemoteService:

<generate-with class="com.google.gwt.rpc.rebind.RpcServiceGenerator">
  ...
  <when-type-assignable class="com.google.gwt.user.client.rpc.RemoteService" />
  ...
</generate-with>

Генератор RpcService:

protected ProxyCreator createProxyCreator(JClassType remoteService) {
  return new RpcProxyCreator(remoteService);
}

RpcProxyCreator:

protected Class<? extends RemoteServiceProxy> getProxySupertype() {
  return RpcServiceProxy.class;
}
person Chris Lercher    schedule 04.11.2010

Я нашел, вероятно, ответ на свой вопрос. В строке Class ProxyCreator: 479.

String payloadName = nameFactory.createName("payload");
w.println("String " + payloadName + " = " + streamWriterName
    + ".toString();");

При создании моего сервиса

private final GreetingServiceAsync greetingService = GWT.create(GreetingService.class);

Компилятор GWT динамически генерирует прокси RPC, в этот момент компилятор GWT вводит метод прокси (ProxyCreator.generateProxyMethod).

com.google.gwt.user.rebind.rpc.ProxyCreator.generateProxyMethod

ХТН

person JuDaC    schedule 04.11.2010