2009-07-31 10 views
7

J'utilise gwt1.5, struts2, spring et hibernate. Je reçois l'erreur suivante:GWT IllegalArgumentException: encodedRequest ne peut pas être vide

ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/project name] - Exception while dispatching incoming RPC call java.lang.IllegalArgumentException: encodedRequest cannot be empty 

Cette erreur se produit uniquement avec IE, mais il fonctionne parfaitement dans FireFox.

Répondre

3

Cela semble être un problème de proxy lorsque le serveur proxy supprime le corps de la requête, voir here.

En outre, de ce que j'ai rencontré ce problème ne semble se produire lors de l'utilisation IE7.0 et non IE6.0

+0

Salut toutes les mises à jour sur ce problème s'il vous plaît, je reçois cette erreur sur IE6 lui-même – usman

2

J'ai la même erreur. Il a été provoqué par une requête POST sans données à partir d'Internet Explorer lorsque l'authentification NTLM a été utilisée.

Explication est ici:

solution a été:

  • à utiliser WAFFLE SecurityFilter sur Tomcat sur MS Windows

    <filter> 
        <filter-name>MySecurityFilter</filter-name> 
        <filter-class>waffle.servlet.NegotiateSecurityFilter</filter-class> 
        <init-param> 
        <param-name>waffle.servlet.spi.NegotiateSecurityFilterProvider/protocols</param-name> 
        <param-value> 
        NTLM 
        </param-value> 
        </init-param> 
    </filter> 
    <filter-mapping> 
        <filter-name>MySecurityFilter</filter-name> 
        <url-pattern>/appA/*</url-pattern> 
        <url-pattern>/appB/*</url-pattern> 
    </filter-mapping>` 
    
  • ou, pour définir la clé de Registre DisableNTLMPreAuth sur un client.

    registry key: 
    HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet 
    Settings/ Value Name: DisableNTLMPreAuth 
    Data Type: REG_DWORD 
    Value: 1 
    
6

Je l'ai fait beaucoup de recherches dans ce au cours des deux derniers mois - avant d'entrer dans les détails, mon application Web utilise 2.x GWT en cours d'exécution sur Tomcat 7, avec un Apache httpd 2.2.x et mod_jk 1.2.x configuration en face.

Avec la version 1.2.26 de mod_jk, je voyais occasionnellement l'erreur 'encodedRequest ne peut pas être vide' dans les journaux. Comme la question le dit, cela n'arriverait que dans IE, pour moi seulement IE8/9. Le problème est que mon système d'exploitation serveur est Linux, donc il n'y a aucun moyen que l'authentification NTLM puisse être le problème. Dans les nouvelles versions de mod_jk (1.2.37 à ce jour), j'aurais plutôt un délai d'attente de socket et une erreur de lecture dans les logs de Tomcat.

Cette erreur serait enregistrée au cours d'une interrogation de mon application Web sur le serveur toutes les quelques secondes afin d'obtenir le statut d'une opération de longue durée qui avait été lancée dans un thread séparé. L'interrogation se produirait toutes les cinq secondes, mais occasionnellement, elle se bloquerait en effectuant cette demande d'état.

Après un grand nombre de commandes tcpdump, j'ai trouvé que la requête bloquée venait sur une connexion TCP qui était réinitialisée par Apache; un FIN/ACK était envoyé au navigateur, l'en-tête et le corps de la requête POST étaient reçus par le serveur et le serveur continuait à réinitialiser la connexion. Alors, chose étrange, seul l'en-tête reviendrait au serveur depuis le navigateur. Après avoir étudié un peu, je trouve ceci:

Why does Internet Explorer not send HTTP post body on Ajax call after failure?

Apparemment, IE ne sera envoyé à l'en-tête lors de la ré-envoi de la requête POST.Dans la vraie forme de Microsoft, ce problème a été connu pendant un moment, un correctif a été publié et installé, mais pas activé sur la machine client. Si vous ne voulez pas forcer tous vos utilisateurs à modifier leur registre, vous devez désactiver HTTP Keep-Alive sur votre serveur ou augmenter le délai d'attente Keep-Alive à> 60 secondes. Pour mon serveur apache httpd, je mets KeepAliveTimeout à 65 et MaxKeepAliveRequests à 0 pour que le serveur n'initialise pas les connexions au navigateur.

Questions connexes