Я планирую использовать библиотеку Cometd в своем приложении, которое работает на JBoss AS 6. Поэтому я скачал cometd 2.4.0 и попытался развернуть пример war (из cometd-demo / target) в мою AS.Я знал, что это невозможно без изменений, поэтому я сделал изменения в файле web.xml:
Изменен сервлет 3.0 в теге веб-приложения (изначально он был 2.5).Использован полный тег из CometD faq answer .Также не прокомментированный фильтр продолжения, который уже был в web.xml, основан на этом описании
Основан на faq answer , добавлен тег с поддержкой асинхронизации,Однако это вызывает проблемы: если я просто раскомментирую это, web.xml не может быть проанализирован.Я обнаружил, что это связано с порядком тегов в XML, поэтому переместил тег с поддержкой асинхронизации вниз, сразу после тега load-on-startup .Однако Jboss по-прежнему генерирует исключения:
ОШИБКА [org.apache.catalina.core.ContainerBase. [Jboss.web]. [Localhost]. [/ Cometd-demo-2.4.0]. [Cometd]] Servlet.service () для сервлета cometd выбросило исключение: java.lang.IllegalStateException: сервлет или фильтры, используемые этим запросом, не поддерживают асинхронную операцию
ERROR [org.apache.catalina.core.ContainerBase. [jboss.web]. [localhost]. [/ cometd-demo-2.4.0]. [cometd]] Servlet.service () для сервлетов Кометт бросил исключение: java.lang.ClassNotFoundException: org.eclipse.jetty.server.AbstractHttpConnection из BaseClassLoader @ 12a54b
Полный файл web.xml, который я использую, равен здесь .
Пример не запускает мой Jboss, несмотря на все сообщения об ошибках, но, наблюдая за firebug, я вижу, что он выполняет быстрый пул вместо длинного пула.Похоже, что сервер считает, что в браузере открыто несколько соединений, а это не так (см. JSON ниже):
[{"id":"137","successful":true,"advice":{"interval":2000,"reconnect":"retry","multiple-clients":true,"timeout":20000},"channel":"/meta/connect"}]
Кому-нибудь удалось заставить примеры работать с JBoss as6 и как?Что я тут не так сделал?