2010-11-04 5 views
1

J'ai déjà posé une question précédente, en recherchant la classe qui construit le contenu d'un appel RPC (here).Séquence client RTC GWT avant envoi Demande

Maintenant, je ne suis pas trouver la séquence appels de méthode que les résultats sur l'appel de la méthode suivante dans la ClientSerializationStreamWriter classe (here):

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

Je remarqué que le ClientSerializationStreamWriter est utilisé dans RemoteServiceProxy et cela, cette classe est étendue sur RpcServiceProxy. Ce que j'essaye de trouver est le point exactement où la demande est construite avant l'envoi. La méthode doInvoke de RemoteServiceProxy semble être responsable de l'envoi de la requête elle-même, mais comment la chaîne requestData est-elle construite? Je souhaite comprendre le chemin habituel d'une requête RPC avant de quitter le navigateur Web des clients. Jusqu'à présent, je ne suis pas sûr que chaque RPC utilise RpcServiceProxy.

J'ai beaucoup de suppositions et aucune assertion.

Merci.

JuDaC

Répondre

1

Peut-être la meilleure façon de savoir plus sur la pile d'appel est à l'aide d'un débogueur Java (qui est possible en mode développement - même pour le code côté client)

À propos de votre autre question :

Jusqu'à présent, je ne suis pas sûr que chaque RPC utilise RpcServiceProxy.

/com/google/gwt/rpc/RPC.gwt.xml (GWT-user.jar) spécifie une fixation différée pour vos RemoteService s:

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

RpcServiceGenerator:

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

RpcProxyCreator:

protected Class<? extends RemoteServiceProxy> getProxySupertype() { 
    return RpcServiceProxy.class; 
} 
1

J'ai trouvé le probablement répondre à mon q uestion. Dans la ligne de classe ProxyCreator: 479.

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

Lors de la création de mon service

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

compilateur GWT génère dynamiquement le proxy RPC, en ce moment le compilateur GWT injecter la méthode proxy (ProxyCreator.generateProxyMethod) .

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

HTH

Questions connexes