Я обнаружил, что org.apache.catalina.ASYNC_SUPPORTED=true
нужен только тогда, когда вы переходите от одного обычного сервлета / jsp (внутри) к асинхронному сервлету!Пример: в мой index.jsp я вставляю <jsp:forward page="/path/AsyncServlet" />
Я обещаю, что AsyncServlet отлично работает как на Tomcat7, так и на Glassfish3, когда я запускаю его прямо из браузера!Однако, когда я запускаю его по index.jsp: Tomcat7 сообщает 500 для «Не поддерживается» Glassfish3 сообщает 500 для «Запрос входит в область действия фильтра или сервлета, который не поддерживает асинхронные операции» Если я встраиваю <% request.setAttribute("org.apache.catalina.ASYNC_SUPPORTED", true); %>
до <jsp:forward>
в index.jsp Tomcat7 работает нормально, но Glassfish3 все еще ПЛОХО!Таким образом, я нашел решение для Tomcat7 и Glassfish3 (без SYNC_SUPPORTED!): Просто ИСПОЛЬЗУЙТЕ ТОЧНО прикрепить в web.xml следующее:
<servlet>
<servlet-name>indexPage</servlet-name>
<jsp-file>/index.jsp</jsp-file>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>indexPage</servlet-name>
<url-pattern>/index.jsp</url-pattern>
</servlet-mapping>
Вывод (для меня): Вы НЕ МОЖЕТЕ пересылать с обычного сервлета /JSP / фильтр для асинхронного!Поскольку функция асинхронного запроса ДОЛЖНА быть установлена заранее!Таким образом, общее решение для сервлета / jsp / фильтра, который необходимо перенаправить на асинхронный сервлет: Используйте <servlet>/<async-supported>true
или @WebServlet(asyncSupported = true)
для предварительно обработанного сервлета;Используйте <servlet>/<async-supported>true
для предварительно обработанного jsp. Используйте <filter>/<async-supported>true
или @WebFilter(asyncSupported = true)
для предварительно обработанного фильтра;Надеюсь, это немного поможет!