I'm currently trying to create a custom ajax tag that is based on f:ajax but supports an additional attribute. For this, I wanted to create a new tag handler that extends AjaxHandler.
What I found out is, that it is VERY hard to do so. The creation of the AjaxBehavior is buried inside applyAttachedObject(). The only reasonable way I found to set an additional value expression on the created AjaxBehavior is to pass in a wrapped FacesContext/Application from the derived class.
It would be so much easier, if, for instance, creating the behavior would be done in a protected method. Then the behavior would be accessible in derived classes.