java - servlet api 3.0 jar 中缺少异步方法?

标签 java asynchronous servlet-3.0

我正在开发一个必须异步处理请求的 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>

有趣的是,import 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()

我错过了什么?

最佳答案

我假设您以某种方式“设法”引用了位于 javaee-web-api 之前的类路径中的较旧的 servlet-api 库(可能是传递性的) .这意味着现有类是从旧的 servlet-api 获取的,而旧规范中不存在的类是从 javaee-web-api 加载的。

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

关于java - servlet api 3.0 jar 中缺少异步方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16041773/

相关文章:

javascript - 使用带有 Tab 内容移动的 Jquery 制作动画

Javascript执行代码顺序

javascript - NodeJS : ASync/callback problems

java - 为什么没有 asyncContext.cancel()

java - 创建一个setter来提供java List实现类

java - Android SDK Eclipse AndroidManifest.xml 未创建

java - "[http-bio-8080-exec-494] [ERROR]"中 exec 之后的数字是什么意思?

javascript - 在回调中调用 node.js 中的辅助函数?

java - ThreadLocals 在异步支持的过滤器中启动是线程安全的吗

java - 将过滤器映射到 Tomcat7 中 webapp 的上下文根