我在我的网络应用程序中添加了一个过滤器(它已经支持异步操作),并忘记在过滤器上插入正确的注释以保留异步支持。容易解决的问题。我将以下注释放在过滤器类中,最终看起来像这样:
@WebFilter(asyncSupported=true)
public class MainFilter implements Filter
{
...
}
但是,重新部署后,异步操作仍然不受支持,给我这个错误:
请求在不支持异步操作的过滤器或 servlet 范围内
我能够通过删除注释并将其等效项放在 web.xml 中来纠正问题:
<filter> <filter-name>MainFilter</filter-name> <filter-class>com.MyWebApp.Filters.MainFilter</filter-class> <async-supported>true</async-supported> </filter>
我感到困惑的是容器似乎尊重 servlet 文件中的 asyncSupported 注释,但不用于过滤器。是否有特定原因,或者这是 GlassFish 3.0 错误?