[英]Error in invoking asynchronous java servlet using Eclipse & maven
我正在使用Eclipse IDE在servlet上工作。 我已經創建了一個與異步Servlet 3.0一起使用的maven項目,並為其添加了適當的依賴項。 代碼request.isAsyncSupported()
返回true。 現在,當我調用servlet時,出現此錯誤
WARN:oejs.ServletHandler:/ testplugin / JsonServlet java.lang.IllegalStateException:DISPATCHED,初始於org.eclipse.jetty.server.Request.getAsyncContext(Request.java:325)於com.ajitpals.search.grid.fs.JsonServlet org.eclipse.jetty的javax.servlet.http.HttpServlet.service(HttpServlet.java:734)的.doGet(JsonServlet.java:42)(javax.servlet.http.HttpServlet.service(HttpServlet.java:847))。 org.eclipse.jetty.servlet.Servlet.ServletHandler.doHandle(ServletHandler.java:486)上的servlet.ServletHolder.handle(ServletHolder.java:594)org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java: 119),位於org.eclipse.jetty.server.session的org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524),位於org.eclipse.jetty.server的org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233) org.eclipse.jetty.servlet.ServletHandler.ServletHandler.doScope(ServletHandler.java:413)的.handler.ContextHandler.doHandle(ContextHandler.java:1065)org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandl er.java:192)org.org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999)org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)org org.eclipse.jetty.server.Server.handle(Server.java:351)上的.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)org.eclipse.jetty.server.AbstractHttpConnection.handleRequest (org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890)處(AbstractHttpConnection.java:454)org.org.eclipse.jetty.server.AbstractHttpConnection $ RequestHandler.headerComplete(AbstractHttpConnection.java:944)處org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230)上的eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:634)在org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection。 org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(java:77).org.eclipse.jetty.io.nio.SelectChannelEndPoint $ 1.run (SelectChannelEndPoint.java:45)在org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599)在org.eclipse.jetty.util.thread.QueuedThreadPool $ 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());
}
}
});
}
}
是否有人面臨類似問題,我們如何解決。
編輯:
有時servlet也給出以下錯誤
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
謝謝
如果我們嘗試在request.startAsync()
生成錯誤之前獲取getAsyncRequest()
,這是代碼錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.