我正在开发一个servlet 3.0应用程序,它必须异步处理请求。

编译失败了

cannot find symbol
symbol  : method startAsync(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
location: interface javax.servlet.http.HttpServletRequest

信息。

我的pom.xml中有以下依赖项:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>6.0</version>
</dependency>

有趣的是, 导入javax.servlet.AsyncContext成功。 但是当我列出javax.servlet.ServletRequest的方法时,3.0 API中没有处理异步请求的方法。

public abstract java.lang.String javax.servlet.ServletRequest.getScheme()
public abstract java.lang.String javax.servlet.ServletRequest.getProtocol()
public abstract javax.servlet.ServletInputStream javax.servlet.ServletRequest.getInputStream() throws java.io.IOException
public abstract int javax.servlet.ServletRequest.getContentLength()
public abstract java.lang.Object javax.servlet.ServletRequest.getAttribute(java.lang.String)
public abstract java.lang.String javax.servlet.ServletRequest.getContentType()
public abstract java.util.Locale javax.servlet.ServletRequest.getLocale()
public abstract java.util.Enumeration javax.servlet.ServletRequest.getAttributeNames()
public abstract java.lang.String javax.servlet.ServletRequest.getCharacterEncoding()
public abstract void javax.servlet.ServletRequest.setCharacterEncoding(java.lang.String) throws java.io.UnsupportedEncodingException
public abstract java.lang.String javax.servlet.ServletRequest.getParameter(java.lang.String)
public abstract java.util.Enumeration javax.servlet.ServletRequest.getParameterNames()
public abstract java.lang.String[] javax.servlet.ServletRequest.getParameterValues(java.lang.String)
public abstract java.util.Map javax.servlet.ServletRequest.getParameterMap()
public abstract java.lang.String javax.servlet.ServletRequest.getServerName()
public abstract int javax.servlet.ServletRequest.getServerPort()
public abstract java.io.BufferedReader javax.servlet.ServletRequest.getReader() throws java.io.IOException
public abstract java.lang.String javax.servlet.ServletRequest.getRemoteAddr()
public abstract java.lang.String javax.servlet.ServletRequest.getRemoteHost()
public abstract void javax.servlet.ServletRequest.setAttribute(java.lang.String,java.lang.Object)
public abstract void javax.servlet.ServletRequest.removeAttribute(java.lang.String)
public abstract java.util.Enumeration javax.servlet.ServletRequest.getLocales()
public abstract boolean javax.servlet.ServletRequest.isSecure()
public abstract javax.servlet.RequestDispatcher javax.servlet.ServletRequest.getRequestDispatcher(java.lang.String)
public abstract java.lang.String javax.servlet.ServletRequest.getRealPath(java.lang.String)
public abstract int javax.servlet.ServletRequest.getRemotePort()
public abstract java.lang.String javax.servlet.ServletRequest.getLocalName()
public abstract java.lang.String javax.servlet.ServletRequest.getLocalAddr()
public abstract int javax.servlet.ServletRequest.getLocalPort()

我错过了什么?

===============>>#1 票数:5 已采纳

我假设你以某种方式“管理”引用了一个旧的servlet-api库(可能是传递的),它位于javaee-web-api之前的类路径中。 这意味着现有的类是从旧的servlet-api中获取的,而旧版本中不存在的类是从javaee-web-api加载的。

您可以运行mvn dependency:tree来查看引用过时库的位置,然后将其排除。

  ask by Vladimir Dzhuvinov translate from so

未解决问题?本站智能推荐:

1回复

Servlet 3.0异步支持的缺点

在我的应用程序中,我有一个自行开发的框架,它将所有请求映射到一个中央ControllerServlet(没什么特别的,它具有几乎任何框架的基本功能)。 我必须实现Publisher-Subscriber消息交换功能,我决定使用Servlet 3.0的异步方法。 当前的Controller
2回复

Servlet 3.0:无法发送异步响应?

我在为用户建立AsyncContext并使用他们向他们推送通知时遇到麻烦。 在页面加载时,我有一些jQuery代码发送请求: 在“ TestServlet”中,我在doPost方法中有以下代码: 但是,根据Opera Dragonfly(一种类似Firebug的调试工具)的说法
3回复

如何避免请求设置ASYNC_SUPPORTED = true以在Tomcat 7上启用异步servlet 3.0处理?

在报告此问题后 ,找到了一个解决方案: 这看起来有点奇怪,并不是真正的“便携式”代码(它不会受到伤害,但......)。 它似乎特定于Tomcat 7.我使用的是NetBeans 7.0.1提供的Tomcat 7.0.14。 我找不到文档,表明有必要在servlet 3.0中使用
1回复

嵌入式jetty中的异步servlet似乎在高负载时写入错误的响应

当我发送手动请求时,下面给出的代码工作正常。 如果我用siege生成请求( siege -c 500 -r 100 'http://localhost:8080/?name=Chandru&age=560' ),我开始在jetty的日志中看到这些消息: 我在Java 1.7.0
1回复

在异步servlet中用新请求替换旧请求

我编写了一个异步Servlet,将缓存对象中的更改提供给向Servlet发送请求的所有客户端。 通过请求,客户端可以通过包含不同的参数来获取缓存的子部分。 我只是将请求存储在ArrayList中,并在发生更改时将它们遍历以将响应发送回客户端。 一切工作正常,除了现在我有一个要求
1回复

在WebSphere 8上调用异步servlet会导致AsyncIllegalStateException

我在调用servlet时遇到以下异常: servlet看起来像这样: 我试图使用注释将其设置为异步: 在论坛中阅读帖子后也在web.xml中: 仍然得到AsyncIllegalStateException。 你是如何在WAS8上运行异步servlet的?
2回复

如何在servlet规范3中正确检测客户端断开连接?

我已经尝试写入响应,因为没有正确的断开回调: 但这似乎没有诀窍。 当客户端断开连接时,写入和刷新缓冲区不会引发异常 。 奇怪的是,第二次尝试写入输出流时(断开连接后),写入会引发异常。 它看起来像你第一次写/刷它,一些内部状态被设置为错误,没有通知。 我试过Jetty 8
2回复

Tomcat 7异步处理失败-仅同时处理一个请求

我试图使用Servlet API 3中定义的异步处理来实现COMET聊天。该聊天无法正常工作-聊天被阻止,因此我创建了调试Servlet来仅测试异步部分。 这是我的doGet方法: 我将请求项放入队列中,并且正在运行一个线程,该线程将在指定的超时后接收这些项,并将响应发送到Asyn
1回复

Servlet 3, 真正 在web.xml与asyncSupported = false中

在我的申请中 web.xml包含 并且在主servlet class 部署后我无法识别servlet的类型,是否为Sync / Async?
1回复

在spring mvc中是否有AsyncContext的模拟?(如何在另一个线程中写入http响应)

我有关于servlet 3.0 / 3.1规范的spring支持以及我在本文中找到的大部分信息的google: 了解Callable和Spring DeferredResult 这里作者说你可以从控制器返回Callable或DefferedResult ,并说它是在春天的servlet 3