当前位置: 首页 > 知识库问答 >
问题:

使用Eclipse和maven调用异步java servlet时出错

何德寿
2023-03-14

我使用Eclipse IDE来处理servlet。我创建了一个maven项目来使用异步Servlet3.0,并为其添加了适当的依赖关系。代码request.isasyncsupported()返回true。现在,当我调用servlet时,它会给出以下错误

warn:oejs.servletHandler://testplugin/jsonServlet java.lang.IllegalStateException:dependated,初始地址为org.eclipse.jetty.server.request.getAsyncContext(request.java:325),地址为com.ajitpals.search.grid.fs.jsonServlet.doget(jsonServlet.java:42),地址为javax.servlet.http.httpservlet.service(httpservlet.java:734),地址为.servlet.servlethandler.doHandle(servlethandler.java:486),在org.eclipse.jetty.server.handler.scopedhandler.handle(scopedhandler.java:119),在org.eclipse.jetty.security.security.security.handler.handle(securityhandler.jandle(securityhandler.java:524),在org.eclipse.jetty.session.sessionhandler.java:233),在在org.eclipse.jetty.server.session.sessionHandler.doscope(SessionHandler.java:192)在org.eclipse.jetty.server.handler.contextHandler.doscope(contextHandler.java:999)在org.eclipse.jetty.server.scopedHandler.handler(scopedHandler.java:117)在org.eclipse.jetty.handler.handler.handler(scopedHandler.java:117)在headerComplet(AbstractHttpConnection.890)在org.eclipse.jetty.server.AbstractHttpConnection$requesthandler.headerComplet(AbstractHttpConnection.java:944)在org.eclipse.jetty.http.httpparser.parsenext(httpparser.java:634)在org.eclipse.jetty.http.httpparser.parseAvailable(httpparser.java:230)在elendpoint.handle(SelectChannelendpoint.java:609)位于org.eclipse.jetty.io.nio.selectChannelendpoint$1(selectChannelEndpoint.java:45)在org.eclipse.jetty.util.thread.queuedThreadPool.runjob(queuedThreadPool.java:599)在org.eclipse.jetty.util.thread.queuedThreadPool.java:3.run(queuedThreadPool.java:534)在java.lang.thread.run(来源未知)。

我在maven项目中添加了以下依赖项。

 <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1-b08</version>
</dependency>

<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-server</artifactId>
    <version>9.0.2.v20130417</version>
</dependency>

servlet代码是

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    if(request.isAsyncSupported()){

    final AsyncContext asynCtx = request.getAsyncContext();

    //Set the timeout
    asynCtx.setTimeout(35000);

    //Add the listeners.
    asynCtx.addListener(new AsyncListener() {

        public void onTimeout(AsyncEvent arg0) throws IOException {
            System.out.println("timeout");              
        }

        public void onStartAsync(AsyncEvent arg0) throws IOException {
            System.out.println("on start");             
        }

        public void onError(AsyncEvent arg0) throws IOException {
            System.err.println("on error");             
        }

        public void onComplete(AsyncEvent arg0) throws IOException {
            System.out.println("On complete");              
        }
    });

    //start the new thread.
    asynCtx.start(new Runnable() {

        public void run() {
            try{
                asynCtx.getResponse().getWriter().write(MessageFormat.format("<h1>Process task id : [{0}] and Name [{1}]</h1>", 
                        Thread.currentThread().getId()));
            }catch(Exception ex){
                System.err.println("async error " + ex.getMessage());
            }
        }
    });
    }
}

有人面临类似的问题吗?我们如何解决他们。

PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required Caused by:org.apache.jasper.JasperException:PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required

共有1个答案

马梓
2023-03-14

这是代码错误,如果我们试图在request.startAsync()之前获取getAsyncrequest()将生成错误。

 类似资料:
  • 问题内容: 我对Selenium和JavaScript回调函数还很陌生,但有一个大问题我无法解决。我需要使用JavaScript的指定变量。如果我使用GoogleChrome打开页面并使用控制台输入我的JavaScript代码,则可以使用类似以下内容的变量: 如果我逐步输入此行,则很容易获得正确的值myId。但是,当然,如果我尽可能快地执行这三行,我将获得null作为返回值,因为当我返回myId时

  • 我正在使用m2eclipse。 我在pom中配置了jetty maven插件。正确使用xml。 当我试图通过CMD执行时,它工作得很好。没有错 而当我试图通过日蚀执行时, 我缺少一些Jetty-Eclipse配置。有人能对此提出建议吗? 如果你发现任何错误, MAVEN_OPTS="-XX: MaxPermsize=256M-Xmx512M-Xdebug-Xrunjdwp:传输=dt_socket

  • 我正在使用Eclipse Juno V4.2R2,一个Eclipse内部的GlassFish 3.1.2(之前在3.1.2.2中也有同样的问题)和Apache CXF 2.7.1,试图通过JAX-RS实现RESTful web服务。当GlassFish服务器启动并且应用程序部署成功时,由于我重新启动了IDE,应用程序无法再部署了。当Eclipse试图在GlassFish上发布应用程序时,我不断得到

  • 本文向大家介绍JavaScript 异步调用,包括了JavaScript 异步调用的使用技巧和注意事项,需要的朋友参考一下 问题 可修改下面的 aa() 函数,目的是在一抄后用 console.log() 输出 want-value 但是,有额外要求: aa() 函数可以随意修改,但是不能有 console.log() 执行 console.log() 语句里不能有 setTimeout 包裹 解

  • Provider端异步执行将阻塞的业务从Dubbo内部线程池切换到业务自定义线程,避免Dubbo线程池的过度占用,有助于避免不同服务间的互相影响。异步执行无益于节省资源或提升RPC响应性能,因为如果业务执行需要阻塞,则始终还是要有线程来负责执行。 注意:Provider端异步执行和Consumer端异步调用是相互独立的,你可以任意正交组合两端配置 Consumer同步 - Provider同步 C

  • 从v2.7.0开始,Dubbo的所有异步编程接口开始以CompletableFuture为基础 基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小。 使用CompletableFuture签名的接口 需要服务提供者事先定义CompletableFuture签名的服务,具体参见服务端异步执行接口定义: public interface Asyn