Я добавил фильтр в свое веб-приложение (которое уже поддерживает асинхронные операции) и забыл вставить правильную аннотацию в фильтр, чтобы сохранить асинхронную поддержку. Легко решить проблему. Я поместил следующую аннотацию в класс фильтра, которая в итоге выглядит следующим образом:
@WebFilter(asyncSupported=true)
public class MainFilter implements Filter
{
...
}
Однако после повторного развертывания асинхронные операции остались без поддержки, что выдает мне эту ошибку:
Запрос входит в объем фильтра или сервлета, который не
поддержка асинхронных операций
Мне удалось устранить проблему, удалив аннотацию и поместив ее эквивалент в web.xml:
<filter>
<filter-name>MainFilter</filter-name>
<filter-class>com.MyWebApp.Filters.MainFilter</filter-class>
<async-supported>true</async-supported>
</filter>
Что меня смущает, так это то, что контейнер, похоже, учитывает аннотацию asyncSupported в файлах сервлета, но не для фильтров. Есть ли конкретная причина, почему это ошибка GlassFish 3.0?