Демонстрация CometD на JBoss 6 - PullRequest
0 голосов
/ 20 марта 2012

Я планирую использовать библиотеку Cometd в своем приложении, которое работает на JBoss AS 6. Поэтому я скачал cometd 2.4.0 и попытался развернуть пример war (из cometd-demo / target) в мою AS.Я знал, что это невозможно без изменений, поэтому я сделал изменения в файле web.xml:

  1. Изменен сервлет 3.0 в теге веб-приложения (изначально он был 2.5).Использован полный тег из CometD faq answer .Также не прокомментированный фильтр продолжения, который уже был в web.xml, основан на этом описании

  2. Основан на 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 и как?Что я тут не так сделал?

Ответы [ 2 ]

1 голос
/ 20 апреля 2012

удалить

<!-- 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>

из web.xml

0 голосов
/ 19 июня 2012

У меня такая же настройка и та же проблема, даже если я удаляю фильтр продолжения из web.xml.

Я нашел тему в группе пользователей cometd, жалующуюся на проблему с несколькими клиентами на Tomcat 7 иПричиной, по-видимому, является ошибка Tomcat вокруг Content-Type, для которой не установлено значение «application / json».Однако я проверил пакеты, и на JBossAS6 тип содержимого правильно задан в ответах сервера.

ОБНОВЛЕНИЕ

Я попробовал использовать Jetty 7 ипроблема исчезла.Проблема с несколькими клиентами затрагивает Tomcat, а также JBoss6 AS

...