[英]Error in invoking asynchronous java servlet using Eclipse & maven
I'm using Eclipse IDE to work on servlet. 我正在使用Eclipse IDE在servlet上工作。 I have created a maven project to work with asynchronous servlet 3.0 and added proper dependency to it.
我已经创建了一个与异步Servlet 3.0一起使用的maven项目,并为其添加了适当的依赖项。 The code
request.isAsyncSupported()
return true. 代码
request.isAsyncSupported()
返回true。 Now when i'm calling the servlet it give this error 现在,当我调用servlet时,出现此错误
WARN:oejs.ServletHandler:/testplugin/JsonServlet java.lang.IllegalStateException: DISPATCHED,initial at org.eclipse.jetty.server.Request.getAsyncContext(Request.java:325) at com.ajitpals.search.grid.fs.JsonServlet.doGet(JsonServlet.java:42) at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:594) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:486) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:413) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandl
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) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) at org.eclipse.jetty.server.Server.handle(Server.java:351) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454) at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:634) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:609) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run
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) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534) at java.lang.Thread.run(Unknown Source).
(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(未知来源)。
I have added following dependencies in maven project. 我在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>
and the servlet code is 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());
}
}
});
}
}
Does anyone faced the similar issue and how can we resolve them. 是否有人面临类似问题,我们如何解决。
EDIT: 编辑:
sometime servlet also giving following error 有时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
Thanks 谢谢
如果我们尝试在request.startAsync()
生成错误之前获取getAsyncRequest()
,这是代码错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.