[jboss-jira] [JBoss JIRA] (WFLY-4599) AsyncListener.onComplete() not called if AsyncContext.dispatch() is called

Prashant Deva (JIRA) issues at jboss.org
Wed May 6 13:22:46 EDT 2015


     [ https://issues.jboss.org/browse/WFLY-4599?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Prashant Deva updated WFLY-4599:
--------------------------------
    Description: 
Consider this code:

{code}
protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
{     
        final AsyncContext asyncContext = req.startAsync();
        asyncContext.addListener(new AsyncListener()
        {
            @Override
            public void onComplete(AsyncEvent event) throws IOException
            {
                System.out.println("complete");
            }

            @Override
            public void onTimeout(AsyncEvent event) throws IOException
            {
                System.out.println("timeout");

            }

            @Override
            public void onError(AsyncEvent event) throws IOException
            {
                System.out.println("err");

            }

            @Override
            public void onStartAsync(AsyncEvent event) throws IOException
            {
                System.out.println("start");
            }
        });

        new Thread(new Runnable()
        {
            @Override
            public void run()
            {
                try
                {
                    Thread.sleep(2000);
                    asyncContext.dispatch("/path2");
                } catch (InterruptedException e)
                {
                    e.printStackTrace();
                }
            }
        }).start();

    }
{code}



When used in Wildfly 8.2.0.final {{complete}} will never be printed since {{onComplete()}} is not called by Wildfly when {{asyncContext.dispatch()}} is used even after {{path2}} has finished executing.

On all other versions of wildfly, and other app servers like tomcat and jetty, {{complete}} will be printed.

  was:
Consider this code:

{code}
protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
{     
        final AsyncContext asyncContext = req.startAsync();
        asyncContext.addListener(new AsyncListener()
        {
            @Override
            public void onComplete(AsyncEvent event) throws IOException
            {
                System.out.println("complete");
            }

            @Override
            public void onTimeout(AsyncEvent event) throws IOException
            {
                System.out.println("timeout");

            }

            @Override
            public void onError(AsyncEvent event) throws IOException
            {
                System.out.println("err");

            }

            @Override
            public void onStartAsync(AsyncEvent event) throws IOException
            {
                System.out.println("start");
            }
        });

        new Thread(new Runnable()
        {
            @Override
            public void run()
            {
                try
                {
                    asyncContext.dispatch("/path2");
                } catch (InterruptedException e)
                {
                    e.printStackTrace();
                }
            }
        }).start();

    }
{code}



When used in Wildfly 8.2.0.final {{complete}} will never be printed since {{onComplete()}} is not called by Wildfly when {{asyncContext.dispatch()}} is used even after {{path2}} has finished executing.

On all other versions of wildfly, and other app servers like tomcat and jetty, {{complete}} will be printed.



> AsyncListener.onComplete() not called if AsyncContext.dispatch() is called
> --------------------------------------------------------------------------
>
>                 Key: WFLY-4599
>                 URL: https://issues.jboss.org/browse/WFLY-4599
>             Project: WildFly
>          Issue Type: Bug
>          Components: Web (JBoss Web)
>    Affects Versions: 8.2.0.Final
>            Reporter: Prashant Deva
>            Assignee: Remy Maucherat
>
> Consider this code:
> {code}
> protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
> {     
>         final AsyncContext asyncContext = req.startAsync();
>         asyncContext.addListener(new AsyncListener()
>         {
>             @Override
>             public void onComplete(AsyncEvent event) throws IOException
>             {
>                 System.out.println("complete");
>             }
>             @Override
>             public void onTimeout(AsyncEvent event) throws IOException
>             {
>                 System.out.println("timeout");
>             }
>             @Override
>             public void onError(AsyncEvent event) throws IOException
>             {
>                 System.out.println("err");
>             }
>             @Override
>             public void onStartAsync(AsyncEvent event) throws IOException
>             {
>                 System.out.println("start");
>             }
>         });
>         new Thread(new Runnable()
>         {
>             @Override
>             public void run()
>             {
>                 try
>                 {
>                     Thread.sleep(2000);
>                     asyncContext.dispatch("/path2");
>                 } catch (InterruptedException e)
>                 {
>                     e.printStackTrace();
>                 }
>             }
>         }).start();
>     }
> {code}
> When used in Wildfly 8.2.0.final {{complete}} will never be printed since {{onComplete()}} is not called by Wildfly when {{asyncContext.dispatch()}} is used even after {{path2}} has finished executing.
> On all other versions of wildfly, and other app servers like tomcat and jetty, {{complete}} will be printed.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


More information about the jboss-jira mailing list