We generally do not like class names in our subsystems.
If you look in the security subsystem, it also has the need for class names, however it calls these 'code'. See security.xml (which gets inserted into standalone.xml once built) as an example (login-module, policy-module).
The processing code then ends up in SecurityDomainAdd.extractCode() which substitutes short names with the full class names for 'known' stuff that is shipped as part of the security subsystem. If not known it can fall back to the full class name, in case users want to specify their own implementations.