http请求异步接口实现


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.log4j.Logger;

import com.alibaba.fastjson.JSONObject;
import com.servlet.rest.RestSupport;

import cc.util.action.mynew.MyRes;
import cc.util.action.mynew.MyRestServlet;
import thread.AsyncRequestProcessor;

@RestSupport(value = { "/yz/apiRisk/*" })
public class AsyncRiskCheckRest extends MyRestServlet{

	private static final long serialVersionUID = 1L;
	private static Logger logger = Logger.getLogger(AsyncRiskCheckRest.class);
	
	@Override
	public void setUrl() {
		this.url = "/yz/apiRisk";
	}
	
	
	public void rikController(HttpServletRequest req, HttpServletResponse resp) throws IOException{
		//启动标准输出流,输出结果
		PrintWriter out = resp.getWriter();  
        JSONObject resObj = new JSONObject();
		try {
			//读取request中的请求json流
			BufferedReader streamReader = new BufferedReader(new InputStreamReader(req.getInputStream(),"UTF-8"));
			StringBuilder responseStrBuilder = new StringBuilder(); 
			String inputStr;  
            while ((inputStr = streamReader.readLine()) != null)  
                responseStrBuilder.append(inputStr);  
			
            //解析成jsonObject
            JSONObject jsonObject = JSONObject.parseObject(responseStrBuilder.toString());
        	String appNo = jsonObject.get("appNo") + "";
    		String retCode = jsonObject.get("retCode") + "";
    		String regMsg = jsonObject.get("retMsg") + "";
    		logger.info("appNo=" + appNo + ",retCode=" + retCode + ",regMsg=" + regMsg);
    		
    		//参数校验
    		if (null == appNo || "".equals(appNo)) {
    			throw new MyRes.MyException("appNo is null");
    		}
    		if (null == retCode || "".equals(retCode)) {
    			throw new MyRes.MyException("retCode is null");
    		}
    		
    		Map<String,Object> map = new HashMap<String,Object>();
    		map.put("appNo", appNo);
    		map.put("retCode", retCode);
    		map.put("retMsg", regMsg);
    		
    		//启动线程处理,当前线程返回
			AsyncRequestProcessor processor = new AsyncRequestProcessor(map);
			Thread t = new Thread(processor);
			t.start();
			
			resObj.put("appNo", appNo);
			resObj.put("retCode", "0");
		} catch (Exception e) {
			logger.info(ExceptionUtils.getStackTrace(e));
			
			resObj.put("retCode", "1");
			resObj.put("retMsg", e.getLocalizedMessage());
		}
		out.write(resObj.toString());
	}
	
	
}

猜你喜欢

转载自my.oschina.net/u/2611678/blog/1814296