2012-03-20 5 views
0

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

  1. 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

  2. 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?

Répondre

1

supprimer:

<!-- Portability Filter, needed only to run on non Jetty or non Servlet-3.0 containers --> 
<filter> 
    <filter-name>continuation</filter-name> 
    <filter-class>org.eclipse.jetty.continuation.ContinuationFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>continuation</filter-name> 
    <url-pattern>/cometd/*</url-pattern> 
</filter-mapping> 

de web.xml

0

J'ai la même configuration et le même problème, même si je retire le filtre de continuation de web.xml.

J'ai trouvé un thread sur le groupe cometd-users se plaignant du problème de client multiple sur Tomcat 7 et la cause semble être un bug de Tomcat autour de Content-Type qui n'est pas "application/json". Cependant, j'ai inspecté les paquets et sur JBossAS6 le type de contenu est correctement défini sur les réponses du serveur.

MISE À JOUR

J'ai donner un essai en utilisant la jetée 7 et le problème a disparu.Le problème "multi-clients" affecte Tomcat ainsi que JBoss6 AS