[ 
https://issues.apache.org/jira/browse/DUBBO-22?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16759270#comment-16759270
 ] 

Huxing Zhang commented on DUBBO-22:
-----------------------------------

This issue has been fixed.

> Asynchronous Support on Provider Side
> -------------------------------------
>
>                 Key: DUBBO-22
>                 URL: https://issues.apache.org/jira/browse/DUBBO-22
>             Project: Apache Dubbo
>          Issue Type: Improvement
>            Reporter: Jun Liu
>            Priority: Major
>              Labels: GSoC2018
>   Original Estimate: 1,008h
>  Remaining Estimate: 1,008h
>
> # Provider side: 
> Like asynchronous support from Servlet 3.0
> {code:java}
> @WebServlet(name="myServlet", urlPatterns={"/slowprocess"}, 
> asyncSupported=true)
> public class MyServlet extends HttpServlet {
>    
>     public void doGet(HttpServletRequest request, HttpServletResponse 
> response) {
>         AsyncContext aCtx = request.startAsync(request, response); 
>         ServletContext appScope = request.getServletContext();
>         
> ((Queue<AsyncContext>)appScope.getAttribute("slowWebServiceJobQueue")).add(aCtx);
>     }
> }
> @WebServletContextListener
> public class SlowWebService implements ServletContextListener {
>     public void contextInitialized(ServletContextEvent sce) {
>         Queue<AsyncContext> jobQueue = new 
> ConcurrentLinkedQueue<AsyncContext>();
>         sce.getServletContext().setAttribute("slowWebServiceJobQueue", 
> jobQueue);
>         // pool size matching Web services capacity
>         Executor executor = Executors.newFixedThreadPool(10);
>         while(true)
>         {
>             if(!jobQueue.isEmpty())
>             {
>                 final AsyncContext aCtx = jobQueue.poll();
>                 executor.execute(new Runnable(){
>                     public void run() {
>                         ServletRequest request = aCtx.getRequest();
>                         // get parameteres
>                         // invoke a Web service endpoint
>                         // set results
>                         aCtx.forward("/result.jsp");
>                     }                    
>                 });             
>             }
>         }
>     }
>     
>     public void contextDestroyed(ServletContextEvent sce) {
>     }
> }
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to