The container will scan for the annotations during the deployment context, it will find the annotated web servlet, which it does in the current scheme, but it would also possibly find an 'enable' attribute on that WebServlet annotation, e.g.:
@WebServlet(asyncSupported = false, name = "HelloServlet", urlPatterns =
, enabled = false)
It would deploy the servlet in a disabled state the same way the container would have done had this been specified in the web.xml.
Then some time later external code would enable the web servlet (perhaps via a ReST endpoint the web app provides or a MXBean). The value of the enabled annotation would remain the same through out this process so there is no need to monitor for changing annotations. However, it does mean the container would need to support programmatically enabling/disabling a servlet after deployment. I haven't looked at the existing code path that takes care of enable/disable of a servlet on deployment to know what is involved there.