You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2023/04/12 10:49:00 UTC

[jira] [Work logged] (AMQ-9243) Remove deprecated jetty-continuation module from activemq-web

     [ https://issues.apache.org/jira/browse/AMQ-9243?focusedWorklogId=856400&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-856400 ]

ASF GitHub Bot logged work on AMQ-9243:
---------------------------------------

                Author: ASF GitHub Bot
            Created on: 12/Apr/23 10:48
            Start Date: 12/Apr/23 10:48
    Worklog Time Spent: 10m 
      Work Description: cshannon opened a new pull request, #998:
URL: https://github.com/apache/activemq/pull/998

   This commit removes the dependency on jetty-continuation and updates the MessageServlet and AjaxListener servlets to use the Servlet Async api directly for async requests through a new Async holder object that is used to track/manage the request.
   
   As I mentioned in the Jira, this is also fine to backport to 5.18.x as there's no public facing API changes, it's just an internal detail. Jetty was already using the Async api and we are doing the same, just more directly now.
   
   The tests in the activemq-web-demo can be run to test out and demonstrate the new changes. Running the [AjaxTest](https://github.com/cshannon/activemq/blob/6a979685c6a7d5cb6a091cb85e42bd03093adfa4/activemq-web-demo/src/test/java/org/apache/activemq/web/AjaxTest.java) in that project shows the AjaxListener still works with async requests and I also added a couple more tests to [RestTest](https://github.com/cshannon/activemq/blob/6a979685c6a7d5cb6a091cb85e42bd03093adfa4/activemq-web-demo/src/test/java/org/apache/activemq/web/RestTest.java) in this PR to demonstrate that the Async request/resume is working with the changes.




Issue Time Tracking
-------------------

            Worklog Id:     (was: 856400)
    Remaining Estimate: 0h
            Time Spent: 10m

> Remove deprecated jetty-continuation module from activemq-web
> -------------------------------------------------------------
>
>                 Key: AMQ-9243
>                 URL: https://issues.apache.org/jira/browse/AMQ-9243
>             Project: ActiveMQ
>          Issue Type: Improvement
>          Components: Web Console
>    Affects Versions: 5.18.1
>            Reporter: Christopher L. Shannon
>            Assignee: Christopher L. Shannon
>            Priority: Major
>             Fix For: 5.19.0, 5.18.1
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> As part of the upgrade to Jakarta we also need to update to a new version of Jetty. Jetty deprecated the jetty-continuation module in 9.4.x and that module has been removed in future versions so we can't use it anymore. The Async servlet API is the replacement and has been around for a long time. In fact the Jetty continuation [implementation|https://github.com/eclipse/jetty.project/blob/b45c405e4544384de066f814ed42ae3dceacdd49/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/Servlet3Continuation.java] by default just wraps the Async servlet API if it exists for handling the Async requests.
> We should go ahead and remove the jetty-cotinuation module and we can back port this to 5.18.x as well as it's an internal implementation detail for the MessageServlet and AjaxServlet so it should be fine to do. We will still use the Async servlet api just like Jetty continuation did so nothing will change from the REST api/servlet API the users use.
> The plan is just to do the same thing that Jetty was doing and that is to use the native Async API and to track the request across the request context using a new wrapper/holder object like they did to make tracking state and handling things simple.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)