Je prévois d'utiliser la bibliothèque Cometd dans mon application qui fonctionne sur JBoss AS 6. J'ai donc téléchargé cometd 2.4.0 et essayé de déployer exemple war (de cometd-demo/target) à mon AS. Je savais que cela n'a pas été possible sans modifications, donc je l'ai fait les changements dans web.xml:CometD démo sur JBoss 6
Changé Servlet 3.0 dans la balise web-app (il est à l'origine 2,5). Étiquette complète utilisée de CometD faq answer. Filtre de continuation non commenté qui était déjà dans web.xml, basé sur this description
Basé sur faq answer, ajouté tag async-pris en charge. Cependant, cela provoque des problèmes: si je ne le décommente pas, web.xml ne peut pas être analysé. J'ai découvert que cela est dû à l'ordre des balises en XML, donc déplacé async-pris en charge tag dans l'ordre, juste après charge-sur-démarrage tag. Cependant, Jboss jette encore des exceptions:
erreur [org.apache.catalina.core.ContainerBase [jboss.web] [localhost] [/ cometd-demo-2.4.0].... [cometd]] Servlet.service() pour cometd servlet exception jeté: java.lang.IllegalStateException: Le servlet ou les filtres qui sont utilisés par cette demande ne prend pas en charge le fonctionnement async
erreur [org.apache .catalina.core.ContainerBase. [jboss.web]. [localhost]. [/ cometd-demo-2.4.0]. [cometd]] Ser vlet.service() pour cometd servlet a jeté exception: java.lang.ClassNotFoundException: org.eclipse.jetty.server.AbstractHttpConnection de BaseClassLoader @ 12a54b
fichier web.xml complet que je l'utilise est here.
Exemple ne fonctionne pas mon Jboss malgré toutes les erreurs signalées, mais en regardant firebug, je peux voir qu'il fait un pool rapide au lieu de long pool. Il semble que le serveur pense que le navigateur a plusieurs connexions, ce qui est le cas (voir ci-dessous JSON):
[{"id":"137","successful":true,"advice":{"interval":2000,"reconnect":"retry","multiple-clients":true,"timeout":20000},"channel":"/meta/connect"}]
Quelqu'un at-il réussi à faire des exemples travailler avec JBoss as6 et comment? Ce que j'ai mal fait ici?