servlet3.0异步处理
生活随笔
收集整理的這篇文章主要介紹了
servlet3.0异步处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Servlet3是Tomcat7出現的新特性,所以需要先安裝tomcat7
微信企業號使用回調模式時:
假如企業無法保證在五秒內處理并回復,可以直接回復空串,企業號不會對此作任何處理,并且不會發起重試。這種情況下,可以使用發消息接口進行異步回復。
在web.xml中的servlet節點配置:
<async-supported>true</async-supported>代碼
AsyncServlet.java
package testAsyncServlet;import java.io.IOException; import java.io.PrintWriter; import java.util.Date;import javax.servlet.AsyncContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class AsyncServlet extends HttpServlet{private static final long serialVersionUID = 1L;@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();out.println("下訂單開始: " + new Date() + "<br/>");out.flush();AsyncContext ctx = request.startAsync();//異步去執行開通訂單new Thread(new CheckOrder(ctx)).start();out.println("訂購成功: " + new Date()+ "<br/>");out.flush();} }
CheckOrder.java package testAsyncServlet;import java.io.PrintWriter; import java.util.Date;import javax.servlet.AsyncContext;public class CheckOrder implements Runnable {private AsyncContext ctx = null;public CheckOrder(AsyncContext ctx) {this.ctx = ctx;}public void run() {try {// 模擬開通等待Thread.sleep(10000);PrintWriter out = ctx.getResponse().getWriter();out.println("已經有權限了,let's go! : " + new Date());out.flush();ctx.complete();} catch (Exception e) {e.printStackTrace();}} }
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>testAsyncServlet</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><servlet><servlet-name>asyncServle</servlet-name><servlet-class>testAsyncServlet.AsyncServlet</servlet-class><async-supported>true</async-supported></servlet><servlet-mapping><servlet-name>asyncServle</servlet-name><url-pattern>/asyncServlet</url-pattern></servlet-mapping></web-app>
總結
以上是生活随笔為你收集整理的servlet3.0异步处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux服务器虚拟内存设置,修改Lin
- 下一篇: hive与依赖环境的交互