2010-06-16 6 views
0

gars, j'ai une page html où onclick d'un bouton une requête ajax est envoyée au serveur, la demande appelle une page jsp qui exécute une procédure oracle.La procédure exécute la logique et les lieux dans une table temporaire. Une fois la procédure terminée, les valeurs sont renvoyées au client en sélectionnant les valeurs de la table tmp. comme la réponse est trop tard. les données ne sont pas reçues du côté client.Ajax réponse prend du temps et le statut est 503

solution: J'ai essayé d'exécuter la procédure dans un thread séparé en utilisant un appel ajax. lorsque la procédure est terminée, un indicateur global est défini pour indiquer que les données sont générées. si la réponse est 500, un deuxième appel ajax invoqué par la fonction de temporisation après 10000 ms. le second appel vérifie le drapeau global, s'il est vrai, puis lit à partir de la table et envoie la réponse. Si ce n'est pas le cas, un délai d'attente est défini du côté client. cette solution n'est pas assez mature. , car la procédure peut prendre beaucoup de temps pour répondre.

s'il vous plaît laissez-moi savoir une bonne solution pour ce problème?

Répondre

1

Ceci est le modèle classique "Quote Comparison Website".

Vous devez faire vos demandes plus spécifiques, comme ça ...

Première - vous envoyer la demande initiale du processus de longue durée en utilisant AJAX et vous revenez un « RequestId ». Deuxièmement, vous appelez un service "Vérifier l'état" avec votre identifiant de demande et recevez un statut. Si vous obtenez "Travailler" vous faites une pause pour un peu et re-vérifier. Si vous obtenez "Complet" vous passez à la troisième étape. Troisièmement, vous appelez le service "Obtenir des résultats" avec votre identifiant de demande et récupérez instantanément le résultat pré-établi.

Vous voudrez ajouter un certain nombre de tentatives dans la deuxième étape - donc si vous avez attendu 10 minutes, vous abandonnez et présentez des excuses à l'utilisateur.

Questions connexes