Je suis en train de réaliser le comportement suivant en utilisant l'API Servlet 3.0:Servlet 3.0 inclut la page html
- envoyer une page html inital
- envoyer des réponses suivantes qui mettent à jour la page
Tout cela fonctionne sauf la seule façon que je pourrais envoyer la page initiale sans obtenir la réponse validée est en écrivant manuellement en utilisant le HttpResponse Writer ...
Je me demandais ering s'il y a un moyen d'utiliser quelque chose de similaire à RequestDispatcher # include avec une page html sans rencontrer de problèmes avec AsyncContext. Certaines choses que j'essayé jusqu'à présent et ne fonctionnent pas:
- utilisation AsyncContext # expédition: autant que je l'ai lu sur Internet, il est destiné à l'envoi de la réponse finale au récipient afin de le rendre
- use RequestDispatcher # forward: obtention de IllegalStateException en raison d'une tentative d'écriture de contenu supplémentaire dans OutputStream
- Utilisez RequestDispatcher # include: si j'initialise AsyncContext avant d'appeler cette méthode, request.isAsyncSupported renvoie true, après avoir appelé la méthode, il renvoie false . Je lis qu'il appelle flushBuffer() et définit le commettras drapeau vrai sur la réponse
En outre, dans le Servlet 3.0 SPEC il y a quelques lignes Mentionnant que l'envoi de servlet async à servlet normale est possible, mais engagera la répondre. Je crois qu'une page html statique appartient à cette catégorie ...
Si vous avez des idées de comment une inclusion élégante peut être faite sans affecter la capacité d'envoyer encore des réponses en streaming au client, s'il vous plaît faites le moi savoir.
Merci
Merci pour la réponse. J'essaye d'employer exclusivement l'API de Servlet 3.0 pour accomplir la poussée de serveur. Donc, je peux envoyer seulement des réponses asynchrones. Ce serait un appel à la servlet et la servlet retournerait plusieurs réponses (ceci étant réalisé en ne validant pas la réponse, juste en la vidant). – fmoga
Je n'ai pas encore joué avec l'API asynchrone. Mais il y a https://atmosphere.dev.java.net/ implémentation de la comète! peut-être que ça vaut le coup d'oeil – Redlab